diff --git a/brian_dashboard_manager/grafana/provision.py b/brian_dashboard_manager/grafana/provision.py index 6e784d7a4f8f3f0b3c62ce13c21cb0021c86e997..2bcf558da303a54b1855fd8361aaa55e1ae3ef9d 100644 --- a/brian_dashboard_manager/grafana/provision.py +++ b/brian_dashboard_manager/grafana/provision.py @@ -303,18 +303,20 @@ def _provision_interfaces(config, org_config, ds_name, token): excluded_nrens = org_config['excluded_nrens'] - def excluded(interface): - desc = interface['description'].lower() - lab = 'lab.office' in interface['router'].lower() - to_exclude = any(nren.lower() in desc for nren in excluded_nrens) - if not (to_exclude or lab): - if 'dashboards_info' not in interface: - to_exclude = True - logger.info(f'No "dashboards_info" for ' - f'{interface["router"]}:{interface["name"]}') - return not (to_exclude or lab) - - relevant_interfaces = list(filter(excluded, interfaces)) + def interfaces_to_keep(interface): + dash_info = interface.get('dashboards_info') + if dash_info is None: + logger.info(f'No "dashboards_info" for ' + f'{interface["router"]}:{interface["name"]}') + # throw it away + return False + dashboards = {nren['name'].lower() for nren in dash_info} + is_lab_router = 'lab.office' in interface['router'].lower() + should_keep = not (is_lab_router or any( + nren.lower() in dashboards for nren in excluded_nrens)) + return should_keep + + relevant_interfaces = list(filter(interfaces_to_keep, interfaces)) for interface in relevant_interfaces: interface['dashboards_info'] = list(filter( lambda x: x['name'] != '',