diff --git a/gso/services/librenms_client.py b/gso/services/librenms_client.py index a4857b9d4a59eb5304fdea193c756ad42a2e09c8..2e04a866e3f85b539f22031b3f878b2149823d0f 100644 --- a/gso/services/librenms_client.py +++ b/gso/services/librenms_client.py @@ -7,6 +7,7 @@ from typing import Any, Literal import requests from requests import HTTPError, Response +from requests.adapters import HTTPAdapter from gso.settings import load_oss_params from gso.utils.helpers import SNMPVersion @@ -26,6 +27,7 @@ class LibreNMSClient: self.snmp_config = config.SNMP self.session = requests.Session() + self.session.mount("https://", HTTPAdapter(max_retries=5)) self.session.headers.update({ "User-Agent": f"geant-service-orchestrator/{metadata.version("geant-service-orchestrator")}", "Accept": "application/json", @@ -34,11 +36,11 @@ class LibreNMSClient: }) def _send_request( - self, method: Literal["GET", "POST", "PUT", "DELETE"], endpoint: str, data: dict[str, Any] | None = None + self, method: Literal["GET", "POST", "PUT", "DELETE"], endpoint: str, data: dict[str, Any] | None = None ) -> Response: url = self.base_url + endpoint logger.debug("LibreNMS - Sending request", extra={"method": method, "endpoint": url, "form_data": data}) - result = self.session.request(method, url, json=data) + result = self.session.request(method, url, json=data, timeout=(0.5, 75)) logger.debug("LibreNMS - Received response", extra=result.__dict__) return result