This document describes the internals of a glideinWMS Factory Daemon.
A Glidein Factory is composed of a
Factory Daemon and several Factory Entry Daemons. Each Entry Daemon
is autonomous; it advertises itself and processes the incoming
requests. The main Factory Daemon just launches and monitors the
Factory Entry Daemons.
See the picture below for a logical
overview.
All
daemons of a Glidein Factory share the same directory tree. The root
of the tree contains the common startup and configuration files,
while each entry point has a few additional configuration files on
its own.
The main tasks of the Factory Daemon are the startup up the Entry
Daemons and the aggregation of statistics from the entries.
See
picture below for an overview.
The
only non trivial operation in the statistics aggregation. The Factory
Daemon reads the XML files produced by the Factory Daemons,
aggregates them, and writes out an aggregate XML file. It also
updates the RRD files
used to keep the history and creates the rrdtool graphs and HTML
pages for human consumption.
See picture below for an overview.
The Factory Daemon is implemented as a series of python scripts, and it does not need to be pre-compiled.
The code is spread over several python modules, some specific to
the factory other shared between different parts of the glideinWMS.
There are also an external dependency on the rrdtool
python libraries.
The picture below shows the dependency tree.
glideFactory.py
is executable.
The glideinWMS common libraries are in glideinWMS/lib directory.
The Factory daemon reads a single configuration file:
glidein.descript
located in the root of the factory configuration tree.
Only two elements of this configuration file are used:
Entries - The list of entries, used to launch the Entry Daemons.
LoopDelay - How long should it sleep between iterations.
Warning: The configuration file should never be changed by hand. It is generated and maintained by a dedicated tool.
RepositoryCVSROOTcvsuser@cdcvs.fnal.gov:/cvs/cd Package(s)glideinWMS/factory |
Author(s)Since Aug. 14th 2006 - Igor Sfiligoi (Fermilab Computing Division) |