Purpose of this Package#
Canonical’s Metal As A Service (MAAS) commissions and deploys bare metal machines automatically, see https://maas.io/. It uses PXE boot so any machine that can network boot can theoretically be managed with MAAS.
However, MAAS does need to be able to remotely power cycle a machine in order to complete its function. Data centre machines will all have a BMC that allows for this but consumer machines rarely do.
MAAS allows for this by allowing a Web Hook to be configured for power cycling each machine. All you need is some remotely controlled power supply for your machine and some software that provides a web hook understood by MAAS, and responds to the web hook by powering on/off the machine.
Each machine will need 3 web hooks:
power on
power off
query power state
This python package can stand up multiple web hooks and connect them to a variety of back end remote control devices. The package has an extensible architecture and at present supports two types of backend which will cover a large number of devices. The backends supported are:
SmartThings API: a popular Samsung IoT protocol that is supported by thousands of devices
Command line interface. Anything that is controllable by a command line utility that can be installed on the machine running this webhook service.