diff --git a/brian_dashboard_manager/dashboards/services_ias.json b/brian_dashboard_manager/dashboards/services_ias.json index 94964d84958a26724cf70b3a31f88a487614c1b0..d0644528905b1caada0daad603c263c0cbf58f23 100755 --- a/brian_dashboard_manager/dashboards/services_ias.json +++ b/brian_dashboard_manager/dashboards/services_ias.json @@ -59,7 +59,7 @@ "search": true, "starred": false, "tags": [ - "IAS_UPSTREAM" + "UPSTREAM" ], "targets": [ { diff --git a/brian_dashboard_manager/grafana/provision.py b/brian_dashboard_manager/grafana/provision.py index 57b85d05b4502012bedd2b11fa4866be583568ab..90eae8885608bf52e9ad553356d0252ec612ce0e 100644 --- a/brian_dashboard_manager/grafana/provision.py +++ b/brian_dashboard_manager/grafana/provision.py @@ -20,7 +20,7 @@ from brian_dashboard_manager.templating.nren_access import generate_nrens from brian_dashboard_manager.templating.helpers import is_re_customer, \ is_cls_peer, is_cls, is_ias_customer, is_ias_private, is_ias_public, \ is_ias_upstream, is_ias_peer, is_lag_backbone, is_nren, is_phy_upstream, \ - is_re_peer, is_gcs, is_geantopen, is_l2circuit, is_lhcone_peer, \ + is_re_peer, is_gcs, is_cae1, is_geantopen, is_l2circuit, is_lhcone_peer, \ is_lhcone_customer, is_lhcone, is_mdvpn, get_aggregate_dashboard_data, \ get_interface_data, parse_backbone_name, parse_phy_upstream_name, \ get_dashboard_data, get_aggregate_interface_data @@ -196,11 +196,11 @@ def provision(config): }, 'IAS UPSTREAM': { 'predicate': is_ias_upstream, - 'tag': 'IAS_UPSTREAM' + 'tag': ['IAS_UPSTREAM', 'UPSTREAM'] }, 'GWS PHY Upstream': { 'predicate': is_phy_upstream, - 'tag': 'GWS_UPSTREAM', + 'tag': ['GWS_UPSTREAM', 'UPSTREAM'], 'errors': True, 'parse_func': parse_phy_upstream_name } @@ -233,10 +233,10 @@ def provision(config): 'predicate': is_lhcone, 'tag': 'lhcone', }, - # 'CAE1': { - # 'predicate': is_cae1, - # 'tag': 'cae', - # } + 'CAE1': { + 'predicate': is_cae1, + 'tag': 'cae', + } } with ProcessPoolExecutor(max_workers=4) as executor: @@ -264,7 +264,7 @@ def provision(config): if dashboard['title'] not in excluded_dashboards: if dashboard['title'].lower() == 'home': dashboard['uid'] = 'home' - create_dashboard(token_request, dashboard) + create_dashboard(token_request, dashboard) # Home dashboard is always called "Home" # Make sure it's set for the organization diff --git a/brian_dashboard_manager/templating/helpers.py b/brian_dashboard_manager/templating/helpers.py index 9f9adf29cb3d2094dcaa2943b5e72bf729a2d5c7..1171c9fc88c0f39837382a46aeb6c7e575698555 100644 --- a/brian_dashboard_manager/templating/helpers.py +++ b/brian_dashboard_manager/templating/helpers.py @@ -113,7 +113,10 @@ def is_lag_backbone(interface): def is_cae1(interface): - return interface.get('router', '').lower() == 'mx1.lon.uk.geant.net' + iface_regex = r'^ae12(\.\d+|$)$' + is_router = interface.get('router', '').lower() == 'mx1.lon.uk.geant.net' + is_iface = re.match(iface_regex, interface.get('name')) + return is_router and is_iface def parse_backbone_name(description, *args, **kwargs): @@ -329,14 +332,19 @@ def get_dashboard_data(data, datasource, tag, errors=False): return result for peer, panels in data.items(): - - yield { + result = { 'title': peer, 'datasource': datasource, 'panels': get_panel_definitions(panels, datasource), - 'tag': tag } + if isinstance(tag, list): + result['tags'] = tag + else: + result['tag'] = tag + + yield result + def create_aggregate_panel(title, gridpos, targets, datasource): @@ -409,9 +417,15 @@ def get_aggregate_dashboard_data(title, targets, datasource, tag): title + f' - {target}', gridPos, targets[target], datasource) panels.extend([_in, _out]) - return { + result = { 'title': title, 'datasource': datasource, 'panels': panels, - 'tag': tag + } + if isinstance(tag, list): + result['tags'] = tag + else: + result['tag'] = tag + + return result diff --git a/brian_dashboard_manager/templating/templates/shared/dashboard.json.j2 b/brian_dashboard_manager/templating/templates/shared/dashboard.json.j2 index 3201b6fc060a005e093810a2336acd90eabb340f..1c6564d719aeacd1bec7f47cdacf74ffb465689d 100644 --- a/brian_dashboard_manager/templating/templates/shared/dashboard.json.j2 +++ b/brian_dashboard_manager/templating/templates/shared/dashboard.json.j2 @@ -17,7 +17,15 @@ "graphTooltip": 0, "schemaVersion": 27, "style": "dark", + {% if not tags %} "tags": ["{{ tag }}"], + {% else %} + "tags": [ + {% for tag in tags %} + "{{ tag }}"{{ "," if not loop.last }} + {% endfor %} + ], + {% endif %} "templating": { "list": [] },