def get_job_token(self, workflow_name, workflow_instance): """Convert the job to a pinball token representing its properties. Condition is similar to job. We check the template to decide use job_templates or condition_templates dynamically. Args: workflow_name: The name of the workflow in which context this job is instantiated. workflow_instance: The workflow instance of the output job token. Returns: A pinball token representing the job. """ if self.workflow.name == workflow_name: inputs = [input_job.name for input_job in self.inputs] else: # If it's an external job, do not include its inputs. inputs = [] if not inputs: inputs = [Name.WORKFLOW_START_INPUT] outputs = [] for output_job in self.outputs: if output_job.workflow.name == workflow_name: outputs.append(output_job.name) if issubclass(self.template.__class__, JobTemplateBase): params = self._get_template_params() job = self.template.get_pinball_job(inputs, outputs, params) name = Name(workflow=workflow_name, instance=workflow_instance, job_state=Name.WAITING_STATE, job=self.name) result = Token(name=name.get_job_token_name(), data=pickle.dumps(job)) result.priority = self.compute_score() elif issubclass(self.template.__class__, ConditionTemplateBase): condition = self.template.get_pinball_condition(outputs) name = Name(workflow=workflow_name, instance=workflow_instance, job_state=Name.WAITING_STATE, job=self.name) result = Token(name=name.get_job_token_name(), data=pickle.dumps(condition)) else: raise Exception( "Template must be a subclass of JobTemplateBase or ConditionTemplateBase!" ) return result
def get_job_token(self, workflow_name, workflow_instance): """Convert the job to a pinball token representing its properties. Condition is similar to job. We check the template to decide use job_templates or condition_templates dynamically. Args: workflow_name: The name of the workflow in which context this job is instantiated. workflow_instance: The workflow instance of the output job token. Returns: A pinball token representing the job. """ if self.workflow.name == workflow_name: inputs = [input_job.name for input_job in self.inputs] else: # If it's an external job, do not include its inputs. inputs = [] if not inputs: inputs = [Name.WORKFLOW_START_INPUT] outputs = [] for output_job in self.outputs: if output_job.workflow.name == workflow_name: outputs.append(output_job.name) if issubclass(self.template.__class__, JobTemplateBase): params = self._get_template_params() job = self.template.get_pinball_job(inputs, outputs, params) name = Name(workflow=workflow_name, instance=workflow_instance, job_state=Name.WAITING_STATE, job=self.name) result = Token(name=name.get_job_token_name(), data=pickle.dumps(job)) result.priority = self.compute_score() elif issubclass(self.template.__class__, ConditionTemplateBase): condition = self.template.get_pinball_condition(outputs) name = Name(workflow=workflow_name, instance=workflow_instance, job_state=Name.WAITING_STATE, job=self.name) result = Token(name=name.get_job_token_name(), data=pickle.dumps(condition)) else: raise Exception("Template must be a subclass of JobTemplateBase or ConditionTemplateBase!") return result