-
Notifications
You must be signed in to change notification settings - Fork 37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use plugins to manage nodes #62
Comments
With this change I think it might be appropriate to also take some time to address the cli itself. The interface / plugin changes require some breaking changes to the cli, mostly around Some information on how to read the usages
Arguments after a
In #61 @whyrusleeping asked me to incorporate some new commands from #60. New commands were
Attributes help shape process execution, though they are kind of a catch all to configure plugins (ex docker image). They can be specified as Plugins themselves determine what attributes they can use and how to use them. The https://gist.github.com/travisperson/de8c8ca6abd09cd74f41a04dc2a19fbe |
Agree with all of this except the breaking of If others are fine with breaking that command, then I could be persuaded. cc @Stebalien @magik6k @dignifiedquire @frrist |
Additional Note: There is a new global flag
|
On the 'init' command, i guess since we're breaking a bunch of commands already, splitting init into two commands isnt that bad. On the IPTB_ROOT structure, what does nodespecs/default/0 represent? |
|
Ah, cool. Makes sense. |
I like the new |
Since we are in the spirit of breaking stuff, I propose we rename a few more things: Interplanetary Testbed => Interplanetary Testbench The commands would then look something like:
Basically
@dignifiedquire does this make things clearer? |
@frrist That seems pretty nice, though I always prefer a 'fast path' default to get things working quickly. |
We could create another fast path as we've taken away
It would basically be an alias to
This means that |
https://asciinema.org/a/xoEoUo9QjDP3saVVXRyHYu4hN (note: I've defaulted |
Addressed in #61 |
Currently iptb isn’t very flexible, and can be cumbersome to add to and extend. There are a lot of ipfs and go-ipfs specific details to the way it handles managing nodes.
I think it would be great to make iptb a little more generic in the way that it handles the construction of nodes, such that, it can be used to manage anything that fits into an interface. This will most of the time, and be design with in mind, libp2p services.
Adding different node types (ipfs), deployments (local, docker, browser, k8s, remote), and implementations (go, js, rust) should be easy. By exposing a single node interface that works with any libp2p service (has a swarm, peerid, etc), we can use golang plugins to allow anyone to create their own node implementation (private or public) that works with iptb.
This will turn iptb into a more generic tool that can be used to help anyone building a libp2p based service that fits into our interface, helping grow the community.
It's important that we maintain feature parity. Commands may change, but specifying additional options to help configure nodes is important.
The first new additions to iptb will most likely be jsipfs, which needs to run as a daemon as well as in a browser. New kinds of deployments may require additions to the
Node
interface, but keeping theNode
interface small is important.One of the first steps towards this goal would be to move all ipfs / go-ipfs specifics outside of
util/util.go
and replace them with methods on theNode
interface.@frrist and I have done a bit of work to showcase what this might look like in #61. It's a bit stripped, but I will be bringing it back up to feature parity soon.
The text was updated successfully, but these errors were encountered: