From 5074574f9ee5573f263df52c90cc746e96a59a04 Mon Sep 17 00:00:00 2001 From: Jose Manuel Almaza Date: Fri, 7 Jun 2024 17:20:02 +0200 Subject: [PATCH 1/6] Add new handled exceptions --- .../openstack_controller/components/component.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/openstack_controller/datadog_checks/openstack_controller/components/component.py b/openstack_controller/datadog_checks/openstack_controller/components/component.py index 0d9baa46f132f..d9d47355a7044 100644 --- a/openstack_controller/datadog_checks/openstack_controller/components/component.py +++ b/openstack_controller/datadog_checks/openstack_controller/components/component.py @@ -6,9 +6,10 @@ from enum import Enum, unique from functools import wraps -from requests.exceptions import HTTPError +import requests from datadog_checks.base import AgentCheck +from datadog_checks.openstack_controller.api.catalog import CatalogEndPointFailure def argument_value(arg_name, func, *args, **kwargs): @@ -75,10 +76,12 @@ def wrapper(self, *args, **kwargs): tags = argument_value('tags', func, *args, **kwargs) self.check.service_check(self.SERVICE_CHECK, AgentCheck.OK, tags=tags) return result if result is not None else True - except HTTPError as e: - self.check.log.error("HTTPError: %s", e.response) + except (requests.HTTPError, requests.ConnectionError, requests.Timeout, requests.RequestException) as e: + self.check.log.debug("HTTPError: %s", e.response) if report_service_check: self.check.service_check(self.SERVICE_CHECK, AgentCheck.CRITICAL, tags=tags) + except CatalogEndPointFailure as e: + self.check.log.debug("CatalogEndPointFailure: %s", e) except Exception as e: self.check.log.error("Exception: %s", e) return None From c34cb4c1d08196df07771529168defa8874a143c Mon Sep 17 00:00:00 2001 From: Jose Manuel Almaza Date: Fri, 7 Jun 2024 17:22:48 +0200 Subject: [PATCH 2/6] Added changelog --- openstack_controller/changelog.d/17773.added | 1 + 1 file changed, 1 insertion(+) create mode 100644 openstack_controller/changelog.d/17773.added diff --git a/openstack_controller/changelog.d/17773.added b/openstack_controller/changelog.d/17773.added new file mode 100644 index 0000000000000..ef24c9bdb20bd --- /dev/null +++ b/openstack_controller/changelog.d/17773.added @@ -0,0 +1 @@ +Add new handled exceptions From 4649aa194a23e58104aa48b7ae439b4b59b25361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Manuel=20Almaza=20Ramiro?= Date: Sat, 8 Jun 2024 00:35:02 +0200 Subject: [PATCH 3/6] Update openstack_controller/changelog.d/17773.added Co-authored-by: Sarah Witt --- openstack_controller/changelog.d/17773.added | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openstack_controller/changelog.d/17773.added b/openstack_controller/changelog.d/17773.added index ef24c9bdb20bd..488482beff721 100644 --- a/openstack_controller/changelog.d/17773.added +++ b/openstack_controller/changelog.d/17773.added @@ -1 +1 @@ -Add new handled exceptions +Handle more exceptions by lowering severity of logs From 4e6287e4f1b5b7641afe18b2f57985c83db80177 Mon Sep 17 00:00:00 2001 From: Jose Manuel Almaza Date: Tue, 11 Jun 2024 10:43:34 +0200 Subject: [PATCH 4/6] return http error response instead of raising an exception --- openstack_controller/tests/conftest.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openstack_controller/tests/conftest.py b/openstack_controller/tests/conftest.py index 2e3c6d27739cd..edc7e6e17decb 100644 --- a/openstack_controller/tests/conftest.py +++ b/openstack_controller/tests/conftest.py @@ -989,7 +989,7 @@ def get(url, *args, **kwargs): method = 'GET' url = get_url_path(url) if http_error and url in http_error: - raise requests.exceptions.HTTPError(response=http_error[url]) + return http_error[url] if data and url in data: return MockResponse(json_data=data[url], status_code=200) @@ -1015,7 +1015,7 @@ def post(url, *args, **kwargs): if exception and url in exception: raise exception[url] if http_error and url in http_error: - raise requests.exceptions.HTTPError(response=http_error[url]) + return http_error[url] if url == '/identity/v3/auth/tokens': data = kwargs['json'] scope = data.get('auth', {}).get('scope', 'unscoped') From 8c6a5ead068cc2f2e8102cd4ec61b27847a58264 Mon Sep 17 00:00:00 2001 From: Jose Manuel Almaza Date: Tue, 11 Jun 2024 15:08:00 +0200 Subject: [PATCH 5/6] Catch all requests exceptions usingrequests.exceptions.RequestException --- .../openstack_controller/components/component.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openstack_controller/datadog_checks/openstack_controller/components/component.py b/openstack_controller/datadog_checks/openstack_controller/components/component.py index d9d47355a7044..ee9e69a4e6e14 100644 --- a/openstack_controller/datadog_checks/openstack_controller/components/component.py +++ b/openstack_controller/datadog_checks/openstack_controller/components/component.py @@ -76,8 +76,8 @@ def wrapper(self, *args, **kwargs): tags = argument_value('tags', func, *args, **kwargs) self.check.service_check(self.SERVICE_CHECK, AgentCheck.OK, tags=tags) return result if result is not None else True - except (requests.HTTPError, requests.ConnectionError, requests.Timeout, requests.RequestException) as e: - self.check.log.debug("HTTPError: %s", e.response) + except requests.exceptions.RequestException as e: + self.check.log.debug("RequestException [%s]: %s", type(e), e) if report_service_check: self.check.service_check(self.SERVICE_CHECK, AgentCheck.CRITICAL, tags=tags) except CatalogEndPointFailure as e: From 54e316431c3a22d2faa7768bc94b10bc5b94f700 Mon Sep 17 00:00:00 2001 From: Jose Manuel Almaza Date: Tue, 11 Jun 2024 15:24:55 +0200 Subject: [PATCH 6/6] Remove CatalogEndPointFailure exception --- .../datadog_checks/openstack_controller/api/catalog.py | 10 +--------- .../openstack_controller/components/component.py | 3 --- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/openstack_controller/datadog_checks/openstack_controller/api/catalog.py b/openstack_controller/datadog_checks/openstack_controller/api/catalog.py index ae21a48832ca0..ec49c6f4f3b9f 100644 --- a/openstack_controller/datadog_checks/openstack_controller/api/catalog.py +++ b/openstack_controller/datadog_checks/openstack_controller/api/catalog.py @@ -3,14 +3,6 @@ # Licensed under a 3-clause BSD style license (see LICENSE) -class CatalogEndPointFailure(Exception): - def __init__(self, service_types, interface, region_id): - self.message = ( - f'No endpoint found in catalog for services={service_types} interface={interface} region_id={region_id}' - ) - super().__init__(self.message) - - class Catalog: def __init__(self, catalog, endpoint_interface, endpoint_region_id): self.catalog = catalog @@ -38,4 +30,4 @@ def get_endpoint_by_type(self, service_types): matched_region_id = not self.endpoint_region_id or endpoint_region_id == self.endpoint_region_id if matched_interface and matched_region_id: return endpoint['url'] - raise CatalogEndPointFailure(service_types, self.endpoint_interface, self.endpoint_region_id) + return None diff --git a/openstack_controller/datadog_checks/openstack_controller/components/component.py b/openstack_controller/datadog_checks/openstack_controller/components/component.py index ee9e69a4e6e14..46ab04586c4d3 100644 --- a/openstack_controller/datadog_checks/openstack_controller/components/component.py +++ b/openstack_controller/datadog_checks/openstack_controller/components/component.py @@ -9,7 +9,6 @@ import requests from datadog_checks.base import AgentCheck -from datadog_checks.openstack_controller.api.catalog import CatalogEndPointFailure def argument_value(arg_name, func, *args, **kwargs): @@ -80,8 +79,6 @@ def wrapper(self, *args, **kwargs): self.check.log.debug("RequestException [%s]: %s", type(e), e) if report_service_check: self.check.service_check(self.SERVICE_CHECK, AgentCheck.CRITICAL, tags=tags) - except CatalogEndPointFailure as e: - self.check.log.debug("CatalogEndPointFailure: %s", e) except Exception as e: self.check.log.error("Exception: %s", e) return None