/beaker

Hardware integration testing system and lab automation for Fedora and RHEL

Primary LanguagePythonGNU General Public License v2.0GPL-2.0

Beaker is open-source software for managing and automating labs of test computers.

See the Beaker homepage for further documentation and information about the Beaker project. The Developer guide in particular might be useful if you are working on Beaker.

Community Chat Channel

Matrix community chat channel located at any of the below locations:

Repo Layout

  • Server/

    • assets/
      Source files for static assets (JavaScript, LESS) which are served to the web browser. The webassets module manages compilation and minification of the raw source files into a form suitable for serving to the browser.

    • bkr/server/tools/
      Various modules that are run as ancillary processes to the server.

    • bkr/server/config/
      These are application specific configuration items.

    • bkr/server/kickstarts/
      Kickstart templates that are served to the lab controller for provisioning test systems. See the admin guide for further details.

    • bkr/server/snippets/
      These are sections of kickstart templates that can be inserted into other kickstart templates as needed.

    • bkr/server/static/
      Legacy static assets (not managed by the webassets module). No new assets are added here.

    • bkr/server/templates/
      Kid templates for TurboGears controller methods and TurboGears widgets.

    • bkr/server/alembic/versions/
      Alembic database migration scripts.

  • LabController/
    This contains all the source code for the lab controller.

    • addDistro/
      Scripts to run on the import of distros. See the admin guide for details.

    • apache/beaker-lab-controller.conf
      Apache configuration file. Used to configure the serving of various files including logs.

    • apache/404.html
      Custom 404 error page for logs.

    • aux/anamon, aux/anamon.init, aux/anamon.service
      "Anamon", the Anaconda monitoring script. This runs during Anaconda installations and periodically uploads Anaconda logs to Beaker.

    • cron.hourly/
      Anything to be run as a cron job on the lab controller goes in here. Currently contains a single script that expires distros.

    • init.d/
      Contains the init scripts for the individual lab controller processes.

    • src/bkr/labcontroller/
      Modules that act as entry points for the main processes listed in init.d/, as well as related modules.

    • src/bkr/labcontroller/power-scripts/
      Contains scripts responsible for power cycling test machines.

  • IntegrationTests/
    This directory contains the complete Beaker test suite. Tests for the server, lab controller and client are found in their corresponding directories in the src/bkr/inttest/ directory.

  • Client/
    All source files for the beaker client are found here.

    • src/bkr/client/
      Modules that are shared and utilized by various commands.

    • src/bkr/client/commands/
      Each module in this directory corresponds to a different subcommand for the bkr client. Man pages for each subcommand are included as a module-level docstring in reStructuredText format.

  • documentation/
    Beaker's documentation in reStructuredText format.

  • SchemaUpgrades/
    Legacy database upgrade instructions, for Beaker versions up to 0.8.2. Newer database upgrades are managed by Alembic, with migration scripts added to Server/bkr/server/alembic/versions/.

  • Common/
    Any substantial amount of source code that can be utilized by more than one package should be here.

    • bkr/common/schema/
      Any kind of beaker entity that has a schema definition, will be defined here. This does not include database schemas.
  • Misc/
    Utilities and scripts which are used for developing Beaker but which do not form part of the source tree itself.

    • rpmbuild.sh
      Builds SRPM or RPM development packages from the current git HEAD revision. For example, Misc/rpmbuild.sh -bb will perform a local RPM build resulting in packages like beaker-*-20.1-0.git.2.2dff0c7.noarch.rpm.