diff --git a/brian_dashboard_manager/grafana/provision.py b/brian_dashboard_manager/grafana/provision.py index bf48ce0b6913aae0f77e1263cb655e978ce5c381..2e363e146594bf8d310d1c0a95c4fcd30fa75b63 100644 --- a/brian_dashboard_manager/grafana/provision.py +++ b/brian_dashboard_manager/grafana/provision.py @@ -59,7 +59,7 @@ DASHBOARDS = { }, 'EAP': { 'tag': ['eap'], - 'folder_name': 'EAP', + 'folder_name': 'EAP Access', 'interfaces': [] }, 'RE_PEER': { @@ -196,6 +196,12 @@ AGG_DASHBOARDS = { }, } +NREN_CATEGORIES = { + 'EAP': { + 'folder_name': 'EAP Access' + } +} + def provision_folder(token_request, folder_name, dash, services, ds_name, excluded_dashboards): @@ -228,26 +234,49 @@ def provision_folder(token_request, folder_name, dash, services, ) ) + def _get_nren_category(_folder_name): + for category in NREN_CATEGORIES: + if _folder_name == NREN_CATEGORIES[category]['folder_name']: + return category + return None + # dashboard should include error panels errors = dash.get('errors', False) is_nren_legacy = folder_name == "NREN Access LEGACY" is_nren = folder_name == "NREN Access" - is_eap = folder_name == "EAP" # POL1-430 + nren_category = _get_nren_category(folder_name) # will be None if the NREN is not in a category is_re_peer = folder_name == "RE Peer" is_service = 'service_type' in dash - has_aggregate_panels = is_nren or is_nren_legacy or is_eap or is_re_peer or is_service + has_aggregate_panels = is_nren or is_nren_legacy or nren_category or is_re_peer or is_service + + def _filter_nren_interface_data_by_tag(tag=None): + raw_data = get_nren_interface_data(services, interfaces, excluded_dashboards) + all_tags = NREN_CATEGORIES.keys() + if tag is None: + # only return interfaces that DO NOT have a category tag (uncategorized NRENs) + for interface_key, interface in raw_data.items(): + tags = interface.get('TAGS', set()) + not_parented = True + for interface_tag in tags: + if interface_tag in all_tags: + not_parented = False + break + if not_parented: + yield interface_key, interface + else: + for interface_key, interface in raw_data.items(): + if tag in interface.get('TAGS', set()): + yield interface_key, interface if is_nren_legacy: data = get_nren_interface_data_old(interfaces) dash_data = get_nren_dashboard_data(data, ds_name, tag) elif is_nren: - data = {k: v for k, v in get_nren_interface_data( - services, interfaces, excluded_dashboards).items() if 'EAP' not in v['TAGS']} + data = dict(_filter_nren_interface_data_by_tag(None)) dash_data = get_nren_dashboard_data(data, ds_name, tag) - elif is_eap: - data = {k: v for k, v in get_nren_interface_data( - services, interfaces, excluded_dashboards).items() if 'EAP' in v['TAGS']} + elif nren_category: + data = dict(_filter_nren_interface_data_by_tag(nren_category)) dash_data = get_nren_dashboard_data(data, ds_name, tag) elif is_re_peer: data = get_re_peer_interface_data(interfaces)