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