PowerAPI - A REST-ful API for cluster power control
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 the pkg/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 with cmd/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.