What is PowerAPI?


This project 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:

    1. It allows for a light-weight API without the overhead of the full RedFish schema set.
    2. 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.


  • 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.

Related: [ layercake ]