Felix's Utility for NetworKing (FUNK)
rustup
cargo
The binaries are provided by:
- Compiling the local code,
- Compiling an older version given a git tag or a commit hash,
- (Optional) Downloading them from the internet (AWS artifacts).
The tool handles the needed assets:
- Chainspec;
- Node config;
- Private keys for the nodes;
- Initial balances.
This must be transparent for the user if possible. Some sane default are provided if the user does not want to bother, with of course the ability to change them if a further configuration is needed.
An API is provided to access the various information we want to monitor:
- Logs;
- Memory usage;
- CPU load? (not sure if that is needed or even possible)
This information is available through a stream and/or by getting the full data at once, for example to crate a graph, or to export the full logs in a file.
All of the usual runtime operations are available:
- Upgrading nodes;
- Adding deploys;
- Starting new nodes for joining the network, retarting nodes, stopping nodes;
- Accessing internal data if needed.
The various checks are to be provided by another tool, most likely casper-test. What are provided are APIs that this other tool can use to assert.
Same as above. This may be provided by another tool, using the API. Whether it is desirable or not to merge it with casper-test (for example) seems out of scope.
The tool must be easy to use for the most common scenarii: the user should not have to bother with setting things up manually. Examples include (non-exhaustive):
- Running a network using the local code is a single command.
- Running an older version of the network and upgrading the nodes one by one must not be a hassle.
Generally speaking, this tool is a library. To use this library, the following utilities are provided:
- A web API to present the operations to the outside from the node: running the network, restarting a node, upgrading a node, streaming the logs, etc.
- A CLI to run these operations;
- An UI to display this information in a nice way. It would be good to have a view to the logs, graphs of the used memory, buttons to restart/stop nodes, etc. especially for non-technical users.