Skip to content
Snippets Groups Projects
Commit 74d24284 authored by Sam Roberts's avatar Sam Roberts
Browse files

remove interfaces from service-type dashboards

parent e064843d
No related branches found
No related tags found
1 merge request!11Feature/pol1 700 mws page
......@@ -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)
......
......@@ -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,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment