From 59a237208549457361fe9cff538f432b43adcd1e Mon Sep 17 00:00:00 2001 From: a-dubs Date: Tue, 14 Jan 2025 15:29:27 -0500 Subject: [PATCH] feat(oracle): raise PycloudlibTimeoutError from wait_till_ready Raising a timeout exception instead of a generic exception allows for consumers of pycloudlib to retry when instance launching fails due to timing out. This is important when trying to launch BM instances which can sometimes fail to provision even when the Oracle API reports their being sufficient capacity. --- pycloudlib/oci/utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pycloudlib/oci/utils.py b/pycloudlib/oci/utils.py index ed3084dc..b1890fdc 100644 --- a/pycloudlib/oci/utils.py +++ b/pycloudlib/oci/utils.py @@ -7,7 +7,7 @@ from oci.retry import DEFAULT_RETRY_STRATEGY # pylint: disable=E0611,E0401 -from pycloudlib.errors import PycloudlibError +from pycloudlib.errors import PycloudlibError, PycloudlibTimeoutError if TYPE_CHECKING: import oci @@ -33,6 +33,8 @@ def wait_till_ready( func_kwargs: Dictionary with keyword arguments to pass to the function Returns: The updated version of the current_data + Raises: + PycloudlibTimeoutError: If the desired state is not reached in time """ if func_kwargs is None: func_kwargs = {} @@ -42,7 +44,7 @@ def wait_till_ready( if current_data.lifecycle_state == desired_state: return current_data time.sleep(1) - raise PycloudlibError( + raise PycloudlibTimeoutError( "Expected {} state, but found {} after waiting {} seconds. " "Check OCI console for more details".format( desired_state, current_data.lifecycle_state, sleep_seconds