Hyperion is an engine designed to launch and monitor user defined components using YAML configuration files.
Inspired by vdemo and TMuLE (see vdemo and TMuLE assessment)
Hyperion (like TMuLE) is written in Python and utilizes the tmux library for python to start components in detached sessions. For each host defined in the components a master session is created, in which each component will be started in a window. Components are managed by a main server that delegates commands to slave server instances on remote machines and forwards information to subscribed user interfaces.
Run pip install .
in the main directory to install the graph visualisation extension.
This library unlocks the graph drawing extension for the hyperion application.
It enables using the visual
mode when validating a configuration.
hyperion validate --config systems/demo.yaml [-h] [--visual]
optional arguments:
-h, --help show this help message and exit
--visual Generate and show a graph image
The validation mode parses the dependencies specified in the component configuration files and checks whether they are all met makes sure the directed dependency graph is acyclic (no circular dependencies) to check if starting all components with their dependencies is possible. Errors (unmet and circular dependencies) are displayed on the cli. If the configuration is valid, a list showing the order for a full system start is printed on the cli.
By specifying the visual argument, the command will generate an image of the the dependency graph (highlighting errors). Please note: if a circular dependency error is detected, the graph will be incomplete because the algorithm won't be able to iterate through the remaining nodes!
Image: Graph generated with the sample components with missing dependency error (December 2018)
Image: Graph generated from intermediate scale robotic simulation system (December 2018)