summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorBrian Lamar <brian.lamar@rackspace.com>2011-08-22 17:17:39 -0400
committerBrian Lamar <brian.lamar@rackspace.com>2011-08-22 17:17:39 -0400
commit3ad42eea208a85619efe0096be8388526b5ffe3b (patch)
tree3ba1155357219588ac35ae7678b721fc0899a4e9 /nova/api
parentea3684d2a2e60f19bdea6b3117be613103a605dc (diff)
parent393c9375626812ecb904d9048c833b0d110e9aa8 (diff)
Merge and fix tests.
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/ec2/cloud.py27
-rw-r--r--nova/api/openstack/common.py61
-rw-r--r--nova/api/openstack/views/servers.py2
3 files changed, 57 insertions, 33 deletions
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py
index 8bddf3032..a7a343938 100644
--- a/nova/api/ec2/cloud.py
+++ b/nova/api/ec2/cloud.py
@@ -84,17 +84,16 @@ def _gen_key(context, user_id, key_name):
_STATE_DESCRIPTION_MAP = {
None: 'pending',
vm_states.ACTIVE: 'running',
- vm_states.BUILD: 'pending',
- vm_states.REBUILD: 'pending',
- vm_states.REBOOT: 'reboot',
- vm_states.DELETE: 'terminated',
- vm_states.STOP: 'stopped',
- vm_states.MIGRATE: 'migrate',
- vm_states.RESIZE: 'resize',
+ vm_states.BUILDING: 'pending',
+ vm_states.REBUILDING: 'pending',
+ vm_states.DELETED: 'terminated',
+ vm_states.STOPPED: 'stopped',
+ vm_states.MIGRATING: 'migrate',
+ vm_states.RESIZING: 'resize',
vm_states.VERIFY_RESIZE: 'verify_resize',
- vm_states.PAUSE: 'pause',
- vm_states.SUSPEND: 'suspend',
- vm_states.RESCUE: 'rescue'
+ vm_states.PAUSED: 'pause',
+ vm_states.SUSPENDED: 'suspend',
+ vm_states.RESCUED: 'rescue'
}
@@ -1065,8 +1064,8 @@ class CloudController(object):
def _format_attr_instance_initiated_shutdown_behavior(instance,
result):
vm_state = instance['vm_state']
- state_to_value = {vm_states.STOP: 'stop',
- vm_states.DELETE: 'terminate'}
+ state_to_value = {vm_states.STOPPED: 'stop',
+ vm_states.DELETED: 'terminate'}
value = state_to_value.get(vm_state)
if value:
result['instanceInitiatedShutdownBehavior'] = value
@@ -1645,7 +1644,7 @@ class CloudController(object):
vm_state = instance['vm_state']
# if the instance is in subtle state, refuse to proceed.
- if vm_state not in (vm_states.ACTIVE, vm_states.STOP):
+ if vm_state not in (vm_states.ACTIVE, vm_states.STOPPED):
raise exception.InstanceNotRunning(instance_id=ec2_instance_id)
if vm_state == vm_states.ACTIVE:
@@ -1654,7 +1653,7 @@ class CloudController(object):
# wait instance for really stopped
start_time = time.time()
- while vm_state != vm_states.STOP:
+ while vm_state != vm_states.STOPPED:
time.sleep(1)
instance = self.compute_api.get(context, instance_id)
vm_state = instance['vm_state']
diff --git a/nova/api/openstack/common.py b/nova/api/openstack/common.py
index 778c1e514..90b2095b8 100644
--- a/nova/api/openstack/common.py
+++ b/nova/api/openstack/common.py
@@ -40,32 +40,57 @@ XML_NS_V11 = 'http://docs.openstack.org/compute/api/v1.1'
_STATE_MAP = {
- vm_states.ACTIVE: 'ACTIVE',
- vm_states.BUILD: 'BUILD',
- vm_states.REBUILD: 'REBUILD',
- vm_states.REBOOT: 'REBOOT',
- vm_states.HARD_REBOOT: 'HARD_REBOOT',
- vm_states.STOP: 'STOPPED',
- vm_states.MIGRATE: 'MIGRATING',
- vm_states.RESIZE: 'RESIZE',
- vm_states.VERIFY_RESIZE: 'VERIFY_RESIZE',
- vm_states.PAUSE: 'PAUSED',
- vm_states.SUSPEND: 'SUSPENDED',
- vm_states.RESCUE: 'RESCUE',
- vm_states.ERROR: 'ERROR',
+ vm_states.ACTIVE: {
+ 'default': 'ACTIVE',
+ task_states.REBOOTING: 'REBOOT',
+ task_states.HARD_REBOOTING: 'HARD_REBOOT',
+ task_states.PASSWORD: 'PASSWORD',
+ },
+ vm_states.BUILDING: {
+ 'default': 'BUILD',
+ },
+ vm_states.REBUILDING: {
+ 'default': 'REBUILD',
+ },
+ vm_states.STOPPED: {
+ 'default': 'STOPPED',
+ },
+ vm_states.MIGRATING: {
+ 'default': 'MIGRATING',
+ },
+ vm_states.RESIZING: {
+ 'default': 'RESIZE',
+ },
+ vm_states.VERIFY_RESIZE: {
+ 'default': 'VERIFY_RESIZE',
+ },
+ vm_states.PAUSED: {
+ 'default': 'PAUSED',
+ },
+ vm_states.SUSPENDED: {
+ 'default': 'SUSPENDED',
+ },
+ vm_states.RESCUED: {
+ 'default': 'RESCUE',
+ },
+ vm_states.ERROR: {
+ 'default': 'ERROR',
+ },
}
-def status_from_state(_vm_state, task_state=None):
+def status_from_state(vm_state, task_state='default'):
"""Given vm_state and task_state, return a status string."""
- if _vm_state == vm_states.ACTIVE and task_state == task_states.PASSWORD:
- return "PASSWORD"
- return _STATE_MAP.get(_vm_state, "UNKNOWN_STATE")
+ LOG.debug("Generating status for vm_state=%(vm_state)s "
+ "task_state=%(task_state)s." % locals())
+ task_map = _STATE_MAP.get(vm_state, dict(default='UNKNOWN_STATE'))
+ return task_map.get(task_state, task_map['default'])
def vm_state_from_status(status):
"""Map the server status string to a vm state."""
- for state, status_string in _STATE_MAP.iteritems():
+ for state, task_map in _STATE_MAP.iteritems():
+ status_string = task_map.get("default")
if status.lower() == status_string.lower():
return state
diff --git a/nova/api/openstack/views/servers.py b/nova/api/openstack/views/servers.py
index 0d8eeb752..05d6b32c0 100644
--- a/nova/api/openstack/views/servers.py
+++ b/nova/api/openstack/views/servers.py
@@ -61,7 +61,7 @@ class ViewBuilder(object):
def _build_detail(self, inst):
"""Returns a detailed model of a server."""
- vm_state = inst.get('vm_state', vm_states.BUILD)
+ vm_state = inst.get('vm_state', vm_states.BUILDING)
task_state = inst.get('task_state')
inst_dict = {