def __init__(self, sim_cfg): assert self.target is not None # Cross ref the whole cfg object for ease. self.sim_cfg = sim_cfg # A list of jobs on which this job depends. self.dependencies = [] # Indicates whether running this job requires all dependencies to pass. # If this flag is set to False, any passing dependency will trigger # this current job to run self.needs_all_dependencies_passing = True # Declare attributes that need to be extracted from the HJSon cfg. self._define_attrs() # Set class instance attributes. self._set_attrs() # Check if all attributes that are needed are set. self._check_attrs() # Do variable substitutions. self._subst_vars() # List of vars required to be exported to sub-shell, as a dict. self.exports = self._process_exports() # Construct the job's command. self.cmd = self._construct_cmd() # Create the launcher object. Launcher retains the handle to self for # lookup & callbacks. self.launcher = get_launcher(self)
def create_launcher(self): """Creates the launcher instance. Note that the launcher instance for ALL jobs in the same job group must be created before the Scheduler starts to dispatch one by one. """ # Retain the handle to self for lookup & callbacks. self.launcher = get_launcher(self)