From 38955e53b5a7c74b61a3eb046847ccec494401ed Mon Sep 17 00:00:00 2001
From: sguazt <marco.guazzone@gmail.com>
Date: Tue, 5 Jan 2021 11:26:25 +0100
Subject: [PATCH] Chameleon: use InstanceStatus instead of strings in node
 status map

---
 .../modules/chameleon_openstacksdk/manager.py | 38 ++++++++++---------
 1 file changed, 20 insertions(+), 18 deletions(-)

diff --git a/easycloud/modules/chameleon_openstacksdk/manager.py b/easycloud/modules/chameleon_openstacksdk/manager.py
index 1d4225b..093f003 100644
--- a/easycloud/modules/chameleon_openstacksdk/manager.py
+++ b/easycloud/modules/chameleon_openstacksdk/manager.py
@@ -24,24 +24,24 @@ class OpenStackInstance(Instance):
     """
 
     _NODE_STATUS_MAP = {
-        'BUILD': 'pending',
-        'REBUILD': 'pending',
-        'ACTIVE': 'running',
-        'SUSPENDED': 'suspended',
-        'SHUTOFF': 'stopped',
-        'DELETED': 'terminated',
-        'QUEUE_RESIZE': 'pending',
-        'PREP_RESIZE': 'pending',
-        'VERIFY_RESIZE': 'running',
-        'PASSWORD': 'pending',
-        'RESCUE': 'pending',
-        'REBOOT': 'rebooting',
-        'HARD_REBOOT': 'rebooting',
-        'SHARE_IP': 'pending',
-        'SHARE_IP_NO_CONFIG': 'pending',
-        'DELETE_IP': 'pending',
-        'ERROR': 'error',
-        'UNKNOWN': 'unknown'
+        'BUILD': InstanceStatus.PENDING,
+        'REBUILD': InstanceStatus.PENDING,
+        'ACTIVE': InstanceStatus.RUNNING,
+        'SUSPENDED': InstanceStatus.SUSPENDED,
+        'SHUTOFF': InstanceStatus.STOPPED,
+        'DELETED': InstanceStatus.TERMINATED,
+        'QUEUE_RESIZE': InstanceStatus.PENDING,
+        'PREP_RESIZE': InstanceStatus.PENDING,
+        'VERIFY_RESIZE': InstanceStatus.RUNNING,
+        'PASSWORD': InstanceStatus.PENDING,
+        'RESCUE': InstanceStatus.PENDING,
+        'REBOOT': InstanceStatus.REBOOTING,
+        'HARD_REBOOT': InstanceStatus.REBOOTING,
+        'SHARE_IP': InstanceStatus.PENDING,
+        'SHARE_IP_NO_CONFIG': InstanceStatus.PENDING,
+        'DELETE_IP': InstanceStatus.PENDING,
+        'ERROR': InstanceStatus.ERROR,
+        'UNKNOWN': InstanceStatus.UNKNOWN
     }
 
     def __init__(self, os_conn, os_instance):
@@ -91,9 +91,11 @@ class OpenStackInstance(Instance):
 
     def start(self):
         self._os_conn.compute.start_server(self._os_inst)
+        #TODO: call "self._os_conn.compute.wait_for_server(self._os_inst, status='ACTIVE', wait = timeout)" to perform a synchronous version of this method (note, if timeout is None you should invoke this method without the "wait" parameter, catching the "ResourceTimeout" exception and, in case such an exception is thrown, calling again the "wait_for_server()" method)
 
     def stop(self):
         self._os_conn.compute.stop_server(self._os_inst)
+        #TODO: call "self._os_conn.compute.wait_for_server(self._os_inst, status='ACTIVE', wait = timeout)" to perform a synchronous version of this method (note, if timeout is None you should invoke this method without the "wait" parameter, catching the "ResourceTimeout" exception and, in case such an exception is thrown, calling again the "wait_for_server()" method)
 
 
 class ChameleonCloud(MetaManager):
-- 
GitLab