IceProd Server Details

The server handles many different tasks and has several independent modules to take care of them. It uses asynchronous programming to avoid blocking on I/O. The server daemon handles startup of each module. It can also reload, restart, stop, or kill the modules.

IceProd can be reloaded to update a configuration variable. This will only reload the affected parts of IceProd, while letting the rest continue running.

Configuration

The configuration is in Detailed Configuration, which is stored as a dictionary and dumped to a json file on every modification.

Queueing

This is where IceProd actually submits tasks to a grid. Various grid architectures are supported through plugins:

The queueing module can submit to multiple grids at once since multiple plugins can be active at the same time.

Database

IceProd stores most of its information in a database. By default, it uses SQLite and a few local database files. For a master site that must handle the information of a large number of sites, MySQL can be used as a database (though this will take some external setup).

The database structure is given in dbtables.

Website

The website is the main way to communicate with IceProd, both from jobs and as a user.

Proxying

Proxying is taken care of by Squid Cache, if configured. IceProd can start its own squid or use an external caching server.

Other Utilities

OpenSSL

OpenSSL can be used to make a local CA certificate, make a regular certificate signed by a CA certificate, or verify a certificate. This is mostly used by sites to create self-signed certificates.

Scheduler

The scheduler can be used like cron, to run assigned tasks at specific intervals. It will mostly be used to update graphs and run other timed interactions.