Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

  1. Create the script mentioned in the chimera_config.yaml file under the preprocessor.module_path.

  2. In the script, declare the subclass mentioned in the chimera_config.yaml file under the preprocessor.class_name

  3. 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 as self._context in the precondition functions

    • PGE’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 as self._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

  1. Use self as the input parameter so you have access to everything coming into  the preconditions subclass

  2. Implement 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.

  3. 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.

  • No labels