Skip to content
This repository has been archived by the owner on Sep 22, 2020. It is now read-only.

Client Library & CLI #24

Open
barakmich opened this issue Nov 22, 2015 · 0 comments
Open

Client Library & CLI #24

barakmich opened this issue Nov 22, 2015 · 0 comments

Comments

@barakmich
Copy link
Contributor

Start /client and an associated /cmd/agroctl -- the design of which is a little bit clever:

Start /client as another concrete implementation of the agro.Server interface. The difference being that the inode storage, the file abstraction, and so on, are fairly simple stubs into a new set of things: RemoteINodeStorage, RemoteBlockStorage, and RemoteMetadata. These basically make HTTP calls for all their implementations, calling the internal/http endpoint as a proxy and off we go.

The cool part is then agroctl (and the meta-client calls; I would guess things like ls) can self-host. The long-future goal being that it could talk directly to etcd for metadata if it needed, or could do local caching, or can do a lot of things -- which will make the FUSE client quite easy to implement well, without needing to proxy everything. In effect, a long-running FUSE daemon could itself be another node that doesn't register as storage, but speaks the native node-to-node interface.

Meanwhile, for other scenarios, the proxy works great.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants