summaryrefslogtreecommitdiffstats
path: root/taskcluster/android_taskgraph/transforms/treeherder.py
diff options
context:
space:
mode:
Diffstat (limited to 'taskcluster/android_taskgraph/transforms/treeherder.py')
-rw-r--r--taskcluster/android_taskgraph/transforms/treeherder.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/taskcluster/android_taskgraph/transforms/treeherder.py b/taskcluster/android_taskgraph/transforms/treeherder.py
new file mode 100644
index 0000000000..d0a1eede07
--- /dev/null
+++ b/taskcluster/android_taskgraph/transforms/treeherder.py
@@ -0,0 +1,53 @@
+# 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/.
+
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.dependencies import get_dependencies, get_primary_dependency
+from taskgraph.util.schema import resolve_keyed_by
+from taskgraph.util.treeherder import inherit_treeherder_from_dep, join_symbol
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def resolve_keys(config, tasks):
+ for task in tasks:
+ if not task["attributes"].get("build-type"):
+ task["attributes"]["build-type"] = task["name"]
+
+ resolve_keyed_by(
+ task,
+ "treeherder.symbol",
+ item_name=task["name"],
+ **{
+ "build-type": task["attributes"]["build-type"],
+ "level": config.params["level"],
+ },
+ )
+ yield task
+
+
+@transforms.add
+def build_treeherder_definition(config, tasks):
+ for task in tasks:
+ primary_dep = get_primary_dependency(config, task)
+ if not primary_dep and task.get("primary-dependency"):
+ primary_dep = task.pop("primary-dependency")
+
+ elif not primary_dep:
+ deps = list(get_dependencies(config, task)) or list(
+ task["dependent-tasks"].values()
+ )
+ primary_dep = deps[0]
+
+ task.setdefault("treeherder", {}).update(
+ inherit_treeherder_from_dep(task, primary_dep)
+ )
+ task_group = primary_dep.task["extra"]["treeherder"].get("groupSymbol", "?")
+ job_symbol = task["treeherder"].pop("symbol")
+ full_symbol = join_symbol(task_group, job_symbol)
+ task["treeherder"]["symbol"] = full_symbol
+
+ yield task