Skip to content
Snippets Groups Projects
Commit dbd2732c authored by Maryam Mokhtarifar's avatar Maryam Mokhtarifar
Browse files

Implement get_router_dashboard_data and _provision_vlan_dashboards

parent 4497440e
No related branches found
No related tags found
1 merge request!16Implement get_router_dashboard_data and _provision_vlan_dashboards
...@@ -33,7 +33,7 @@ from brian_dashboard_manager.templating.helpers import \ ...@@ -33,7 +33,7 @@ from brian_dashboard_manager.templating.helpers import \
get_nren_interface_data, get_dashboard_data, \ get_nren_interface_data, get_dashboard_data, \
get_nren_dashboard_data, get_aggregate_interface_data, \ get_nren_dashboard_data, get_aggregate_interface_data, \
get_nren_interface_data_old, get_re_peer_dashboard_data, get_re_peer_interface_data, get_service_data, \ get_nren_interface_data_old, get_re_peer_dashboard_data, get_re_peer_interface_data, get_service_data, \
get_service_dashboard_data, get_aggregate_service_data get_service_dashboard_data, get_aggregate_service_data, get_router_dashboard_data, get_dashboard_data_dropdown
from brian_dashboard_manager.templating.gws import generate_gws, generate_indirect from brian_dashboard_manager.templating.gws import generate_gws, generate_indirect
from brian_dashboard_manager.templating.eumetsat import generate_eumetsat_multicast from brian_dashboard_manager.templating.eumetsat import generate_eumetsat_multicast
...@@ -501,8 +501,25 @@ def _provision_vlan_dashboards(thread_executor: ThreadPoolExecutor, config, org_ ...@@ -501,8 +501,25 @@ def _provision_vlan_dashboards(thread_executor: ThreadPoolExecutor, config, org_
folder_name = "VLAN Interfaces" # hardcoded, keep this in sync with the folder name specified in folders_to_keep folder_name = "VLAN Interfaces" # hardcoded, keep this in sync with the folder name specified in folders_to_keep
logger.info(f'Provisioning {org_config["name"]}/{folder_name} dashboards') logger.info(f'Provisioning {org_config["name"]}/{folder_name} dashboards')
excluded_folders = org_config.get('excluded_folders', {})
if is_excluded_folder(excluded_folders, folder_name):
delete_folder(token, title=folder_name)
else:
folder = find_folder(token, title=folder_name)
if not folder:
raise Exception(f'Folder {folder_name} not found')
folder_dashboards_by_name = list_folder_dashboards(token, folder['uid'])
yield vlan_data = get_router_dashboard_data(interfaces)
provisioned = []
for dashboard in get_dashboard_data_dropdown(vlan_data, ds_name, 'vlandash'):
rendered = render_simple_dashboard(**dashboard)
provisioned.append(
thread_executor.submit(create_dashboard, token, rendered, folder['id'], folder_dashboards_by_name)
)
yield from provisioned
def _provision_gws_indirect(thread_executor: ThreadPoolExecutor, config, org_config, ds_name, token): def _provision_gws_indirect(thread_executor: ThreadPoolExecutor, config, org_config, ds_name, token):
......
...@@ -11,6 +11,8 @@ from itertools import product ...@@ -11,6 +11,8 @@ from itertools import product
from functools import partial, reduce from functools import partial, reduce
from string import ascii_uppercase from string import ascii_uppercase
from docutils.nodes import description
from brian_dashboard_manager.templating.render import create_panel, \ from brian_dashboard_manager.templating.render import create_panel, \
create_panel_target, create_dropdown_panel create_panel_target, create_dropdown_panel
...@@ -543,9 +545,31 @@ def get_router_dashboard_data(interfaces): ...@@ -543,9 +545,31 @@ def get_router_dashboard_data(interfaces):
:return: dictionary of routers (dashboards) and their interface data. :return: dictionary of routers (dashboards) and their interface data.
""" """
# TODO: implement result = {}
filtered_interfaces = [interface for interface in interfaces if interface.get('vlan_type') in {'TRUNK', 'VLAN'}]
sorted_interfaces = sorted(filtered_interfaces, key=lambda x: x['name'])
return {} for interface in sorted_interfaces:
description = interface['description'].strip()
interface_name = interface['name']
host = interface['router']
router = host.replace('.geant.net', '')
panel_title = f'{router} - {{}} - {interface_name} - {description}'
dashboard_name = interface['router']
dashboard = result.get(dashboard_name, [])
dashboard.append({
'title': panel_title,
'interface': interface_name, # TODO NAME or interface data?
'hostname': host
})
result[dashboard_name] = dashboard
return result
def get_interface_data(interfaces): def get_interface_data(interfaces):
...@@ -1130,7 +1154,6 @@ def get_dashboard_data_dropdown( ...@@ -1130,7 +1154,6 @@ def get_dashboard_data_dropdown(
def get_nren_dashboard_data(data, datasource, tag): def get_nren_dashboard_data(data, datasource, tag):
func = partial( func = partial(
get_dashboard_with_agg_data_single, get_dashboard_with_agg_data_single,
datasource=datasource, datasource=datasource,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment