This repository contains several distinct but related things:
API Specification:
-
PowerAPI -- A proposed RedFish-inspired API for power control of distributed systems. PowerAPI is OpenAPI 3.0 compliant. It differs with current RedFish standards in at least two important ways:
- It allows for a light-weight API without the overhead of the full RedFish schema set.
- It provides easier ways to query/set the states of many nodes with a single API call.
Golang packages
-
pkg/powerman -- The package
pkg/powerman
provides golang bindings for libpowerman, allowing Go programs to directly call the API for the popular powerman cluster power control software. -
pkg/powerapi-client -- Provides a Go client API for using the OpenAPI 3 PowerAPI specification.
Utilities
- cmd/powermanapi -- Provides gateway between Powerman and PowerAPI, creating a REST-ful interface for Powerman cluster node power control. This utility is intended to provide an easily reached API for cluster management and automation systems, like Kraken
- cmd/pmshell -- Provides a CLI for interacting with Powerman through the
pkg/powerman
Go bindings. This exists largely as a way to test thepkg/powerman
<->libpowerman
bindings, but may prove useful as a utility. - cmd/powerctl -- Provides a CLI (very similar to
cmd/pmshell
in interface) to control power through the PowerAPI. This can be used, e.g. in conjunction withcmd/powermanapi
to use and test REST-ful API control of node power states.
More details on each of these can be found in their respective directories.
The PowerAPI specification can be found at openapi.yaml.
This software was written by J. Lowell Wofford [email protected]