def trigger_builders_based_on_task_id(repo_name, revision, task_id, builders, *args, **kwargs): """ Create a graph of tasks which will use a TC task as their parent task. :param repo_name The name of a repository e.g. mozilla-inbound :type repo_name: str :param revision: push revision :type revision: str :returns: Result of scheduling a TC graph :rtype: dict """ if not builders: return None if type(builders) != list: raise MozciError("builders must be a list") # If the task_id is of a task which is running we want to extend the graph # instead of submitting an independent one task = get_task(task_id) task_graph_id = task['taskGroupId'] state = get_task_graph_status(task_graph_id) builders_graph, _ = buildbot_graph_builder(builders, revision) if state == "running": required_task_ids = [task_id] else: required_task_ids = [] task_graph = generate_task_graph( scopes=[ # This is needed to define tasks which take advantage of the BBB 'queue:define-task:buildbot-bridge/buildbot-bridge', ], tasks=_generate_tasks( repo_name=repo_name, revision=revision, builders_graph=builders_graph, # This points to which parent to grab artifacts from parent_task_id=task_id, # This creates dependencies on other tasks required_task_ids=required_task_ids, ), metadata=generate_metadata( repo_name=repo_name, revision=revision, name='Mozci BBB graph' ) ) if state == "running": result = extend_task_graph(task_graph_id, task_graph) else: result = schedule_graph(task_graph, *args, **kwargs) LOG.info("Result from scheduling: %s" % result) return result
def trigger_builders_based_on_task_id(repo_name, revision, task_id, builders, *args, **kwargs): """ Create a graph of tasks which will use a TC task as their parent task. :param repo_name The name of a repository e.g. mozilla-inbound :type repo_name: str :param revision: push revision :type revision: str :returns: Result of scheduling a TC graph :rtype: dict """ if not builders: return None if type(builders) != list: raise MozciError("builders must be a list") # If the task_id is of a task which is running we want to extend the graph # instead of submitting an independent one task = get_task(task_id) task_graph_id = task['taskGroupId'] state = get_task_graph_status(task_graph_id) builders_graph = buildbot_graph_builder(builders, revision) if state == "running": required_task_ids = [task_id] else: required_task_ids = [] task_graph = generate_task_graph( repo_name=repo_name, revision=revision, scopes=[ # This is needed to define tasks which take advantage of the BBB 'queue:define-task:buildbot-bridge/buildbot-bridge', ], tasks=_generate_tasks( repo_name=repo_name, revision=revision, builders_graph=builders_graph, # This points to which parent to grab artifacts from parent_task_id=task_id, # This creates dependencies on other tasks required_task_ids=required_task_ids, ) ) if state == "running": result = extend_task_graph(task_graph_id, task_graph) else: result = schedule_graph(task_graph, *args, **kwargs) print result return result
def extend_task_graph(self, task_graph_id, task_graph, *args, **kwargs): return tc.extend_task_graph(task_graph_id, task_graph, *args, **kwargs)