Bug 1488313: [taskgraph] Move some functions for interacting with existing taskgraph to a more generic location; r=aki

Differential Revision: https://phabricator.services.mozilla.com/D13150

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Tom Prince 2019-03-27 16:52:20 +00:00
Родитель bfeaa78b80
Коммит 55e464e308
5 изменённых файлов: 48 добавлений и 28 удалений

Просмотреть файл

@ -13,8 +13,9 @@ import requests
from requests.exceptions import HTTPError
from .registry import register_callback_action
from .util import find_decision_task, create_tasks, combine_task_graph_files
from .util import create_tasks, combine_task_graph_files
from taskgraph.util.taskcluster import get_artifact_from_index
from taskgraph.util.taskgraph import find_decision_task
from taskgraph.taskgraph import TaskGraph
from taskgraph.util import taskcluster

Просмотреть файл

@ -12,8 +12,9 @@ import requests
from requests.exceptions import HTTPError
from .registry import register_callback_action
from .util import find_decision_task, create_tasks, combine_task_graph_files
from .util import create_tasks, combine_task_graph_files
from taskgraph.util.taskcluster import get_artifact_from_index
from taskgraph.util.taskgraph import find_decision_task
from taskgraph.taskgraph import TaskGraph
from taskgraph.util import taskcluster

Просмотреть файл

@ -11,9 +11,9 @@ import os
from .registry import register_callback_action
from .util import find_decision_task, find_existing_tasks_from_previous_kinds
from taskgraph.util.hg import find_hg_revision_push_info
from taskgraph.util.taskcluster import get_artifact
from taskgraph.util.taskgraph import find_decision_task, find_existing_tasks_from_previous_kinds
from taskgraph.util.partials import populate_release_history
from taskgraph.util.partners import (
fix_partner_config,

Просмотреть файл

@ -22,40 +22,18 @@ from taskgraph.taskgraph import TaskGraph
from taskgraph.optimize import optimize_task_graph
from taskgraph.util.taskcluster import (
get_session,
find_task_id,
get_artifact,
list_tasks,
parse_time,
CONCURRENCY,
)
from taskgraph.util.taskgraph import (
find_decision_task,
)
logger = logging.getLogger(__name__)
def find_decision_task(parameters, graph_config):
"""Given the parameters for this action, find the taskId of the decision
task"""
return find_task_id('{}.v2.{}.pushlog-id.{}.decision'.format(
graph_config['trust-domain'],
parameters['project'],
parameters['pushlog_id']))
def find_existing_tasks_from_previous_kinds(full_task_graph, previous_graph_ids,
rebuild_kinds):
"""Given a list of previous decision/action taskIds and kinds to ignore
from the previous graphs, return a dictionary of labels-to-taskids to use
as ``existing_tasks`` in the optimization step."""
existing_tasks = {}
for previous_graph_id in previous_graph_ids:
label_to_taskid = get_artifact(previous_graph_id, "public/label-to-taskid.json")
kind_labels = set(t.label for t in full_task_graph.tasks.itervalues()
if t.attributes['kind'] not in rebuild_kinds)
for label in set(label_to_taskid.keys()).intersection(kind_labels):
existing_tasks[label] = label_to_taskid[label]
return existing_tasks
def fetch_graph_and_labels(parameters, graph_config):
decision_task_id = find_decision_task(parameters, graph_config)

Просмотреть файл

@ -0,0 +1,40 @@
# -*- coding: utf-8 -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
"""
Tools for interacting with existing taskgraphs.
"""
from __future__ import absolute_import, print_function, unicode_literals
from taskgraph.util.taskcluster import (
find_task_id,
get_artifact,
)
def find_decision_task(parameters, graph_config):
"""Given the parameters for this action, find the taskId of the decision
task"""
return find_task_id('{}.v2.{}.pushlog-id.{}.decision'.format(
graph_config['trust-domain'],
parameters['project'],
parameters['pushlog_id']))
def find_existing_tasks_from_previous_kinds(full_task_graph, previous_graph_ids,
rebuild_kinds):
"""Given a list of previous decision/action taskIds and kinds to ignore
from the previous graphs, return a dictionary of labels-to-taskids to use
as ``existing_tasks`` in the optimization step."""
existing_tasks = {}
for previous_graph_id in previous_graph_ids:
label_to_taskid = get_artifact(previous_graph_id, "public/label-to-taskid.json")
kind_labels = set(t.label for t in full_task_graph.tasks.itervalues()
if t.attributes['kind'] not in rebuild_kinds)
for label in set(label_to_taskid.keys()).intersection(kind_labels):
existing_tasks[label] = label_to_taskid[label]
return existing_tasks