From d3d947e84ccae19364133eaa69d83b993505a33a Mon Sep 17 00:00:00 2001
From: Sam Roberts <sam.roberts@geant.org>
Date: Fri, 4 Oct 2024 14:35:49 +0100
Subject: [PATCH] fix EAP aggregate not being populated

---
 brian_dashboard_manager/grafana/provision.py | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/brian_dashboard_manager/grafana/provision.py b/brian_dashboard_manager/grafana/provision.py
index ac7b1be..55faf80 100644
--- a/brian_dashboard_manager/grafana/provision.py
+++ b/brian_dashboard_manager/grafana/provision.py
@@ -195,6 +195,11 @@ AGG_DASHBOARDS = {
         'dashboard_name': 'ANA',
         'interfaces': []
     },
+    'EAP': {
+        'tag': 'eap',
+        'dashboard_name': 'EAP Aggregate',
+        'interfaces': []
+    }
 }
 
 NREN_CATEGORIES = {
@@ -470,6 +475,17 @@ def _provision_interfaces(config, org_config, ds_name, token):
                 ifaces = AGG_DASHBOARDS[dash_name]['interfaces']
                 ifaces.append(iface)
 
+        # aggregate dashboards based on dashboards_info
+        # there is no way for inventory provider to identify an interface as
+        # belonging to an EAP NREN at the level 'dashboards' is set
+        # (based on description and without access to service data)
+        # so we have to do this as an extra check on 'dashboards_info'
+        for dashboard in iface['dashboards_info']:
+            dash_name = dashboard['name']
+            if dash_name in AGG_DASHBOARDS:
+                ifaces = AGG_DASHBOARDS[dash_name]['interfaces']
+                ifaces.append(iface)
+
     # provision dashboards and their folders
     with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:
         provisioned = []
-- 
GitLab