# GlideinWMS The Glidein-based Workflow Management System

- Home
- Download
- Glidein Frontend
- WMS Factory
- Components
- Recipes
- FAQ

## WMS Factory Design

- Overview
- Install
- Configuration
- Design
- Monitoring
- Troubleshooting

### Factory Internals

Jump to:

1. Program flow
2. Source code distribution
3. Configuration files

Factory Design Topics:

- Factory Internals
- Entry Internals
- Glidein Internals
- Data Exchange

## Program flow

The main tasks of the Factory Daemon are to startup up the Entry Daemons and to aggregate statistics from the entries.
See picture below for an overview.

The only non trivial operation is 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 also HTML pages for human consumption.
See picture below for an overview.

## Source code distribution

The Factory Daemon is implemented as a series of Python scripts which do not need to be pre-compiled.

The code is spread over several Python modules: some of them specific to the Factory and 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.

Note: glideFactory.py is executable.

The GlideinWMS common libraries are in GlideinWMS/lib directory.

## Configuration files

The Factory daemon reads a single configuration file:

`glidein.descript`

It is 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.