ReleaseEngineering/Applications/Slavealloc

< ReleaseEngineering‎ | Applications
Revision as of 18:36, 8 August 2013 by Hwine (talk | contribs) (added deployment information)

Application Description

Slavealloc is a client-server application. The client is runslave.py. Communication is via a very basic HTTP request to http://slavealloc.build.mozilla.org/gettac/$slavename, where the response is expected to be a buildbot.tac file suitable for use to start buildslave.

The slavealloc server is a implemented as a small Twisted application (source) which serves the tac generator, a JSON REST interface, and a client-side JavaScript interface.

The same source code also implements a command-line frontend to the REST interface.

Requirements

The server depends on

  • MySQL database
  • Python
    • Twisted
    • SQLAlchemy

Development

First, install build/tools in a virtualenv:

cd tools
virtualenv sandbox
sandbox/bin/pip install -e .

Then you can run the slavealloc daemon locally from the root of the tools repository with a simple:

sandbox/bin/twistd -noy lib/python/slavealloc/contrib/slavealloc-combined.tac

Note that due to what I believe to be a bug in pip, you may need to explicitly install Twisted to get the twistd executable installed:

pip install -U twisted

To set up a fresh database, use

sandbox/bin/slavealloc dbinit -D sqlite:///slavealloc.db

This configuration will use SQLite to access {{{slavealloc.db}}} in the current directory. You can hack on the static web content while the daemon is running.

Production Instance

Deployment Requests

To request an update to the code for slavealloc, file a bug in "Infrastructure & Operations - WebOps: IT-Managed Tools" with the following information (bugzilla template):

  • Name of the cluster ("releng cluster") pre-entered
  • Short name of the site (e.g., "slavealloc") pre-entered
  • Revision to update to REVISION_NUMBER in template
  • Any limitations on timing ("not before", etc.) TIME_CRITERIA in template
  • Link to the relevant mana page pre-entered

See Also