author | Hassan Ali <helfi92@gmail.com> |
Mon, 24 Jul 2017 14:33:21 -0400 | |
changeset 371177 | 36df21c0cba7b5ce6940d86a8efc7b10ab44be13 |
parent 371176 | 319bc66e5d3a6599a61b686bc58ee399dac77b65 |
child 371178 | c2d1e7ed4349390606179ff79ff880deedad9700 |
push id | 93039 |
push user | kwierso@gmail.com |
push date | Thu, 27 Jul 2017 01:33:28 +0000 |
treeherder | mozilla-inbound@35b0bdaacb0d [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | bstack, dustin |
bugs | 1382911 |
milestone | 56.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
new file mode 100644 --- /dev/null +++ b/taskcluster/actions/add-new-jobs.py @@ -0,0 +1,49 @@ +from .registry import register_callback_action +from slugid import nice as slugid + +from actions.util import create_task +from taskgraph.util.taskcluster import get_artifact +from taskgraph.util.parameterization import resolve_task_references +from taskgraph.taskgraph import TaskGraph + + +@register_callback_action( + name='add-new-jobs', + title='Add new jobs', + symbol='add-new', + description="Add new jobs using task labels", + order=10000, + context=[{}], + schema={ + 'type': 'object', + 'properties': { + 'tasks': { + 'type': 'array', + 'description': 'An array of task labels', + 'items': { + 'type': 'string' + } + } + } + } +) +def add_new_jobs_action(parameters, input, task_group_id, task_id, task): + full_task_graph = get_artifact(task_id, "public/full-task-graph.json") + _, full_task_graph = TaskGraph.from_json(full_task_graph) + label_to_taskid = get_artifact(task_id, "public/label-to-taskid.json") + + for elem in input['tasks']: + if elem in full_task_graph.tasks: + task = full_task_graph.tasks[elem] + + # fix up the task's dependencies, similar to how optimization would + # have done in the decision + dependencies = {name: label_to_taskid[label] + for name, label in task.dependencies.iteritems()} + task_def = resolve_task_references(task.label, task.task, dependencies) + task_def.setdefault('dependencies', []).extend(dependencies.itervalues()) + task_def['schedulerId'] = 'gecko-level-{}'.format(parameters['level']) + # actually create the new task + create_task(slugid(), task_def) + else: + raise Exception('{} was not found in the task-graph'.format(elem))