Create the script mentioned in the
chimera_config.yaml
file under thepreprocessor.module_path
.In the script, declare the subclass mentioned in the
chimera_config.yaml
file under thepreprocessor.class_name
Start with the following code snippet:
# import the parent class from chimera from chimera.precondition_functions import PreConditionFunctions # declare the sub class class <class_name>(PreConditionFunctions): def __init__(self, context, pge_config, settings, job_params): PreConditionFunctions.__init__(self, context, pge_config, settings, job_params)
The variables you have available throughout this subclass are:
Context - contents of
_context.json
of the SciFlo job. You can access it asself._context
in the precondition functionsPGE’s configuration - contents of the respective PGE’s configuration file. Can be accessed as
self._pge_config
Settings file - content of
settings.yaml file
accessible asself._settings
Job Params - This is a dictionary that stores all the information gathered during preconditions evaluation. How to utilize it will be described soon. It can be accessed as
self._job_params
How to write preconditions
Use
self
as the input parameter so you have access to everything coming into the preconditions subclassImplement code evaluate the precondition:
If you need to utilize information from the sciflo context e.g. if you need to get the range beginning and ending times of the input product then use the self._context dict and the key from the products metadata constants you need like,
metadata.RANGE_BEGINNING_DATETIME
as such,self._context.get(product_metadata.RANGE_BEGINNING_DATETIME)
For executing queries, construct the ES query and execute it by calling the requires ES function available through the ancillary utilities <link>.
Process the results of the executed query as needed.
The return statement of the precondition is very important. You must return a dictionary. This dictionary gets appended to the self._job_params variable. The job params is the dictionary that is used to fill up the null fields of the runconfig.
The keys of the dictionary must match the field name in the runconfig exactly.