This repository has been archived by the owner on Feb 8, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 30
Interplanetary Test Lab #191
Labels
Comments
Closed
6 tasks
@whyrusleeping This looks cool. Do you intend for this to work with both js-ipf and go-ipfs or just go? How long do you think it would take complete this? |
@SidHarder I think this could work for go-ipfs, js-ipfs, ipfs-cluster, and maybe even be able to work with other tools in the ecosystem. I don't want to sink myself into just having things for for a single usecase. But I also don't want to sink into overgeneralization hell |
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
I've been doing some thinking on a program i want to exist to make testing easier, heres the writeup so far, note that this is a work in progress.
Interplanetary Lab
An application that allows us to script and control large ipfs testnets.
What it looks like
Two parts:
The client
The client connects the the configured 'master' node on startup and will keep
trying to stay connected until it is manually shut down. Clients generate an
'id' that the master node can choose to authenticate, helping to prevent random
clients from joining the network and messing with things. (this is a soft layer
of protection, if more is needed we can figure something better out).
The client might also want to use a tool like: https://github.com/whyrusleeping/natest
to determine its NAT situation and report that to the master node
Commands (rpc)
The client can be asked via rpc to perform any of the following set of commands by the master
install
init
start
stop
exec
ipfs <cmd>
ping
fetch
ipfs cat
a specific file, output goes to /dev/null, and report statistics about the operationmkfile
clean
stat
The Master
The master node is a daemon that keeps track of clients and runs commands from the user
Commands (cli)
list
install <client> <version>
clean <client>
stat <client>
lat <client> <client>
run <client> <cmd>
auth
view
tag
running
for all clients whose daemons are onlineidle
for all clients whose daemons are offlineprof-bundle
log
Metrics
The master node can also take advantage of prometheus metrics exposed by each of the clients daemons. (harder, can come later)
Some example usages
On a client machine, should just be:
> iplab-client --master=iplab.i.ipfs.io
Starting the master node:
> iplab --daemon
Running commands on the master:
Commands should be able to also accept tag groups as client name parameters, for example:
> iplab install @blue v0.4.5-rc4
Should install the given version on all nodes with the tag 'blue'
Existing work
iptb
A program that manages a local cluster of ipfs nodes. Basically this tool, but only for a single system.
And lacking the ability to install ipfs versions
https://github.com/whyrusleeping/iptb
ipfs-update
A tool that manages installing and checking different versions of ipfs
https://github.com/ipfs/ipfs-update
The text was updated successfully, but these errors were encountered: