def get_workflow_tokens(self): """Create Pinball tokens representing a workflow instance. Convert workflow jobs to tokens and create event tokens in inputs of top-level jobs. Returns: A list of job and event tokens representing a workflow instance. """ all_jobs = self._get_transitive_deps() instance = get_unique_workflow_instance() result = [] for job in all_jobs: result.append(job.get_job_token(self.name, instance)) top_level_jobs = self._get_top_level_jobs() for job in top_level_jobs: event = Event(creator='parser') event_name = Name(workflow=self.name, instance=instance, job=job.name, input_name=Name.WORKFLOW_START_INPUT, event='workflow_start_event') result.append(Token(name=event_name.get_event_token_name(), data=pickle.dumps(event))) return result
def get_workflow_tokens(self): """Create Pinball tokens representing a workflow instance. Convert workflow jobs to tokens and create event tokens in inputs of top-level jobs. Returns: A list of job and event tokens representing a workflow instance. """ all_jobs = self._get_transitive_deps() instance = get_unique_workflow_instance() result = [] for job in all_jobs: result.append(job.get_job_token(self.name, instance)) top_level_jobs = self._get_top_level_jobs() for job in top_level_jobs: event = Event(creator='parser') event_name = Name(workflow=self.name, instance=instance, job=job.name, input_name=Name.WORKFLOW_START_INPUT, event='workflow_start_event') result.append( Token(name=event_name.get_event_token_name(), data=pickle.dumps(event))) return result
def get_workflow_tokens(self, workflow): # TODO(pawel): add workflow connectivity check. job_configs = {} top_level_job_names = [] job_names = self._repository.get_job_names(workflow) for job_name in job_names: job_config = self._repository.get_job(workflow, job_name) job_configs[job_name] = job_config if not job_config.parents: top_level_job_names.append(job_name) job_config.parents = [Name.WORKFLOW_START_INPUT] job_outputs = collections.defaultdict(list) for job_config in job_configs.values(): for parent_job_name in job_config.parents: job_outputs[parent_job_name].append(job_config.job) result = [] instance = get_unique_workflow_instance() # Convert job configs to job tokens. for job_config in job_configs.values(): token = RepositoryConfigParser._job_config_to_token( workflow, instance, job_config, job_outputs[job_config.job]) result.append(token) # Create triggering events for top-level jobs. for job_name in top_level_job_names: event = Event(creator='repository_config_parser') event_name = Name(workflow=workflow, instance=instance, job=job_name, input_name=Name.WORKFLOW_START_INPUT, event='workflow_start_event') result.append(Token(name=event_name.get_event_token_name(), data=pickle.dumps(event))) return result
def get_workflow_tokens(self, workflow): # TODO(pawel): add workflow connectivity check. job_configs = {} top_level_job_names = [] job_names = self._repository.get_job_names(workflow) for job_name in job_names: job_config = self._repository.get_job(workflow, job_name) job_configs[job_name] = job_config if not job_config.parents: top_level_job_names.append(job_name) job_config.parents = [Name.WORKFLOW_START_INPUT] job_outputs = collections.defaultdict(list) for job_config in job_configs.values(): for parent_job_name in job_config.parents: job_outputs[parent_job_name].append(job_config.job) result = [] instance = get_unique_workflow_instance() # Convert job configs to job tokens. for job_config in job_configs.values(): token = RepositoryConfigParser._job_config_to_token( workflow, instance, job_config, job_outputs[job_config.job]) result.append(token) # Create triggering events for top-level jobs. for job_name in top_level_job_names: event = Event(creator='repository_config_parser') event_name = Name(workflow=workflow, instance=instance, job=job_name, input_name=Name.WORKFLOW_START_INPUT, event='workflow_start_event') result.append( Token(name=event_name.get_event_token_name(), data=pickle.dumps(event))) return result