From c603f52f9ea1256382d43f59b9ef21d52899bd81 Mon Sep 17 00:00:00 2001
From: Bjarke Madsen <bjarke@nordu.net>
Date: Tue, 5 Nov 2024 17:26:06 +0100
Subject: [PATCH] reuse data from api calls

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

diff --git a/brian_dashboard_manager/grafana/provision.py b/brian_dashboard_manager/grafana/provision.py
index 69da36b..a034dc6 100644
--- a/brian_dashboard_manager/grafana/provision.py
+++ b/brian_dashboard_manager/grafana/provision.py
@@ -390,7 +390,7 @@ def _interfaces_to_keep(interface, excluded_nrens):
     return should_keep
 
 
-def _provision_interfaces(thread_executor: ThreadPoolExecutor, config, org_config, ds_name, token):
+def _provision_interfaces(thread_executor: ThreadPoolExecutor, config, org_config, ds_name, token, interfaces, services, regions):
     """
     This function is used to provision most dashboards,
     overwriting existing ones.
@@ -403,10 +403,6 @@ def _provision_interfaces(thread_executor: ThreadPoolExecutor, config, org_confi
     :return: generator of dashboards that were created
     """
 
-    interfaces = get_interfaces(config['inventory_provider'])
-    services = fetch_services(config['reporting_provider'])
-    regions = get_nren_regions(config['inventory_provider'])
-
     excluded_nrens = org_config['excluded_nrens']
     excluded_folders = org_config.get('excluded_folders', {})
 
@@ -779,7 +775,7 @@ def _provision_orgs(config):
     return all_orgs
 
 
-def _provision_org(config, org, org_config):
+def _provision_org(config, org, org_config, interfaces, services, regions):
     try:
         request = AdminRequest(**config)
         org_id = org['id']
@@ -812,7 +808,7 @@ def _provision_org(config, org, org_config):
 
             # call to list is needed to queue up the futures
             managed_dashboards = list(itertools.chain(
-                _provision_interfaces(*args),
+                _provision_interfaces(*args, interfaces, services, regions),
                 _provision_gws_indirect(*args),
                 _provision_gws_direct(*args),
                 _provision_eumetsat_multicast(*args),
@@ -901,9 +897,11 @@ def provision(config):
             return None
 
     orgs = list(filter(lambda t: t[1] is not None, [(org, _find_org_config(org)) for org in all_orgs]))
-
+    interfaces = get_interfaces(config['inventory_provider'])
+    services = fetch_services(config['reporting_provider'])
+    regions = get_nren_regions(config['inventory_provider'])
     for org, org_config in orgs:
-        _provision_org(config, org, org_config)
+        _provision_org(config, org, org_config, interfaces, services, regions)
 
     logger.info(f'Time to complete: {time.time() - start}')
 
-- 
GitLab