diff --git a/brian_dashboard_manager/templating/helpers.py b/brian_dashboard_manager/templating/helpers.py index 2e0089a1b535152a7ad2924b81108b01e5299edd..96e2c4399126cdf1cf28db13cbdec51e89c60dcc 100644 --- a/brian_dashboard_manager/templating/helpers.py +++ b/brian_dashboard_manager/templating/helpers.py @@ -486,7 +486,7 @@ def get_panel_fields(panel, panel_type, datasource): }) -def default_interface_panel_generator(gridPos): +def default_interface_panel_generator(gridPos, ipv6_only=False): """ Helper for generating panel definitions for dashboards. @@ -494,6 +494,7 @@ def default_interface_panel_generator(gridPos): panel data and panel type. :param gridPos: generator for grid positions + :param ipv6_only: whether to use IPv6 traffic exclusively or not :return: function that generates panel definitions """ @@ -515,20 +516,28 @@ def default_interface_panel_generator(gridPos): result = [] for panel in panels: - result.append(get_panel_fields({ - **panel, - **next(gridPos) - }, 'traffic', datasource)) - if panel.get('has_v6', False): + if ipv6_only: + if panel.get('has_v6', False): + continue result.append(get_panel_fields({ **panel, **next(gridPos) }, 'IPv6', datasource)) - if errors: + else: result.append(get_panel_fields({ **panel, **next(gridPos) - }, 'errors', datasource)) + }, 'traffic', datasource)) + if panel.get('has_v6', False): + result.append(get_panel_fields({ + **panel, + **next(gridPos) + }, 'IPv6', datasource)) + if errors: + result.append(get_panel_fields({ + **panel, + **next(gridPos) + }, 'errors', datasource)) return result @@ -567,6 +576,7 @@ def get_nren_dashboard_data_single(data, datasource, tag): agg_panels = [] panel_gen = default_interface_panel_generator(gridPos) + panel_ipv6_gen = default_interface_panel_generator(gridPos, ipv6_only=True) services_dropdown = create_dropdown_panel('Services', **next(gridPos)) @@ -578,6 +588,12 @@ def get_nren_dashboard_data_single(data, datasource, tag): service_panels = panel_gen( sorted(dash['SERVICES'], key=sort_key), datasource) + + services_ipv6_dropdown = create_dropdown_panel('Services - IPv6 Only', **next(gridPos)) + service_ipv6_panels = panel_ipv6_gen( + sorted(dash['SERVICES'], key=sort_key), datasource + ) + iface_dropdown = create_dropdown_panel('Interfaces', **next(gridPos)) phys_panels = panel_gen(dash['PHYSICAL'], datasource, True) @@ -590,6 +606,10 @@ def get_nren_dashboard_data_single(data, datasource, tag): 'dropdown': services_dropdown, 'panels': service_panels, }, + { + 'dropdown': services_ipv6_dropdown, + 'panels': service_ipv6_panels + }, { 'dropdown': iface_dropdown, 'panels': phys_panels, @@ -769,7 +789,7 @@ def get_aggregate_dashboard_data(title, remotes, datasource, tag): ingress and one for egress. :param title: title for the dashboard - :param targets: dictionary of targets for the panels, the key is the + :param remotes: dictionary of targets for the panels, the key is the remote (usually a customer) and the value is a list of targets for that remote. A single target represents how to fetch data for one interface.