From 7a128393f602a212609293ede8cc5da9835ec8f6 Mon Sep 17 00:00:00 2001 From: Sabrina Demagny Date: Thu, 6 Mar 2025 16:32:21 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8(api)=20define=20dimail=20timeout=20as?= =?UTF-8?q?=20a=20setting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Allow to param dimail timeout for each env --- CHANGELOG.md | 1 + src/backend/mailbox_manager/utils/dimail.py | 23 +++++++++++---------- src/backend/people/settings.py | 5 +++++ 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e364293..a0f6d44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to ### Added +- ✨(api) define dimail timeout as a setting - ✨(frontend) feature modal add new access role to domain - ✨(api) allow invitations for domain management #708 diff --git a/src/backend/mailbox_manager/utils/dimail.py b/src/backend/mailbox_manager/utils/dimail.py index 131c82a..90387ec 100644 --- a/src/backend/mailbox_manager/utils/dimail.py +++ b/src/backend/mailbox_manager/utils/dimail.py @@ -41,6 +41,7 @@ class DimailAPIClient: API_URL = settings.MAIL_PROVISIONING_API_URL API_CREDENTIALS = settings.MAIL_PROVISIONING_API_CREDENTIALS + API_TIMEOUT = settings.MAIL_PROVISIONING_API_TIMEOUT def get_headers(self, user_sub=None): """ @@ -59,7 +60,7 @@ class DimailAPIClient: f"{self.API_URL}/token/", headers={"Authorization": f"Basic {self.API_CREDENTIALS}"}, params=params, - timeout=20, + timeout=self.API_TIMEOUT, ) if response.status_code == status.HTTP_200_OK: @@ -93,7 +94,7 @@ class DimailAPIClient: json=payload, headers={"Authorization": f"Basic {self.API_CREDENTIALS}"}, verify=True, - timeout=10, + timeout=self.API_TIMEOUT, ) except requests.exceptions.ConnectionError as error: logger.error( @@ -129,7 +130,7 @@ class DimailAPIClient: json=payload, headers=headers, verify=True, - timeout=10, + timeout=self.API_TIMEOUT, ) except requests.exceptions.ConnectionError as error: logger.error( @@ -169,7 +170,7 @@ class DimailAPIClient: headers={"Authorization": f"Basic {self.API_CREDENTIALS}"}, json=payload, verify=True, - timeout=10, + timeout=self.API_TIMEOUT, ) except requests.exceptions.ConnectionError as error: logger.error( @@ -209,7 +210,7 @@ class DimailAPIClient: headers={"Authorization": f"Basic {self.API_CREDENTIALS}"}, json=payload, verify=True, - timeout=10, + timeout=self.API_TIMEOUT, ) except requests.exceptions.ConnectionError as error: logger.error( @@ -304,7 +305,7 @@ class DimailAPIClient: f"{self.API_URL}/domains/{domain.name}/mailboxes/", headers=self.get_headers(), verify=True, - timeout=10, + timeout=self.API_TIMEOUT, ) except requests.exceptions.ConnectionError as error: logger.error( @@ -365,7 +366,7 @@ class DimailAPIClient: json={"active": "no"}, headers=self.get_headers(user_sub), verify=True, - timeout=10, + timeout=self.API_TIMEOUT, ) if response.status_code == status.HTTP_200_OK: logger.info( @@ -389,7 +390,7 @@ class DimailAPIClient: }, headers=self.get_headers(user_sub), verify=True, - timeout=10, + timeout=self.API_TIMEOUT, ) if response.status_code == status.HTTP_200_OK: logger.info( @@ -425,7 +426,7 @@ class DimailAPIClient: f"{self.API_URL}/domains/{domain.name}/check/", headers={"Authorization": f"Basic {self.API_CREDENTIALS}"}, verify=True, - timeout=20, + timeout=self.API_TIMEOUT, ) except requests.exceptions.ConnectionError as error: logger.error( @@ -445,7 +446,7 @@ class DimailAPIClient: f"{self.API_URL}/domains/{domain.name}/fix/", headers={"Authorization": f"Basic {self.API_CREDENTIALS}"}, verify=True, - timeout=10, + timeout=self.API_TIMEOUT, ) if response.status_code == status.HTTP_200_OK: logger.info( @@ -530,7 +531,7 @@ class DimailAPIClient: f"{self.API_URL}/domains/{domain.name}/spec/", headers={"Authorization": f"Basic {self.API_CREDENTIALS}"}, verify=True, - timeout=10, + timeout=self.API_TIMEOUT, ) except requests.exceptions.ConnectionError as error: logger.exception( diff --git a/src/backend/people/settings.py b/src/backend/people/settings.py index c7c9a7a..fd96c62 100755 --- a/src/backend/people/settings.py +++ b/src/backend/people/settings.py @@ -512,6 +512,11 @@ class Base(Configuration): environ_name="MAIL_PROVISIONING_API_CREDENTIALS", environ_prefix=None, ) + MAIL_PROVISIONING_API_TIMEOUT = values.IntegerValue( + default=20, + environ_name="MAIL_PROVISIONING_API_TIMEOUT", + environ_prefix=None, + ) DNS_PROVISIONING_API_URL = values.Value( default="https://api.scaleway.com", environ_name="DNS_PROVISIONING_API_URL",