...
How to write preconditions
Make sure to import the constants files
Code Block from commons.constants import product_metadata from nisar_chimera.constants.nisar_chimera_const import NisarChimeraConstants as nc_const
Use
self
as the input parameter for every function, so you have access to everything coming into the preconditions subclassImplement code evaluate the precondition:
Gather the information you need to construct your condition:
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 theself._context
dict and the key from the
Products Metadata constants file you need like,
product_metadata.RANGE_BEGINNING_DATETIME
to retrieve the value:
self._context.get(product_metadata.RANGE_BEGINNING_DATETIME)
If you need to use information retrieved by a previously executed precondition, it will be available in thejob_params
, so use the key name mentioned in the Chimera Constants File or Products Metadata file that matches the key name in thejob_params
dict and access it as:self._job_params.get(key_name)
If you need information from the PGE Config File then you can access it with the key name found in the Chimera Constants File as:self._pge_config.get(nc_const.KEY_NAME)
If you need to get information from the settings file, for example getting the CRID:
then you can do something likecrid = self._settings.get(nc_const.CRID)
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.