summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Prince <dan.prince@rackspace.com>2011-08-17 11:46:28 -0400
committerDan Prince <dan.prince@rackspace.com>2011-08-17 11:46:28 -0400
commit5270b0a565ec26d2f7de3a7d95be86433d8c6bd2 (patch)
treec05a46716536b79decccb20a8e7d0231d62be86b
parenta81aae612f409bc767af3013eeccb71226831fc2 (diff)
Split set state into vm, task, and power state functions.
-rw-r--r--nova/db/sqlalchemy/api.py46
1 files changed, 37 insertions, 9 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 57a4370d8..07207b8ee 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -1439,15 +1439,43 @@ def instance_get_floating_address(context, instance_id):
@require_admin_context
-def instance_set_state(context, instance_id, state, description=None):
- # TODO(devcamcar): Move this out of models and into driver
- from nova.compute import power_state
- if not description:
- description = power_state.name(state)
- db.instance_update(context,
- instance_id,
- {'state': state,
- 'state_description': description})
+def instance_set_power_state(context, instance_id, power_state):
+ session = get_session()
+ partial = session.query(models.Instance)
+
+ if utils.is_uuid_like(instance_id):
+ result = partial.filter_by(uuid=instance_id)
+ else:
+ result = partial.filter_by(id=instance_id)
+
+ result.update({'power_state': power_state})
+
+
+@require_admin_context
+def instance_set_vm_state(context, instance_id, vm_state):
+ # vm_state = running, halted, suspended, paused
+ session = get_session()
+ partial = session.query(models.Instance)
+
+ if utils.is_uuid_like(instance_id):
+ result = partial.filter_by(uuid=instance_id)
+ else:
+ result = partial.filter_by(id=instance_id)
+
+ result.update({'vm_state': vm_state})
+
+
+def instance_set_task_state(context, instance_id, task_state):
+ # task_state = running, halted, suspended, paused
+ session = get_session()
+ partial = session.query(models.Instance)
+
+ if utils.is_uuid_like(instance_id):
+ result = partial.filter_by(uuid=instance_id)
+ else:
+ result = partial.filter_by(id=instance_id)
+
+ result.update({'task_state': task_state})
@require_context