From b649c02d7548118ff4f052232a8e5bfbf00e7479 Mon Sep 17 00:00:00 2001
From: Christoph Alt <typ@ohnebild.com>
Date: Fri, 14 Oct 2022 11:45:26 +0200
Subject: [PATCH] added filtering to the benchmark job runtime

---
 dashboards/dashboard_base.py |  9 +++++++--
 dashboards/dashboard_list.py | 21 ++++++++++++++++-----
 2 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/dashboards/dashboard_base.py b/dashboards/dashboard_base.py
index 6d3678c..65e1617 100644
--- a/dashboards/dashboard_base.py
+++ b/dashboards/dashboard_base.py
@@ -132,9 +132,10 @@ def get_stat_panel(title: str,
                    stat_query: Query,
                    repeat: Template = None,
                    alias: str = "",
+                   *,
+                   maxPerRow=0,
                    **kwargs):
     new_kwargs = {
-        **kwargs,
         'alignment': 'center',
         'colorMode': 'value',
         'graphMode': 'area',
@@ -142,8 +143,12 @@ def get_stat_panel(title: str,
         'orientation': 'auto',
         'transparent': True,
     }
+    new_kwargs.update(kwargs)
     if repeat:
-        new_kwargs.setdefault('repeat', Repeat('h', repeat.name))
+        rep_args = ['h', repeat.name]
+        if maxPerRow:
+            rep_args.append(maxPerRow)
+        new_kwargs.setdefault('repeat', Repeat(*rep_args))
     return Stat(
         title=title,
         dataSource=dataSource,
diff --git a/dashboards/dashboard_list.py b/dashboards/dashboard_list.py
index 7105adf..cf6c82c 100644
--- a/dashboards/dashboard_list.py
+++ b/dashboards/dashboard_list.py
@@ -214,12 +214,20 @@ def dashboard_general_infos():
                                             show_tag_values("", 'host'),
                                             dataSource)
 
+    benchmark_var = get_dashboard_variable_query('benchmark',
+                                                 show_tag_values(measurment_name, 'name'),
+                                                 dataSource,
+                                                 regex="/benchmark_(.*)_[^_]+/")
+
     def get_query(name_base: str):
+        conds = [f'"name" =~ /{name_base}/', f'"name" =~ /${host_var.name}/']
+        if name_base == "benchmark":
+            conds.append(f'"name" =~ /${benchmark_var.name}/')
         return Query(
             select_="duration",
             from_=measurment_name,
             where_=join_conditions(
-                [f'"name" =~ /{name_base}/', f'"name" =~ /${host_var.name}/'],
+                conds,
                 "AND"),
             group_by=['name'])
 
@@ -240,12 +248,15 @@ def dashboard_general_infos():
                                  gridPos=get_grid_pos(12, 24, 0, 13),
                                  format='s',
                                  alias="$tag_name")
-    panel_benchmark = get_stat_panel("Benchmark Runtime",
+    panel_benchmark = get_stat_panel("Runtime $benchmark",
                                      dataSource,
                                      get_query("benchmark"),
-                                     gridPos=get_grid_pos(30, 24, 0, 26),
+                                     gridPos=get_grid_pos(10, 24, 0, 26),
                                      format='s',
-                                     alias="$tag_name")
+                                     repeat=benchmark_var,
+                                     alias="$tag_name",
+                                     colorMode="background",
+                                     maxPerRow=2)
     return build_dashboard(options,
                            panels=[cpu_list, gpu_list, panel_build, panel_benchmark],
-                           templating=[host_var])
+                           templating=[host_var, benchmark_var])
-- 
GitLab