diff --git a/brian_dashboard_manager/grafana/provision.py b/brian_dashboard_manager/grafana/provision.py index d9a608d9ac32dc66d2a513f7e6c428ac64c6e3b7..f96acada7aa228d9dfbd0e80d38bca376329ceab 100644 --- a/brian_dashboard_manager/grafana/provision.py +++ b/brian_dashboard_manager/grafana/provision.py @@ -24,7 +24,8 @@ from brian_dashboard_manager.grafana.datasource import \ from brian_dashboard_manager.grafana.folder import find_folder, \ delete_folder, get_folders from brian_dashboard_manager.inventory_provider.interfaces import \ - get_gws_direct, get_gws_indirect, get_interfaces + get_gws_direct, get_gws_indirect, get_interfaces, \ + get_eumetsat_multicast_subscriptions from brian_dashboard_manager.templating.helpers import \ get_aggregate_dashboard_data, get_interface_data, \ @@ -33,7 +34,7 @@ from brian_dashboard_manager.templating.helpers import \ 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.render import render_dashboard logger = logging.getLogger(__name__) @@ -409,6 +410,27 @@ def provision(config): update_dash_list(provisioned) + # fetch EUMETSAT multicast provision related dashboards + logger.info('Provisioning EUMETSAT Multicast dashboards') + folder_name = 'EUMETSAT Multicast' + exclude_eumet_mc = excluded_folders.get(folder_name, False) + if isinstance(exclude_eumet_mc, bool) and exclude_eumet_mc: + # don't provision EUMETSAT Multicast folder + delete_folder(token_request, folder_name) + else: + folder = find_folder(token_request, folder_name) + with ThreadPoolExecutor(max_workers=4) as executor: + subscriptions = get_eumetsat_multicast_subscriptions(config['inventory_provider']) + provisioned = [] + + for dashboard in generate_eumetsat_multicast(subscriptions, ds_name): + rendered = render_dashboard(dashboard) + provisioned.append(executor.submit(create_dashboard, + token_request, + rendered, folder['id'])) + + update_dash_list(provisioned) + exclude_agg = excluded_folders.get('Aggregates', []) if isinstance(exclude_agg, bool) and exclude_agg: