diff --git a/brian_dashboard_manager/grafana/provision.py b/brian_dashboard_manager/grafana/provision.py index 51ff6ee4bd8726c770f760afb511aff3ce56264a..ec76fb86ad120c01ce824c3208d606034908d1c9 100644 --- a/brian_dashboard_manager/grafana/provision.py +++ b/brian_dashboard_manager/grafana/provision.py @@ -139,7 +139,7 @@ DASHBOARDS = { SERVICE_DASHBOARDS = { 'MWS': { - 'tag': ['mws'], + 'tag': ['service', 'mws'], 'service_type': 'GEANT MANAGED WAVELENGTH SERVICE', 'folder_name': 'Managed Wavelength Service', 'interfaces': [], @@ -615,42 +615,20 @@ def _provision_service_dashboards(config, org_config, ds_name, token): :param token: a token_request object :return: generator of UIDs of dashboards that were created """ - interfaces = get_interfaces(config['inventory_provider']) services = fetch_services(config['reporting_provider']) - excluded_nrens = org_config['excluded_nrens'] excluded_folders = org_config.get('excluded_folders', {}) logger.info('Provisioning service-specific dashboards') - relevant_interfaces = list(filter(lambda x: _interfaces_to_keep(x, excluded_nrens), interfaces)) - for interface in relevant_interfaces: - interface['dashboards_info'] = list(filter( - lambda x: x['name'] != '', - interface['dashboards_info'] - )) - - # create a lookup index for interface data - interfaces_index = {f'{interface["router"]}###{interface["name"]}': interface for interface in relevant_interfaces} # loop over service dashboards and get service types we care about dash_service_types = {SERVICE_DASHBOARDS[dash]['service_type']: dash for dash in SERVICE_DASHBOARDS} - # loop over services and get relevant interfaces, append to dashboards + # loop over services and append to dashboards for service in services: if service['service_type'] in dash_service_types: dash = dash_service_types[service['service_type']] svcs = SERVICE_DASHBOARDS[dash]['services'] svcs.append(service) - # attach service interfaces - if len(service['endpoints']) == 0: - continue - ifaces = SERVICE_DASHBOARDS[dash]['interfaces'] - for endpoint in service['endpoints']: - if 'interface' in endpoint: - if_name = endpoint.get('interface') - router = endpoint.get('hostname') - ifc = interfaces_index.get(f'{router}###{if_name}') - if ifc: - ifaces.append(ifc) # provision dashboards and their folders with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor: @@ -916,11 +894,12 @@ def provision(config, raise_exceptions=False): 'GWS Indirect', 'GWS Direct', 'Aggregates', - 'EUMETSAT Multicast', - 'Managed Wavelength Service', + 'EUMETSAT Multicast' } folders_to_keep.update({dash['folder_name'] for dash in DASHBOARDS.values()}) + folders_to_keep.update({dash['folder_name'] + for dash in SERVICE_DASHBOARDS.values()}) ignored_folders = config.get('ignored_folders', []) folders_to_keep.update(ignored_folders) diff --git a/brian_dashboard_manager/templating/helpers.py b/brian_dashboard_manager/templating/helpers.py index 7061ec6ff303182f4ac0d4140c2d0f68140ff4f9..a5aa9e9ed6d8058af115767aaa4144e041a25b8c 100644 --- a/brian_dashboard_manager/templating/helpers.py +++ b/brian_dashboard_manager/templating/helpers.py @@ -398,8 +398,7 @@ def get_service_data(service_type, services, interfaces, excluded_dashboards): for customer, services in customers.items(): dashboard = result.setdefault(customer, { - 'SERVICES': [], - 'PHYSICAL': [] + 'SERVICES': [] }) for service in services: @@ -422,58 +421,13 @@ def get_service_data(service_type, services, interfaces, excluded_dashboards): router = router.replace('.geant.net', '') title = f'{router} - {{}} - {if_name} - {name} ({sid})' - has_v6_interface = False - for interface in _interfaces: - if 'addresses' in interface: - for address in interface['addresses']: - if address.find(':') > 0: - has_v6_interface = True - break - dashboard['SERVICES'].append({ 'measurement': measurement, 'title': title, 'scid': scid, - 'sort': (sid[:2], name), - 'has_v6': has_v6_interface + 'sort': (sid[:2], name) }) - for interface in interfaces: - - description = interface['description'].strip() - interface_name = interface['name'] - host = interface['router'] - - router = host.replace('.geant.net', '') - panel_title = f"{router} - {{}} - {interface_name} - {description}" - - dashboards_info = interface['dashboards_info'] - - for info in dashboards_info: - dashboard_name = info['name'] - - dashboard = result.get(dashboard_name, { - 'SERVICES': [], - 'PHYSICAL': [] - }) - - if info['interface_type'] == 'AGGREGATE': - # link aggregates are also shown - # under the physical dropdown - dashboard['PHYSICAL'].append({ - 'title': panel_title, - 'hostname': host, - 'interface': interface_name - }) - elif info['interface_type'] == 'PHYSICAL': - dashboard['PHYSICAL'].append({ - 'title': panel_title, - 'hostname': host, - 'interface': interface_name - }) - - result[dashboard_name] = dashboard - for customer in list(result.keys()): lengths = [len(val) for val in result[customer].values()] if sum(lengths) == 0: @@ -939,17 +893,10 @@ def get_service_dashboard_data_single(data, datasource, tag): service_panels = panel_gen( sorted(dash['SERVICES'], key=sort_key), datasource) - iface_dropdown = create_dropdown_panel('Interfaces', **next(gridPos)) - phys_panels = panel_gen(dash['PHYSICAL'], datasource, True) - dropdown_groups = [{ 'dropdown': services_dropdown, 'panels': service_panels, }] - dropdown_groups.append({ - 'dropdown': iface_dropdown, - 'panels': phys_panels, - }) result = { 'nren_name': service_name,