From 76b70ca710be4f146e8d5e0c16a735b56eb7d3de Mon Sep 17 00:00:00 2001 From: Bjarke Madsen <bjarke@nordu.net> Date: Tue, 11 Feb 2025 15:29:49 +0100 Subject: [PATCH] add timeouts and logging on previously hidden errors --- brian_dashboard_manager/grafana/provision.py | 17 +++++++++++++---- .../inventory_provider/interfaces.py | 10 +++++----- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/brian_dashboard_manager/grafana/provision.py b/brian_dashboard_manager/grafana/provision.py index 6cfafec..941346e 100644 --- a/brian_dashboard_manager/grafana/provision.py +++ b/brian_dashboard_manager/grafana/provision.py @@ -942,7 +942,12 @@ def provision(config): """ start = time.time() - all_orgs = _provision_orgs(config) + try: + all_orgs = _provision_orgs(config) + except Exception: + logger.exception('Error when provisioning orgs') + return + request = AdminRequest(**config) try: # needed for older versions of grafana (<11.0) @@ -961,9 +966,13 @@ def provision(config): return None orgs = list(filter(lambda t: t[1] is not None, [(org, _find_org_config(org)) for org in all_orgs])) - interfaces = get_interfaces(config['inventory_provider']) - services = fetch_services(config['reporting_provider']) - regions = get_nren_regions(config['inventory_provider']) + try: + interfaces = get_interfaces(config['inventory_provider']) + services = fetch_services(config['reporting_provider']) + regions = get_nren_regions(config['inventory_provider']) + except Exception: + logger.exception('Error when fetching interfaces:') + return for org, org_config in orgs: _provision_org(config, org, org_config, interfaces, services, regions) diff --git a/brian_dashboard_manager/inventory_provider/interfaces.py b/brian_dashboard_manager/inventory_provider/interfaces.py index c342817..df6ba65 100644 --- a/brian_dashboard_manager/inventory_provider/interfaces.py +++ b/brian_dashboard_manager/inventory_provider/interfaces.py @@ -322,7 +322,7 @@ def _get_ip_info(host): return prev try: - r = requests.get(f'{host}/data/interfaces') + r = requests.get(f'{host}/data/interfaces', timeout=5) r.raise_for_status() interfaces = r.json() except HTTPError: @@ -341,7 +341,7 @@ def get_interfaces(host): :return: A list of interfaces with IP information added, if present. """ - r = requests.get(f'{host}/poller/interfaces') + r = requests.get(f'{host}/poller/interfaces', timeout=5) try: r.raise_for_status() interfaces = r.json() @@ -415,7 +415,7 @@ def get_gws_direct(host): :return: GWS direct data """ - r = requests.get(f'{host}/poller/gws/direct') + r = requests.get(f'{host}/poller/gws/direct', timeout=5) try: r.raise_for_status() interfaces = r.json() @@ -435,7 +435,7 @@ def get_gws_indirect(host): :return: GWS Indirect data """ try: - r = requests.get(f'{host}/poller/gws/indirect') + r = requests.get(f'{host}/poller/gws/indirect', timeout=5) r.raise_for_status() interfaces = r.json() except HTTPError: @@ -452,7 +452,7 @@ def get_eumetsat_multicast_subscriptions(host): :return: EUMETSAT multicast subscriptions """ try: - r = requests.get(f'{host}/poller/eumetsat-multicast') + r = requests.get(f'{host}/poller/eumetsat-multicast', timeout=5) r.raise_for_status() data = r.json() except HTTPError: -- GitLab