From cfffc49b41980e67cd799bf469baac7615574680 Mon Sep 17 00:00:00 2001 From: Bjarke Madsen <bjarke.madsen@geant.org> Date: Mon, 22 Aug 2022 16:20:48 +0200 Subject: [PATCH] Update method for excluding dashboards under NREN Access --- brian_dashboard_manager/grafana/provision.py | 19 +++++++++---------- brian_dashboard_manager/templating/helpers.py | 4 +++- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/brian_dashboard_manager/grafana/provision.py b/brian_dashboard_manager/grafana/provision.py index a51b639..77544ab 100644 --- a/brian_dashboard_manager/grafana/provision.py +++ b/brian_dashboard_manager/grafana/provision.py @@ -176,8 +176,10 @@ def provision_folder(token_request, folder_name, dash, Function to provision dashboards within a folder. """ - # def _check_valid(interface): - # return interface['dashboard_info']['name'] != '' + if not isinstance(excluded_dashboards, (list, set)): + excluded_dashboards = set() + else: + excluded_dashboards = set([s.lower() for s in excluded_dashboards]) folder = find_folder(token_request, folder_name) tag = dash['tag'] @@ -194,7 +196,8 @@ def provision_folder(token_request, folder_name, dash, is_nren = folder_name == 'NREN Access' if is_nren: services = fetch_services(config['reporting_provider']) - data = get_nren_interface_data(services, interfaces) + data = get_nren_interface_data( + services, interfaces, excluded_dashboards) dash_data = get_nren_dashboard_data(data, ds_name, tag) else: data = get_interface_data(interfaces) @@ -204,11 +207,6 @@ def provision_folder(token_request, folder_name, dash, tag=tag, errors=errors) - if not isinstance(excluded_dashboards, list): - excluded_dashboards = [] - else: - excluded_dashboards = [s.lower() for s in excluded_dashboards] - provisioned = [] with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor: @@ -273,6 +271,9 @@ def is_excluded_folder(org_config, folder_name): def excluded_folder_dashboards(org_config, folder_name): excluded_folders = org_config.get('excluded_folders', {}) excluded = excluded_folders.get(folder_name, []) + if folder_name == 'NREN Access': + excluded_nrens = org_config.get('excluded_nrens', []) + excluded = list(set(excluded).union(set(excluded_nrens))) return excluded if isinstance(excluded, list) else [] @@ -631,8 +632,6 @@ def provision(config): ds_name = datasource.get('name', 'PollerInfluxDB') managed_dashboards = itertools.chain( - # _provision_service_dashboards( - # config, org_config, ds_name, token_request), _provision_interfaces( config, org_config, ds_name, token_request), _provision_gws_indirect( diff --git a/brian_dashboard_manager/templating/helpers.py b/brian_dashboard_manager/templating/helpers.py index ca9323c..4dba5af 100644 --- a/brian_dashboard_manager/templating/helpers.py +++ b/brian_dashboard_manager/templating/helpers.py @@ -64,7 +64,7 @@ def letter_generator(): yield result -def get_nren_interface_data(services, interfaces): +def get_nren_interface_data(services, interfaces, excluded_dashboards): """ Helper for grouping interfaces into groups of NRENs Extracts information from interfaces to be used in panels. @@ -78,6 +78,8 @@ def get_nren_interface_data(services, interfaces): for service in services: _customers = service.get('customers') for cust in _customers: + if cust.lower() in excluded_dashboards: + continue customers[cust].append(service) for customer, services in customers.items(): -- GitLab