From da200337ee3195d722bfc5ab626333d1ae3d5ce6 Mon Sep 17 00:00:00 2001 From: Vadim Ponomarev Date: Tue, 25 Feb 2025 14:47:10 +0100 Subject: [PATCH 1/4] Add retries for Barbican --- octavia_f5/utils/cert_manager.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/octavia_f5/utils/cert_manager.py b/octavia_f5/utils/cert_manager.py index 679d4079..363c2bdc 100644 --- a/octavia_f5/utils/cert_manager.py +++ b/octavia_f5/utils/cert_manager.py @@ -13,6 +13,9 @@ # under the License. import hashlib +import tenacity +from requests import exceptions as requests_exc +from urllib3 import exceptions as urllib_exc from oslo_config import cfg from oslo_context import context as oslo_context @@ -23,6 +26,10 @@ from octavia_f5.restclient.as3objects import certificate as m_cert CONF = cfg.CONF +RETRY_ATTEMPTS = 15 +RETRY_INITIAL_DELAY = 1 +RETRY_BACKOFF = 1 +RETRY_MAX = 5 class CertManagerWrapper(object): @@ -33,6 +40,13 @@ def __init__(self): invoke_on_load=True, ).driver + @tenacity.retry( + retry=tenacity.retry_if_exception_type( + (urllib_exc.NewConnectionError, + requests_exc.ConnectionError)), + wait=tenacity.wait_incrementing( + RETRY_INITIAL_DELAY, RETRY_BACKOFF, RETRY_MAX), + stop=tenacity.stop_after_attempt(RETRY_ATTEMPTS)) def get_certificates(self, obj, context=None): """Fetches certificates and creates dict out of octavia objects @@ -68,6 +82,13 @@ def get_certificates(self, obj, context=None): return certificates + @tenacity.retry( + retry=tenacity.retry_if_exception_type( + (urllib_exc.NewConnectionError, + requests_exc.ConnectionError)), + wait=tenacity.wait_incrementing( + RETRY_INITIAL_DELAY, RETRY_BACKOFF, RETRY_MAX), + stop=tenacity.stop_after_attempt(RETRY_ATTEMPTS)) def load_secret(self, project_id, secret_ref): """Loads secrets from secret store From 10bc79a38a8c89e7bb865e4bdab945e6a332e645 Mon Sep 17 00:00:00 2001 From: Vadim Ponomarev Date: Tue, 25 Feb 2025 17:02:20 +0100 Subject: [PATCH 2/4] Fix exception handling --- octavia_f5/utils/cert_manager.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/octavia_f5/utils/cert_manager.py b/octavia_f5/utils/cert_manager.py index 363c2bdc..1f06ad86 100644 --- a/octavia_f5/utils/cert_manager.py +++ b/octavia_f5/utils/cert_manager.py @@ -21,6 +21,7 @@ from oslo_context import context as oslo_context from stevedore import driver as stevedore_driver +from octavia.common import exceptions as octavia_exc from octavia.common.tls_utils import cert_parser from octavia_f5.common import constants from octavia_f5.restclient.as3objects import certificate as m_cert @@ -42,8 +43,7 @@ def __init__(self): @tenacity.retry( retry=tenacity.retry_if_exception_type( - (urllib_exc.NewConnectionError, - requests_exc.ConnectionError)), + (octavia_exc.CertificateRetrievalException)), wait=tenacity.wait_incrementing( RETRY_INITIAL_DELAY, RETRY_BACKOFF, RETRY_MAX), stop=tenacity.stop_after_attempt(RETRY_ATTEMPTS)) @@ -84,8 +84,7 @@ def get_certificates(self, obj, context=None): @tenacity.retry( retry=tenacity.retry_if_exception_type( - (urllib_exc.NewConnectionError, - requests_exc.ConnectionError)), + (octavia_exc.CertificateRetrievalException)), wait=tenacity.wait_incrementing( RETRY_INITIAL_DELAY, RETRY_BACKOFF, RETRY_MAX), stop=tenacity.stop_after_attempt(RETRY_ATTEMPTS)) From beae816db74dfa28bb05de6e24145096125c41a1 Mon Sep 17 00:00:00 2001 From: Vadim Ponomarev Date: Tue, 25 Feb 2025 17:04:30 +0100 Subject: [PATCH 3/4] Fix lint --- octavia_f5/utils/cert_manager.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/octavia_f5/utils/cert_manager.py b/octavia_f5/utils/cert_manager.py index 1f06ad86..00b64ba8 100644 --- a/octavia_f5/utils/cert_manager.py +++ b/octavia_f5/utils/cert_manager.py @@ -14,8 +14,6 @@ import hashlib import tenacity -from requests import exceptions as requests_exc -from urllib3 import exceptions as urllib_exc from oslo_config import cfg from oslo_context import context as oslo_context From e2a33268356ffcf62da813b9db912a7e44a5ba50 Mon Sep 17 00:00:00 2001 From: Vadim Ponomarev Date: Fri, 28 Feb 2025 16:00:55 +0100 Subject: [PATCH 4/4] Remove tuple --- octavia_f5/utils/cert_manager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/octavia_f5/utils/cert_manager.py b/octavia_f5/utils/cert_manager.py index 00b64ba8..e3b77a1a 100644 --- a/octavia_f5/utils/cert_manager.py +++ b/octavia_f5/utils/cert_manager.py @@ -41,7 +41,7 @@ def __init__(self): @tenacity.retry( retry=tenacity.retry_if_exception_type( - (octavia_exc.CertificateRetrievalException)), + octavia_exc.CertificateRetrievalException), wait=tenacity.wait_incrementing( RETRY_INITIAL_DELAY, RETRY_BACKOFF, RETRY_MAX), stop=tenacity.stop_after_attempt(RETRY_ATTEMPTS)) @@ -82,7 +82,7 @@ def get_certificates(self, obj, context=None): @tenacity.retry( retry=tenacity.retry_if_exception_type( - (octavia_exc.CertificateRetrievalException)), + octavia_exc.CertificateRetrievalException), wait=tenacity.wait_incrementing( RETRY_INITIAL_DELAY, RETRY_BACKOFF, RETRY_MAX), stop=tenacity.stop_after_attempt(RETRY_ATTEMPTS))