mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Replace a timer.sleep(30) with pulling logic
This commit is contained in:
parent
9f970f28b1
commit
eeb3373e41
@ -115,6 +115,31 @@ Network states
|
|||||||
'''
|
'''
|
||||||
ALLOCATED = "Allocated"
|
ALLOCATED = "Allocated"
|
||||||
|
|
||||||
|
'''
|
||||||
|
Host states
|
||||||
|
'''
|
||||||
|
HOST_CREATING = "Creating"
|
||||||
|
HOST_CONNECTING = "Connecting"
|
||||||
|
HOST_UP = "Up"
|
||||||
|
HOST_DOWN = "Down"
|
||||||
|
HOST_DISCONNECTED = "Disconnected"
|
||||||
|
HOST_ALERT = "Alert"
|
||||||
|
HOST_REMOVED = "Removed"
|
||||||
|
HOST_ERROR = "Error"
|
||||||
|
HOST_REBALANCING = "Rebalancing"
|
||||||
|
HOST_UNKNOWN = "Unknown"
|
||||||
|
|
||||||
|
'''
|
||||||
|
Host resource states
|
||||||
|
'''
|
||||||
|
HOST_RS_CREATING = "Creating"
|
||||||
|
HOST_RS_ENABLED = "Enabled"
|
||||||
|
HOST_RS_DISABLED = "Disabled"
|
||||||
|
HOST_RS_PREPARE_FOR_MAINTENANCE = "PrepareForMaintenance"
|
||||||
|
HOST_RS_ERROR_IN_MAINTENANCE = "ErrorInMaintenance"
|
||||||
|
HOST_RS_MAINTENANCE = "Maintenance"
|
||||||
|
HOST_RS_ERROR = "Error"
|
||||||
|
|
||||||
'''
|
'''
|
||||||
Storage Tags
|
Storage Tags
|
||||||
'''
|
'''
|
||||||
|
|||||||
@ -23,9 +23,10 @@ import marvin
|
|||||||
from marvin.cloudstackAPI import *
|
from marvin.cloudstackAPI import *
|
||||||
from marvin.codes import (FAILED, FAIL, PASS, RUNNING, STOPPED,
|
from marvin.codes import (FAILED, FAIL, PASS, RUNNING, STOPPED,
|
||||||
STARTING, DESTROYED, EXPUNGING,
|
STARTING, DESTROYED, EXPUNGING,
|
||||||
STOPPING, BACKED_UP, BACKING_UP)
|
STOPPING, BACKED_UP, BACKING_UP,
|
||||||
|
HOST_RS_MAINTENANCE)
|
||||||
from marvin.cloudstackException import GetDetailExceptionInfo, CloudstackAPIException
|
from marvin.cloudstackException import GetDetailExceptionInfo, CloudstackAPIException
|
||||||
from marvin.lib.utils import validateList, is_server_ssh_ready, random_gen
|
from marvin.lib.utils import validateList, is_server_ssh_ready, random_gen, wait_until
|
||||||
# Import System modules
|
# Import System modules
|
||||||
import time
|
import time
|
||||||
import hashlib
|
import hashlib
|
||||||
@ -2459,13 +2460,40 @@ class Host:
|
|||||||
GetDetailExceptionInfo(e)
|
GetDetailExceptionInfo(e)
|
||||||
return FAILED
|
return FAILED
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _check_resource_state(apiclient, hostid, resourcestate):
|
||||||
|
hosts = Host.list(apiclient, id=hostid, listall=True)
|
||||||
|
|
||||||
|
validationresult = validateList(hosts)
|
||||||
|
|
||||||
|
assert validationresult is not None, "'validationresult' should not be equal to 'None'."
|
||||||
|
|
||||||
|
assert isinstance(validationresult, list), "'validationresult' should be a 'list'."
|
||||||
|
|
||||||
|
assert len(validationresult) == 3, "'validationresult' should be a list with three items in it."
|
||||||
|
|
||||||
|
if validationresult[0] == FAIL:
|
||||||
|
raise Exception("Host list validation failed: %s" % validationresult[2])
|
||||||
|
|
||||||
|
if str(hosts[0].resourcestate).lower().decode("string_escape") == str(resourcestate).lower():
|
||||||
|
return True, None
|
||||||
|
|
||||||
|
return False, "Host is not in the following state: " + str(resourcestate)
|
||||||
|
|
||||||
def delete(self, apiclient):
|
def delete(self, apiclient):
|
||||||
"""Delete Host"""
|
"""Delete Host"""
|
||||||
# Host must be in maintenance mode before deletion
|
# Host must be in maintenance mode before deletion
|
||||||
cmd = prepareHostForMaintenance.prepareHostForMaintenanceCmd()
|
cmd = prepareHostForMaintenance.prepareHostForMaintenanceCmd()
|
||||||
cmd.id = self.id
|
cmd.id = self.id
|
||||||
apiclient.prepareHostForMaintenance(cmd)
|
apiclient.prepareHostForMaintenance(cmd)
|
||||||
time.sleep(30)
|
|
||||||
|
retry_interval = 10
|
||||||
|
num_tries = 10
|
||||||
|
|
||||||
|
wait_result, return_val = wait_until(retry_interval, num_tries, Host._check_resource_state, apiclient, self.id, HOST_RS_MAINTENANCE)
|
||||||
|
|
||||||
|
if not wait_result:
|
||||||
|
raise Exception(return_val)
|
||||||
|
|
||||||
cmd = deleteHost.deleteHostCmd()
|
cmd = deleteHost.deleteHostCmd()
|
||||||
cmd.id = self.id
|
cmd.id = self.id
|
||||||
@ -2711,7 +2739,7 @@ class StoragePool:
|
|||||||
id=poolid, listAll=True)
|
id=poolid, listAll=True)
|
||||||
validationresult = validateList(pools)
|
validationresult = validateList(pools)
|
||||||
if validationresult[0] == FAIL:
|
if validationresult[0] == FAIL:
|
||||||
raise Exception("Host list validation failed: %s" % validationresult[2])
|
raise Exception("Pool list validation failed: %s" % validationresult[2])
|
||||||
elif str(pools[0].state).lower().decode("string_escape") == str(state).lower():
|
elif str(pools[0].state).lower().decode("string_escape") == str(state).lower():
|
||||||
returnValue = [PASS, None]
|
returnValue = [PASS, None]
|
||||||
break
|
break
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user