Skip to content
Snippets Groups Projects
Commit 4ed09a3b authored by Bjarke Madsen's avatar Bjarke Madsen
Browse files

update provisioning to include new dashboards

parent 5c0e7864
No related branches found
No related tags found
No related merge requests found
......@@ -14,6 +14,8 @@ from brian_dashboard_manager.config import DEFAULT_ORGANIZATIONS, STATE_PATH
from brian_dashboard_manager.grafana.utils.request import AdminRequest, \
TokenRequest
from brian_dashboard_manager.services.api import fetch_services
from brian_dashboard_manager.grafana.organization import \
get_organizations, create_organization, create_api_token, \
delete_api_token, delete_expired_api_tokens, set_home_dashboard
......@@ -36,6 +38,7 @@ 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.services import create_service_panels
from brian_dashboard_manager.templating.render import render_dashboard
logger = logging.getLogger(__name__)
......@@ -356,6 +359,33 @@ def _provision_interfaces(config, org_config, ds_name, token):
yield from folder
def _provision_service_dashboards(config, org_config, ds_name, token):
"""
Fetches service data from Reporting Provider
and creates dashboards for each customer with their services
"""
logger.info('Provisioning Service dashboards')
folder_name = 'Service POC'
# hardcode the org for the POC
if org_config.get('name') != 'GÉANT Staff':
return []
if is_excluded_folder(org_config, folder_name):
# don't provision Services folder
delete_folder(token, title=folder_name)
else:
folder = find_folder(token, folder_name)
with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:
services = fetch_services(config['reporting_provider'])
dashes = create_service_panels(services, ds_name)
for dashboard in dashes:
rendered = render_dashboard(dashboard)
yield executor.submit(create_dashboard,
token,
rendered, folder['id'])
def _provision_gws_indirect(config, org_config, ds_name, token):
# fetch GWS direct data and provision related dashboards
logger.info('Provisioning GWS Indirect dashboards')
......@@ -507,6 +537,7 @@ def _delete_unknown_folders(config, token):
# General is a base folder present in Grafana
'General',
# other folders, created outside of the DASHBOARDS list
'Service POC',
'GWS Indirect',
'GWS Direct',
'Aggregates',
......@@ -521,6 +552,7 @@ def _delete_unknown_folders(config, token):
for folder in all_folders:
if folder['title'] in folders_to_keep:
continue
logger.info(f'Deleting unknown folder: {folder.get("title")}')
delete_folder(token, uid=folder['uid'])
......@@ -598,6 +630,8 @@ def provision(config):
ds_name = datasource.get('name', 'PollerInfluxDB')
managed_dashboards = itertools.chain(
_provision_service_dashboards(
config, org_config, ds_name, token_request),
_provision_interfaces(
config, org_config, ds_name, token_request),
_provision_gws_indirect(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment