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

See our [homepage](http://beaker-project.org) for further documentation and 
information about the Beaker project.


Repo Layout
-----------

* Server/
    + 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](http://beaker-project.org/guide/Administration-Customizing_Kickstarts.html)
      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/
      Contains javascript, images and css files.

    + bkr/server/templates/
      Templates of controllers and custom widgets are found here.


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

    + addDistro/
      Scripts to run on the import of distros,
      See [the installation guide](http://beaker-project.org/guide/Installation-Setup_Lab_Controller-AddDistro_Jobs.html)
      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
      "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 primary arg to
      be passed to the `bkr` command.

    + doc/
      Contains command documentation in reStructuredText format.
      Each module in *src/bkr/client/commands/* should have a corresponding 
      *.rst* file in this directory.


* pub_doc/
  Contains the 'Beaker Guide' in  docbook format, as seen 
  [here](http://beaker-project.org/guide/).


* rel-eng/
  Contains hooks for building Beaker packages via tito.


* SchemaUpgrades/
  Manual changes co-coinciding with upgrades are documented in this directory.


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


* Tasks/
  Basic tasks that perform a utilitarian function are kept here. These are
  tasks that can be relevant to any Beaker installation. Each tasks' path is
  reflective of its name.