A virtual BMC for controlling virtual machines using IPMI commands.
Go to file
Ilya Etingof 7ace4293e9 multiprocess server, ZMQ-based management cli tool
Original design of the VirtualBMC tool was that user manages
config files for individual VirtualBMC (via a cli tool), then
requests the tool to start the instances representing
individual VirtualBMC instances (via the cli tool). Then
the instances become independent processes. The only way
to know their whereabouts is through the pidfiles
they maintain.

There were certain practical inconveniences with the
original design, namely:

* Cumbersome to start/stop/monitor free-standing
  vBMC instances processes
* No two-way communication between the parent process
  and the VirtualBMC instances what makes child state check
  or modification unnecessary difficult

This commit turns server part of the tool into a single
process spawning multiple children processes and herding
them via ZMQ client/server.

The parent process runs server part of the control
interface, maintains persistent VirtualBMC instances
configuration and ensures all its children are alive
and kicking. Each VirtualBMC instance is still a separate
parent fork.

If child dies, parent respawns it right away. If parent
is about to die, it tries its best to kill all the
prospective orphans.

This new implementation tries to stay compatible with
the original one in part of `vbmc` tool CLI interface
and behaviour. Whenever it can't connect to the `vbmcd`
it tries to fork and spawn the daemon behind the scenes.

While the threading design for this tool might look better,
the underlying pyghmi library is apparently rather
complicated to use its concurrency capabilities reliably.
The other minor consideration is that running multiple
processes leverages CPU-based concurrency.

Other changes:

* The `start` command now accepts more than one domains
  to be started

Change-Id: Ie10f4598c7039a7afa9b45d01df3b3c3db252c1d
Story: 1751570
Task:  12057
2018-05-11 17:29:47 +02:00
doc/source multiprocess server, ZMQ-based management cli tool 2018-05-11 17:29:47 +02:00
playbooks/legacy/virtualbmc-tempest-dsvm-ironic-pxe_ipmitool-src Do not run functional (API) tests in the CI 2018-05-07 15:32:29 +02:00
virtualbmc multiprocess server, ZMQ-based management cli tool 2018-05-11 17:29:47 +02:00
zuul.d add lower-constraints job 2018-03-22 19:06:50 -04:00
.gitignore Add "cover" to .gitignore 2016-05-11 17:32:55 +01:00
.gitreview Restructure the repository according to OpenStack 2016-05-09 12:35:50 +01:00
.testr.conf Restructure the repository according to OpenStack 2016-05-09 12:35:50 +01:00
babel.cfg Restructure the repository according to OpenStack 2016-05-09 12:35:50 +01:00
CONTRIBUTING.rst Update bug tracker url for storyboard 2018-03-26 13:58:20 -07:00
HACKING.rst Update the documentation link for doc migration 2017-07-25 14:06:06 +08:00
LICENSE Initial Commit with code 2016-02-11 15:55:51 +00:00
lower-constraints.txt multiprocess server, ZMQ-based management cli tool 2018-05-11 17:29:47 +02:00
README.rst multiprocess server, ZMQ-based management cli tool 2018-05-11 17:29:47 +02:00
requirements.txt multiprocess server, ZMQ-based management cli tool 2018-05-11 17:29:47 +02:00
setup.cfg multiprocess server, ZMQ-based management cli tool 2018-05-11 17:29:47 +02:00
setup.py Updated from global requirements 2017-05-02 21:23:24 +00:00
test-requirements.txt Updated from global requirements 2018-03-16 03:55:01 +00:00
tox.ini add lower-constraints job 2018-03-22 19:06:50 -04:00

VirtualBMC

A virtual BMC for controlling virtual machines using IPMI commands.

Installation

pip install virtualbmc

Supported IPMI commands

# Power the virtual machine on, off, graceful off, NMI and reset
ipmitool -I lanplus -U admin -P password -H 127.0.0.1 power on|off|soft|diag|reset

# Check the power status
ipmitool -I lanplus -U admin -P password -H 127.0.0.1 power status

# Set the boot device to network, hd or cdrom
ipmitool -I lanplus -U admin -P password -H 127.0.0.1 chassis bootdev pxe|disk|cdrom

# Get the current boot device
ipmitool -I lanplus -U admin -P password -H 127.0.0.1 chassis bootparam get 5

# Get the current boot device
ipmitool -I lanplus -U admin -P password -H 127.0.0.1 chassis bootparam get 5

Team and repository tags

image