From 9f915a21ff558f8448c9c0317920903d9816d769 Mon Sep 17 00:00:00 2001 From: Bjarke Madsen <bjarke.madsen@geant.org> Date: Mon, 17 May 2021 12:27:15 +0200 Subject: [PATCH] Only add aggregate panels if targets exist for it --- .../templating/nren_access.py | 21 +- .../nren_access/nren-dashboard.json.j2 | 195 +----------------- 2 files changed, 16 insertions(+), 200 deletions(-) diff --git a/brian_dashboard_manager/templating/nren_access.py b/brian_dashboard_manager/templating/nren_access.py index 17bb8eb..67ba24c 100644 --- a/brian_dashboard_manager/templating/nren_access.py +++ b/brian_dashboard_manager/templating/nren_access.py @@ -5,8 +5,7 @@ from concurrent.futures import ProcessPoolExecutor from brian_dashboard_manager.templating.render import create_dropdown_panel from brian_dashboard_manager.templating.helpers import \ is_aggregate_interface, is_logical_interface, is_physical_interface, \ - num_generator, gridPos_generator, get_aggregate_targets, \ - get_panel_fields + num_generator, gridPos_generator, get_panel_fields, create_aggregate_panel def get_nrens(interfaces): @@ -58,9 +57,7 @@ def get_nrens(interfaces): return result -# start IDs from 3 since aggregate -# panels have hardcoded IDs (1, 2). -id_gen = num_generator(start=3) +id_gen = num_generator(start=1) # aggregate panels have y=0, start generating at 1*height gridPos = gridPos_generator(id_gen, start=1) @@ -81,7 +78,16 @@ def get_panel_definitions(panels, datasource, errors=False): def build_data(nren, data, datasource): - agg_ingress, agg_egress = get_aggregate_targets(data['AGGREGATES']) + global gridPos + if len(data['AGGREGATES']) > 0: + agg_panels = create_aggregate_panel( + f'Aggregate - {nren}', + gridPos_generator(id_gen, agg=True), + data['AGGREGATES'], datasource) + else: + # if there's no aggregate panel(s), start other stuff at y=0. + gridPos = gridPos_generator(id_gen, start=0) + agg_panels = [] services_dropdown = create_dropdown_panel('Services', **next(gridPos)) service_panels = get_panel_definitions(data['SERVICES'], datasource) iface_dropdown = create_dropdown_panel('Interfaces', **next(gridPos)) @@ -90,8 +96,7 @@ def build_data(nren, data, datasource): return { 'nren_name': nren, 'datasource': datasource, - 'ingress_aggregate_targets': agg_ingress, - 'egress_aggregate_targets': agg_egress, + 'aggregate_panels': agg_panels, 'dropdown_groups': [ { 'dropdown': services_dropdown, diff --git a/brian_dashboard_manager/templating/templates/nren_access/nren-dashboard.json.j2 b/brian_dashboard_manager/templating/templates/nren_access/nren-dashboard.json.j2 index bca5b47..76b7671 100644 --- a/brian_dashboard_manager/templating/templates/nren_access/nren-dashboard.json.j2 +++ b/brian_dashboard_manager/templating/templates/nren_access/nren-dashboard.json.j2 @@ -31,198 +31,9 @@ "version": 1, "links": [], "panels": [ - { - "aliasColors": {}, - "bars": false, - "collapsed": null, - "dashLength": 10, - "dashes": false, - "datasource": "{{ datasource }}", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 10, - "gridPos": { - "h": 12, - "w": 12, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 1, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "search": null, - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "tags": null, - "targets": [ - {% for target in ingress_aggregate_targets %} - {{ target }}{{ "," if not loop.last }} - {% endfor %} - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Aggregate - {{ nren_name }} - ingress", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": null - }, - "yaxes": [ - { - "format": "bps", - "label": "bits per second", - "logBase": 1, - "max": null, - "min": "", - "show": true - }, - { - "format": "bps", - "label": "bits per second", - "logBase": 1, - "max": null, - "min": "", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "collapsed": null, - "dashLength": 10, - "dashes": false, - "datasource": "{{ datasource }}", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 10, - "gridPos": { - "h": 12, - "w": 12, - "x": 12, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "search": null, - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "tags": null, - "targets": [ - {% for target in egress_aggregate_targets %} - {{ target }}{{ "," if not loop.last }} - {% endfor %} - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Aggregate - {{ nren_name }} - egress", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": null - }, - "yaxes": [ - { - "format": "bps", - "label": "bits per second", - "logBase": 1, - "max": null, - "min": "", - "show": true - }, - { - "format": "bps", - "label": "bits per second", - "logBase": 1, - "max": null, - "min": "", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, + {% for panel in aggregate_panels %} + {{ panel }}, + {% endfor %} {% for group in dropdown_groups %} {{ group.dropdown }} {% if group.panels|length > 0 %} -- GitLab