Skip to content
Snippets Groups Projects
Commit 2dd1e273 authored by Release Webservice's avatar Release Webservice
Browse files

Finished release 0.35.

parents 84318e8a 664201f4
Branches
Tags 0.35
No related merge requests found
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"id": 454,
"links": [],
"panels": [
{
"datasource": null,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"folderId": null,
"gridPos": {
"h": 25,
"w": 24,
"x": 0,
"y": 0
},
"headings": false,
"id": 2,
"limit": 100,
"pluginVersion": "7.1.4",
"query": "",
"recent": false,
"search": true,
"starred": false,
"tags": [
"GBS_10G"
],
"targets": [
{
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
}
],
"timeFrom": null,
"timeShift": null,
"title": "",
"type": "dashlist"
}
],
"schemaVersion": 26,
"style": "dark",
"tags": [
"services"
],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
]
},
"timezone": "",
"title": "GÉANT 10G Guaranteed Bandwidth Service",
"version": 1
}
...@@ -123,6 +123,11 @@ DASHBOARDS = { ...@@ -123,6 +123,11 @@ DASHBOARDS = {
'errors': True, 'errors': True,
'folder_name': 'GWS PHY Upstream', 'folder_name': 'GWS PHY Upstream',
'interfaces': [] 'interfaces': []
},
'GBS_10G': {
'tag': 'GBS_10G',
'folder_name': '10G Guaranteed Bandwidth Service',
'interfaces': []
} }
} }
...@@ -155,6 +160,7 @@ AGG_DASHBOARDS = { ...@@ -155,6 +160,7 @@ AGG_DASHBOARDS = {
'COPERNICUS': { 'COPERNICUS': {
'tag': 'copernicus', 'tag': 'copernicus',
'dashboard_name': 'COPERNICUS', 'dashboard_name': 'COPERNICUS',
'group_by': 'location',
'interfaces': [] 'interfaces': []
} }
} }
...@@ -213,7 +219,8 @@ def provision_aggregate(token_request, folder, ...@@ -213,7 +219,8 @@ def provision_aggregate(token_request, folder,
name = dash['dashboard_name'] name = dash['dashboard_name']
tag = dash['tag'] tag = dash['tag']
interfaces = dash['interfaces'] interfaces = dash['interfaces']
data = get_aggregate_interface_data(interfaces, name) group_field = dash.get('group_by', 'remote')
data = get_aggregate_interface_data(interfaces, name, group_field)
dashboard = get_aggregate_dashboard_data( dashboard = get_aggregate_dashboard_data(
f'Aggregate - {name}', data, ds_name, tag) f'Aggregate - {name}', data, ds_name, tag)
......
...@@ -157,28 +157,30 @@ def get_interface_data(interfaces): ...@@ -157,28 +157,30 @@ def get_interface_data(interfaces):
return result return result
def get_aggregate_interface_data(interfaces, agg_type): def get_aggregate_interface_data(interfaces, agg_type, group_field):
""" """
Helper for grouping interfaces into groups of remotes Helper for grouping interfaces into groups by fields, eg. remotes
(ISP/NREN/...) used for aggregate dashboards (ISP/NREN/...) used for aggregate dashboards
Extracts information from interfaces to be used in panels. Extracts information from interfaces to be used in panels.
Aggregate dashboards have aggregates at the top for all remotes Aggregate dashboards have aggregates at the top for all groups
as well as aggregate panels for specific remotes. as well as aggregate panels for specific groups.
This builds a dict with interfaces for each remote This builds a dict with interfaces for each group
and one with all interfaces. and one with all interfaces.
""" """
result = [] result = []
def reduce_func(prev, curr): def get_reduce_func_for_field(field):
remotes = prev.get(curr['remote'], []) def reduce_func(prev, curr):
remotes.append(curr) groups = prev.get(curr[field], [])
all_agg = prev.get('EVERYSINGLETARGET', []) groups.append(curr)
all_agg.append(curr) all_agg = prev.get('EVERYSINGLETARGET', [])
prev[curr['remote']] = remotes all_agg.append(curr)
prev['EVERYSINGLETARGET'] = all_agg prev[curr[field]] = groups
return prev prev['EVERYSINGLETARGET'] = all_agg
return prev
return reduce_func
for interface in interfaces: for interface in interfaces:
...@@ -193,9 +195,10 @@ def get_aggregate_interface_data(interfaces, agg_type): ...@@ -193,9 +195,10 @@ def get_aggregate_interface_data(interfaces, agg_type):
'interface': interface_name, 'interface': interface_name,
'hostname': host, 'hostname': host,
'remote': remote, 'remote': remote,
'location': location,
'alias': f"{location} - {remote} ({interface_name})", 'alias': f"{location} - {remote} ({interface_name})",
}) })
return reduce(reduce_func, result, {}) return reduce(get_reduce_func_for_field(group_field), result, {})
def get_aggregate_targets(targets): def get_aggregate_targets(targets):
......
...@@ -2,6 +2,10 @@ ...@@ -2,6 +2,10 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
## [0.35] - 2022-02-24
- POL1-487: Adjust aggregate dashboard for COPERNICUS to group interfaces by location
- POL1-560: Add service category for 10G Guaranteed Bandwidth Service
## [0.34] - 2022-02-16 ## [0.34] - 2022-02-16
- POL1-487: Add aggregate dashboard for COPERNICUS - POL1-487: Add aggregate dashboard for COPERNICUS
......
...@@ -2,7 +2,7 @@ from setuptools import setup, find_packages ...@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
setup( setup(
name='brian-dashboard-manager', name='brian-dashboard-manager',
version="0.34", version="0.35",
author='GEANT', author='GEANT',
author_email='swd@geant.org', author_email='swd@geant.org',
description='', description='',
......
...@@ -11,6 +11,7 @@ DEFAULT_REQUEST_HEADERS = { ...@@ -11,6 +11,7 @@ DEFAULT_REQUEST_HEADERS = {
TEST_DASHBOARD = { TEST_DASHBOARD = {
"tag": "TEST_AGGREGATE", "tag": "TEST_AGGREGATE",
"dashboard_name": "TEST CLS Peers", "dashboard_name": "TEST CLS Peers",
"group_by": "remote",
"interfaces": [ "interfaces": [
{ {
"router": "mx1.gen.ch.geant.net", "router": "mx1.gen.ch.geant.net",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment