Trending: Add latest changes to the "new" dir
[csit.git] / resources / tools / presentation / generator_CPTA.py
index 34a9459..5d088ca 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2018 Cisco and/or its affiliates.
+# Copyright (c) 2019 Cisco and/or its affiliates.
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at:
@@ -43,6 +43,54 @@ THEME_OVERRIDES = """/* override table width restrictions */
 .wy-nav-content {
     max-width: 1200px !important;
 }
+.rst-content blockquote {
+    margin-left: 0px;
+    line-height: 18px;
+    margin-bottom: 0px;
+}
+.wy-menu-vertical a {
+    display: inline-block;
+    line-height: 18px;
+    padding: 0 2em;
+    display: block;
+    position: relative;
+    font-size: 90%;
+    color: #d9d9d9
+}
+.wy-menu-vertical li.current a {
+    color: gray;
+    border-right: solid 1px #c9c9c9;
+    padding: 0 3em;
+}
+.wy-menu-vertical li.toctree-l2.current > a {
+    background: #c9c9c9;
+    padding: 0 3em;
+}
+.wy-menu-vertical li.toctree-l2.current li.toctree-l3 > a {
+    display: block;
+    background: #c9c9c9;
+    padding: 0 4em;
+}
+.wy-menu-vertical li.toctree-l3.current li.toctree-l4 > a {
+    display: block;
+    background: #bdbdbd;
+    padding: 0 5em;
+}
+.wy-menu-vertical li.on a, .wy-menu-vertical li.current > a {
+    color: #404040;
+    padding: 0 2em;
+    font-weight: bold;
+    position: relative;
+    background: #fcfcfc;
+    border: none;
+        border-top-width: medium;
+        border-bottom-width: medium;
+        border-top-style: none;
+        border-bottom-style: none;
+        border-top-color: currentcolor;
+        border-bottom-color: currentcolor;
+    padding-left: 2em -4px;
+}
 """
 
 COLORS = ["SkyBlue", "Olive", "Purple", "Coral", "Indigo", "Pink",
@@ -76,7 +124,7 @@ def generate_cpta(spec, data):
     ret_code = _generate_all_charts(spec, data)
 
     cmd = HTML_BUILDER.format(
-        date=datetime.utcnow().strftime('%m/%d/%Y %H:%M UTC'),
+        date=datetime.utcnow().strftime('%Y-%m-%d %H:%M UTC'),
         working_dir=spec.environment["paths"]["DIR[WORKING,SRC]"],
         build_dir=spec.environment["paths"]["DIR[BUILD,HTML]"])
     execute_command(cmd)
@@ -126,28 +174,29 @@ def _generate_trending_traces(in_data, job_name, build_info,
     xaxis = list()
     for idx in data_x:
         date = build_info[job_name][str(idx)][0]
-        hover_str = ("date: {0}<br>"
-                     "value: {1:,}<br>"
-                     "{2}-ref: {3}<br>"
-                     "csit-ref: mrr-{4}-build-{5}")
+        hover_str = ("date: {date}<br>"
+                     "value: {value:,}<br>"
+                     "{sut}-ref: {build}<br>"
+                     "csit-ref: mrr-{period}-build-{build_nr}<br>"
+                     "testbed: {testbed}")
         if "dpdk" in job_name:
             hover_text.append(hover_str.format(
-                date,
-                int(in_data[idx].avg),
-                "dpdk",
-                build_info[job_name][str(idx)][1].
-                rsplit('~', 1)[0],
-                "weekly",
-                idx))
+                date=date,
+                value=int(in_data[idx].avg),
+                sut="dpdk",
+                build=build_info[job_name][str(idx)][1].rsplit('~', 1)[0],
+                period="weekly",
+                build_nr=idx,
+                testbed=build_info[job_name][str(idx)][2]))
         elif "vpp" in job_name:
             hover_text.append(hover_str.format(
-                date,
-                int(in_data[idx].avg),
-                "vpp",
-                build_info[job_name][str(idx)][1].
-                rsplit('~', 1)[0],
-                "daily",
-                idx))
+                date=date,
+                value=int(in_data[idx].avg),
+                sut="vpp",
+                build=build_info[job_name][str(idx)][1].rsplit('~', 1)[0],
+                period="daily",
+                build_nr=idx,
+                testbed=build_info[job_name][str(idx)][2]))
 
         xaxis.append(datetime(int(date[0:4]), int(date[4:6]), int(date[6:8]),
                               int(date[9:11]), int(date[12:])))
@@ -379,18 +428,25 @@ def _generate_all_charts(spec, input_data):
             builds_dict[job] = list()
         for build in spec.input["builds"][job]:
             status = build["status"]
-            if status != "failed" and status != "not found":
+            if status != "failed" and status != "not found" and \
+                status != "removed":
                 builds_dict[job].append(str(build["build"]))
 
     # Create "build ID": "date" dict:
     build_info = dict()
+    tb_tbl = spec.environment.get("testbeds", None)
     for job_name, job_data in builds_dict.items():
         if build_info.get(job_name, None) is None:
             build_info[job_name] = OrderedDict()
         for build in job_data:
+            testbed = ""
+            tb_ip = input_data.metadata(job_name, build).get("testbed", "")
+            if tb_ip and tb_tbl:
+                testbed = tb_tbl.get(tb_ip, "")
             build_info[job_name][build] = (
                 input_data.metadata(job_name, build).get("generated", ""),
-                input_data.metadata(job_name, build).get("version", "")
+                input_data.metadata(job_name, build).get("version", ""),
+                testbed
             )
 
     work_queue = multiprocessing.JoinableQueue()