From 4247a91415290a213a8084ffbb536ec77ef03f11 Mon Sep 17 00:00:00 2001 From: Apurv Kumaria Date: Wed, 24 Jul 2013 15:53:43 -0500 Subject: [PATCH] Wait for delete method based on response code. Added method to wait for delete of server until a 404 response code is received. Change-Id: I9c33dfa8abcab0eb0f0f19943d05f1993ac3f4fe --- cloudcafe/compute/servers_api/behaviors.py | 33 ++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/cloudcafe/compute/servers_api/behaviors.py b/cloudcafe/compute/servers_api/behaviors.py index 8d95c279..ab1d0c43 100644 --- a/cloudcafe/compute/servers_api/behaviors.py +++ b/cloudcafe/compute/servers_api/behaviors.py @@ -140,9 +140,9 @@ class ServerBehaviors(BaseBehavior): @param interval_time: The amount of time in seconds to wait between polling @type interval_time: Integer - @param interval_time: The amount of time in seconds to wait + @param timeout: The amount of time in seconds to wait before aborting - @type interval_time: Integer + @type timeout: Integer """ interval_time = interval_time or self.config.server_status_interval @@ -161,6 +161,35 @@ class ServerBehaviors(BaseBehavior): "observe the server achieving the {1} status.".format( timeout, 'DELETED')) + def confirm_server_deletion(self, server_id, response_code, + interval_time=None, timeout=None): + """ + @summary: confirm server deletion based on response code. + @param server_id: The uuid of the server + @type server_id: String + @param: response code to wait for to confirm server deletion + @type: Integer + @param interval_time: The amount of time in seconds to wait + between polling + @type interval_time: Integer + @param timeout: The amount of time in seconds to wait + before aborting + @type timeout: Integer + """ + interval_time = interval_time or self.config.server_status_interval + timeout = timeout or self.config.server_build_timeout + end_time = time.time() + timeout + + while time.time() < end_time: + resp = self.servers_client.get_server(server_id) + if resp.status_code == response_code: + return + time.sleep(interval_time) + raise TimeoutException( + "wait_for_server_status ran for {0} seconds and did not " + "observe the server achieving the {1} status based on " + "response code.".format(timeout, 'DELETED')) + def get_public_ip_address(self, server): """ @summary: Gets the public ip address of instance