FireWorks RocketLauncher Manager
Project description
FireWorks RocketLauncher Manager
Johannes L. Hörmann, johannes.hoermann@imtek.uni-freiburg.de, 2020
This package facilitates configuring and launching the FireWorks workflow management framework.
Quick start
Install with
pip install fwrlm
In order to set up a well-defined FireWorks environment on an HPC system,
a multitude of configuration files (FW_config.yaml,
database authentication file, worker files, queue adapter files,
submit script templates) as well as a few background services (depending on
the HPC system that might include an ssh connection to the data base,
a simple rocket launcher for data transfer FireWorks on a login node,
queue submission of computationally expensive FireWorks,
a loop for recovering submitted offline FireWorks regularly) are required.
fwrlm provides a simple, standardized interface for
- quickly generating configuration file sets from templates
- starting and stopping the above mentioned persistent background services
Configuring FWRLM & FireWorks
To get started, pick your favorite configuration file template
FWRLM_config.yaml.SAMPLE_MACHINE from within imteksimfw/fireworks/examples
and copy it to your home directory as FWRLM_config.yaml. It might look like
this:
MACHINE: JUWELS
SCHEDULER: SLURM
FW_CONFIG_SKEL_PREFIX: /path/to/imteksimfw/fireworks/examples/fw_config
FW_CONFIG_TEMPLATE_PREFIX: /path/to/imteksimfw/fireworks/templates/fw_config
FW_CONFIG_PREFIX: /path/to/your/home/directory/.fireworks
FW_CONFIG_FILE_NAME: FW_config.yaml
FW_AUTH_FILE_NAME: fireworks_mongodb_auth.yaml
LAUNCHPAD_LOC: /path/to/your/scratch/or/workspace/directory/fireworks/launchpad
LOGDIR_LOC: /path/to/your/scratch/or/workspace/directory/fireworks/log
FIREWORKS_DB: fireworks
FIREWORKS_USER: fireworks
FIREWORKS_PWD: fireworks
SSL: true
SSL_CA_CERTS: /path/to/root/ca/certificate
SSL_CERTFILE: /path/to/ssl/certificate
SSL_KEYFILE: /path/to/ssl/key
Make sure to adapt the configuration to your needs.
The configuration samples within this package make use of custom FireTasks extensions within the independent package imteksimfw Install with
pip install imteksimfw
or remove
ADD_USER_PACKAGES:
- imteksimfw.fireworks.user_objects.firetasks
from your ~/.fireworks/FW_config.yaml or from a modified template itself
if you are using the configuration samples provided with this package.
Next, understand what
fwrlm can do with fwrlm --help, i.e.:
fwrlm --help
usage: fwrlm [-h] [--debug] [--verbose] [--log [LOG]]
{start,status,stop,restart,test,config} ...
Manages FireWorks rocket launchers and associated scripts as daemons.
positional arguments:
{start,status,stop,restart,test,config}
command
start Start daemons.
status Query daemon status.
stop Stop daemons.
restart Restart daemons.
test Runs service directly without detaching.
config Operate on FireWorks config.
optional arguments:
-h, --help show this help message and exit
--debug debug (default: False)
--verbose verbose (default: False)
--quiet, -q quiet (logelevel WARNING) (default: False)
--log [LOG] Write log fwrlm.log, optionally specify log name
(default: None)
You can get usage information for sub commands as well, i.e.
$ fwrlm config --help
usage: fwrlm config [-h] [--config-dir CONFIG_DIR] [--skel-dir SKEL_DIR]
[--template-dir TEMPLATE_DIR]
{reset,show} ...
positional arguments:
{reset,show} sub-command
reset Reset FireWorks config in 'CONFIG_DIR' by first
copying files from 'SKEL_DIR' and then rendering files
from 'TEMPLATE_DIR' with parameters defined within
your 'FWRLM_config.yaml'.
show Displays current config.
optional arguments:
-h, --help show this help message and exit
--config-dir CONFIG_DIR
User config directory
--skel-dir SKEL_DIR Config skeleton directory
--template-dir TEMPLATE_DIR
Config template directory
In the following, display detailed information on what is happening by adding
the --verbose or --debug flags right behind fwrlm before any
sub-command, i.e. fwrlm --verbose config reset.
Check whether the FWRLM_config.yaml is parsed correctly with
fwrlm config show. You should see a list of parameters, including those set
within FWRLM_config.yaml. Other parameters are filled with default values.
In case of curiosity, look at imteksimfw/fireworks/fwrlm_config.py for
further explanations on parameters in the code comments.
Now, running fwrlm config reset will do two things:
- Copy all files from
FW_CONFIG_SKEL_PREFIXspecified withinFWRLM_config.yamltoFW_CONFIG_PREFIX. Former points to this package'simteksimfw/fireworks/examples/fw_configper default. Latter should always point to.fireworksbelow your home directory. - Fill all Jinja2 templates within
FW_CONFIG_TEMPLATE_PREFIXwith parameters specified inFWRLM_config.yamland place them inFW_CONFIG_PREFIX. If file names inFW_CONFIG_SKEL_PREFIXandFW_CONFIG_TEMPLATE_PREFIXconflict, then latter overrides former. All key - value pairs inFWRLM_config.yamlcan be used within the templates.
Modify skeleton and templates as see fit. If FW_CONFIG_PREFIX exists
already, use fwrlm config reset --force to remove it completely before
regenerating the configuration file set.
Afterwards, inspect the files within your FW_CONFIG_PREFIX directory.
Notes:
- If you want to directly use config skeleton and templates from this package
unmodified, you can just remove
FW_CONFIG_SKEL_PREFIXandFW_CONFIG_TEMPLATE_PREFIXfrom yourFWRLM_config.yaml. Otherwise, cloning this repository, applying custom modifications to the templates, and pointingFW_CONFIG_SKEL_PREFIXandFW_CONFIG_TEMPLATE_PREFIXto your local repository instead is a good practice. - The parameters
MACHINEandSCHEDULERdetermine which worker and queue adapter files will be used forrlaunchandqlaunch.MACHINE: JUWELSandSCHEDULER: SLURMwill result inrlaunchto run with thejuwels_noqueue_worker.yamlworker file, andqlaunchto run with thejuwels_queue_worker.yamlworker, theforhlr2_slurm_qadapter.yamlqueue adapter and theforhlr2_slurm_submit_script.templatesubmit script template files. You can override this default behavior (and make theMACHINEandSCHEDULERkey words obsolete) by explicitly setting theRLAUNCH_FWORKER_FILE,QLAUNCH_FWORKER_FILEandQADAPTER_FILEparameters withinFWRLM_config.yaml). Note, however, that the qlaunch worker file and submit script template must be specified within theQADAPTER_FILEexplicitly. - Default queue adapter file templates expect a bash script
${HOME}/.fireworks_envthat makes your FireWorks environment available, i.e. by loading environment modules or activating the right virtual environment. Make sure to make this file available or modify the particular option within your queue adapter file template.
Launching FWRLM services
After generating a valid configuration, try to establish an ssh connection
to your data base server with fwrlm --verbose start ssh. Check whether the
ssh service keeps running with
$ fwrlm --verbose status ssh
INFO: ssh running.
fwrlm status returns exit code 0 if the service is running and exit code
> 0 otherwise, allowing for automized polling of a service's state.
Check with
$ fwrlm status ssh
$ echo $?
0
The --verbose and --debug flags do not only specify the verbosity of the
launcher, but also of the evokes background service as well. If fwrlm status
indicates a service not to be running after the start command, then
check the log files within the directory LOGDIR_LOC specified in
your FWRLM_config.yaml. Log files are named by the pattern
{SERVICE_NAME}_{EVOCATION_TIME}.{err,out}, i.e.
ssh_tunnel_20200327151733693305.out and
ssh_tunnel_20200327151733693305.err. If the messages do not give enough
information on a possible error source, then restart the service with a
higher verbosity level, i.e. fwrlm --debug start ssh and check again.
Usually, the ssh service must run before starting any other FireWorks
services. Next, you can continue to launch services individually or in sets.
Try to start an unknown service to see a list of all available services and
service sets, i.e.
$fwrlm start bla
usage: fwrlm start [-h] DAEMON [DAEMON ...]
fwrlm start: error: argument DAEMON: invalid choice: 'bla' (choose from 'ssh', 'recover', 'dummy', 'local-fw', 'webgui', 'local-worker', 'qlaunch', 'hpc-worker', 'hpc-fw', 'rlaunch', 'all')
available
See the definitions of DEMON_DICT and DAEMON_SETS within
imteksimfw/fireworks/scripts/fwrlm_run.py for the meaning these sets.
For example, fwrlm --verbose start hpc-fw will launch rlaunch, qlaunch
and lpad recover_offline services, comprising the core services necessary
on a typical HPC platform:
$fwrlm --verbose start hpc-fw
INFO: recover started.
INFO: qlaunch started.
INFO: rlaunch started.
$ fwrlm --verbose status hpc-fw
INFO: rlaunch running.
INFO: qlaunch not running.
INFO: recover running.
Here, something went wrong with the qlaunch service. Stop services in a
similar manner:
$ fwrlm --verbose stop hpc-fw
INFO: rlaunch stopped.
INFO: recover stopped.
INFO: qlaunch not running.
Utilities
render
The helper tool render offers a simple command line interface to the
Jinja2 template engine. Refer to render --help. Running render inspect
without any further options will display an overview on which parameters from
FWRLM_config.yaml will be filled into which template files from
FW_CONFIG_TEMPLATE_PREFIX, i.e.:
$ render inspect
╒══════════════════════════════╤═══════════════╤═════════════╤════════════╤═════╤═════════════╤══════════════╤═════════╤════════════════╤══════════════╤══════════════╤══════════════╤══════════════╤══════════════════╤═══════════════════╤════════════════════╕
│ │ FIREWORKS_PWD │ WEBGUI_PORT │ LOGDIR_LOC │ SSL │ SSL_KEYFILE │ MONGODB_HOST │ MACHINE │ FIREWORKS_USER │ MONGODB_PORT │ SSL_CA_CERTS │ FIREWORKS_DB │ SSL_CERTFILE │ FW_CONFIG_PREFIX │ FW_AUTH_FILE_NAME │ SSL_PEM_PASSPHRASE │
├──────────────────────────────┼───────────────┼─────────────┼────────────┼─────┼─────────────┼──────────────┼─────────┼────────────────┼──────────────┼──────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┼────────────────────┤
│ FW_config.yaml │ │ x │ │ │ │ │ x │ │ │ │ │ │ x │ x │ │
├──────────────────────────────┼───────────────┼─────────────┼────────────┼─────┼─────────────┼──────────────┼─────────┼────────────────┼──────────────┼──────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┼────────────────────┤
│ bwcloud_noqueue_fworker.yaml │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────────────────────────────┼───────────────┼─────────────┼────────────┼─────┼─────────────┼──────────────┼─────────┼────────────────┼──────────────┼──────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┼────────────────────┤
│ fireworks_mongodb_auth.yaml │ x │ │ x │ x │ x │ x │ │ x │ x │ x │ x │ x │ │ │ x │
├──────────────────────────────┼───────────────┼─────────────┼────────────┼─────┼─────────────┼──────────────┼─────────┼────────────────┼──────────────┼──────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┼────────────────────┤
│ forhlr2_slurm_qadapter.yaml │ │ │ │ │ │ │ │ │ │ │ │ │ x │ x │ │
├──────────────────────────────┼───────────────┼─────────────┼────────────┼─────┼─────────────┼──────────────┼─────────┼────────────────┼──────────────┼──────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┼────────────────────┤
│ juwels_slurm_qadapter.yaml │ │ │ │ │ │ │ │ │ │ │ │ │ x │ x │ │
├──────────────────────────────┼───────────────┼─────────────┼────────────┼─────┼─────────────┼──────────────┼─────────┼────────────────┼──────────────┼──────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┼────────────────────┤
│ nemo_moab_qadapter.yaml │ │ │ │ │ │ │ │ │ │ │ │ │ x │ x │ │
╘══════════════════════════════╧═══════════════╧═════════════╧════════════╧═════╧═════════════╧══════════════╧═════════╧════════════════╧══════════════╧══════════════╧══════════════╧══════════════╧══════════════════╧═══════════════════╧════════════════════╛
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fwrlm-0.1.2.tar.gz.
File metadata
- Download URL: fwrlm-0.1.2.tar.gz
- Upload date:
- Size: 43.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9749e8e6727bbc32bbc149dfe1d51bf3661933de2357e2456173e8d26b04dd9b
|
|
| MD5 |
e60f9bef32e9ce2f845cbd8e71d6e602
|
|
| BLAKE2b-256 |
13fb7944bcf895eada89cc6be7c4077ba1818cdc1c14bd428b0a234bb1bfcb0b
|
File details
Details for the file fwrlm-0.1.2-py3-none-any.whl.
File metadata
- Download URL: fwrlm-0.1.2-py3-none-any.whl
- Upload date:
- Size: 36.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d56064f9c39b8b9b934b1e7d056a9f21c9ad195b36eb030e3721ce03e8d9954c
|
|
| MD5 |
02e8fda53d2cf8fb24a024da151f1c35
|
|
| BLAKE2b-256 |
bf4d8c46b01d40228921459758af511b5a51427cad4cf4b18b840014fc4664d8
|