diff --git a/brian_dashboard_manager/grafana/provision.py b/brian_dashboard_manager/grafana/provision.py index a51b639d2e939972a1a0a971078363401eaf3daa..77544abc3f22ab3d05571a840fa684a9c1de7161 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 ca9323c1145c57def56c2f6d47625da56c2f30f1..4dba5afbf768481c17f485755842ee0b29281aa8 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():