ReleaseEngineering/Applications/Slavealloc

From MozillaWiki
Jump to navigation Jump to search

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.

See Also