Welcome to Restraint’s Documentation!

Restraint is designed to execute tasks. These tasks can be tests which report results or simply code that you want to automate. Which tasks to execute is determined by a job [1]. The job also describes where to retrieve the tasks from and what parameters to pass in. These tasks can report multiple PASS, FAIL, WARN results along with an optional score. Tasks also have the ability to report log files. Each task can have metadata describing dependencies and max run time for example. Execution and reporting can be further enhanced with plugins.

Restraint can be used with Beaker [2] since it talks Beaker’s Harness API [3] for reporting results. It can also be used stand-alone.


  • Tasks can be retrieved directly from git.
  • Does not rely on Anaconda/kickstart to install task dependencies.
  • Can be statically linked to make it easier to test the system without changing the system.
  • Can be run stand-alone without Beaker.
    • Tasks are executed with the same environment (no surprises when run later in Beaker).
    • Developing tasks is much quicker since you don’t have to build task RPMs, schedule a system, provision a system, etc…
  • Can be easily extended with Plugins.
  • Uses Beaker’s job XML.

The following documentation will show you how to use Restraint in both environments.


Additional Information

[1]Job XML.
[2]Beaker is open-source software for managing and automating labs of test computers.
[3]Alternate Harness API.

Indices and Tables