EVEadm tool
Motivation
Currently, EVE supports only Xen VMs and RKT containers in domainmgr hypervisor interface. It would be reasonable to create a flexible tool with the ability to interact with various hypervisors (like KVM, ACRN) or containers (for ex. runc/containerd backends).
Proposal Description
As a basic design idea for project can be used a lightweight replacement for virsh/libvirt for running of VMs and containers on EVE. As a basic specification for development -- SmartOS vmadm utility[1]. Actually this is a JS-based CLI tool for working with various types of VMs.
In our case, as a first step, we implemented some basic EVE domainmgr functionality with the ability to manipulate Xen and RKT VMs. The initial set of actions for both subsytems is: create, delete, start, stop, info and update.
Our initial implementation is a Cobra/Viper-based Go eveadm application[2] with a hierarchical set of commands. At the top level we have 'rkt' and 'xen' modules. The actions described above are implemented for both modules and it's possible set the timeout for automatic interruption of hung commands.
Currently, tests included in the project can test some of the main functions of the application, including the main actions of the 'rkt' and 'xen' modules.
Possible directions for its further development may include the introduction of new virtualization/containerization modules, integration of module commands into a set of top-level commands, there may be some kind of logging machinery (for ex., compatible with syslogd), something else...
References
[1]https://smartos.org/man/1m/vmadm
[2]https://github.com/itmo-eve/eveadm