New Storage Backend for Armadietto: Digital Ocean Spaces

Is there any interest in a Digital Ocean storage engine for armadietto?

I’m in the middle of writing one and I was hoping to be able to reach out to some users to get some feedback from users in the wild. It passes all the existing file_tree tests and I haven’t done much in optimization (there are some recursive calls in file_tree that are fine for local IO but probably not as fine for networked). Obviously this is VERY alpha so please don’t use it as your primary storage backend!

I’ve included it in a new branch on my fork as I have an outstanding PR on the master branch.

If you are testing it out please feel free to file issues on fork itself so as not to clutter the main project!

@raucao I’m not sure what the process was for actually adding a new backend, but since there used to be a Redis one I assumed it would be ok to add it. If you’d prefer another mechanism (perhaps some kind of plugin architecture on the server for additional backends) I’m totally open to discussion/implementing!

3 Likes

Yes, definitely! Ideally, it would just be called “S3”. But if DO needs some special configs or something, then that I guess that could be added as a special version of the S3 back-end.

I just had a quick look at that. As it’s just one commit each, and the second one doesn’t seem to require any code from the first one, I think the best way to go about this would be to split up the two contributions and create a second PR for the new back-end. Pull requests are a great way to keep track of changes, and comment directly on the code.

(Tip: If you create a fresh branch from master, you can use git cherry-pick to add your second commit to the new branch, and then create a pull request from that.)

Yes, I think the original design certainly envisioned multiple back-ends. I’m not personally involved with Armadietto really, so other people are better equipped to answer this question. I talked to @silverbucket earlier today, and he said he was going to review your PR, but that he also has to get back into the armadietto code first. Other people that come to mind are @les and @thornjad.

1 Like

Hi @xangelo! Yeah, it’s been a good while since I’ve touched the armadietto code, so I wanted to refresh my understanding of codebase before I comment on your PR. It may take a little while as I have other things that I’m in the middle of at the moment, but hopefully within the next week or so. If @les or @thornjad can jump in sooner, all the better!

1 Like

But if DO needs some special configs or something, then that I guess that could be added as a special version of the S3 back-end.

I don’t believe any of the functionality I’ve used differs from S3 API compatibility but I don’t currently use AWS so I’m unable to do any testing to verify. S3 does have some additional file locking mechanisms that DO does not have, so I think the library should probably use those.

It’s also still pretty early stage so I didn’t want to ping the maintainers of armadietto just yet with it - but I suppose I can open up a draft PR. I’ve separated all the changes so they’re no longer dependencies and can do that in a few hours.

1 Like