From 921ee88746582e1c76e575e97af900ae6b69e489 Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Thu, 7 Oct 2021 15:12:48 +0200
Subject: [PATCH] added a provisioning stanza for eumetsat multicast

---
 brian_dashboard_manager/grafana/provision.py | 26 ++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/brian_dashboard_manager/grafana/provision.py b/brian_dashboard_manager/grafana/provision.py
index d9a608d..f96acad 100644
--- a/brian_dashboard_manager/grafana/provision.py
+++ b/brian_dashboard_manager/grafana/provision.py
@@ -24,7 +24,8 @@ from brian_dashboard_manager.grafana.datasource import \
 from brian_dashboard_manager.grafana.folder import find_folder, \
     delete_folder, get_folders
 from brian_dashboard_manager.inventory_provider.interfaces import \
-    get_gws_direct, get_gws_indirect, get_interfaces
+    get_gws_direct, get_gws_indirect, get_interfaces, \
+    get_eumetsat_multicast_subscriptions
 
 from brian_dashboard_manager.templating.helpers import \
     get_aggregate_dashboard_data, get_interface_data, \
@@ -33,7 +34,7 @@ from brian_dashboard_manager.templating.helpers import \
 
 from brian_dashboard_manager.templating.gws import generate_gws, \
     generate_indirect
-
+from brian_dashboard_manager.templating.eumetsat import generate_eumetsat_multicast
 from brian_dashboard_manager.templating.render import render_dashboard
 
 logger = logging.getLogger(__name__)
@@ -409,6 +410,27 @@ def provision(config):
 
                 update_dash_list(provisioned)
 
+        # fetch EUMETSAT multicast provision related dashboards
+        logger.info('Provisioning EUMETSAT Multicast dashboards')
+        folder_name = 'EUMETSAT Multicast'
+        exclude_eumet_mc = excluded_folders.get(folder_name, False)
+        if isinstance(exclude_eumet_mc, bool) and exclude_eumet_mc:
+            # don't provision EUMETSAT Multicast folder
+            delete_folder(token_request, folder_name)
+        else:
+            folder = find_folder(token_request, folder_name)
+            with ThreadPoolExecutor(max_workers=4) as executor:
+                subscriptions = get_eumetsat_multicast_subscriptions(config['inventory_provider'])
+                provisioned = []
+
+                for dashboard in generate_eumetsat_multicast(subscriptions, ds_name):
+                    rendered = render_dashboard(dashboard)
+                    provisioned.append(executor.submit(create_dashboard,
+                                                       token_request,
+                                                       rendered, folder['id']))
+
+                update_dash_list(provisioned)
+
         exclude_agg = excluded_folders.get('Aggregates', [])
 
         if isinstance(exclude_agg, bool) and exclude_agg:
-- 
GitLab