summaryrefslogtreecommitdiffstats
path: root/nova/compute
diff options
context:
space:
mode:
authorTrey Morris <trey.morris@rackspace.com>2010-12-09 16:41:35 +0000
committerTrey Morris <trey.morris@rackspace.com>2010-12-09 16:41:35 +0000
commit5f72a004dee0cb8de3f2daee1976fa978f6e51f3 (patch)
tree1f5e13c9eb91e5895a3cb8bdf370e8947fa31763 /nova/compute
parentcc83aa52086f1472a97914b36f7c4ef7ebb52750 (diff)
pause from compute.manager <-> xenapi
Diffstat (limited to 'nova/compute')
-rw-r--r--nova/compute/manager.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index dd8d41129..c0339a71f 100644
--- a/nova/compute/manager.py
+++ b/nova/compute/manager.py
@@ -194,6 +194,38 @@ class ComputeManager(manager.Manager):
yield self.driver.unrescue(instance_ref)
self._update_state(context, instance_id)
+ @defer.inlineCallbacks
+ @exception.wrap_exception
+ def pause_instance(self, context, instance_id):
+ """Pause an instance on this server."""
+ context = context.elevated()
+ instance_ref = self.db.instance_get(context, instance_id)
+
+ logging.debug('instance %s: pausing',
+ instance_ref['internal_id'])
+ self.db.instance_set_state(context,
+ instance_id,
+ power_state.NOSTATE,
+ 'pausing')
+ yield self.driver.pause(instance_ref)
+ self._update_state(context, instance_id)
+
+ @defer.inlineCallbacks
+ @exception.wrap_exception
+ def resume_instance(self, context, instance_id):
+ """Resume a paused instance on this server."""
+ context = context.elevated()
+ instance_ref = self.db.instance_get(context, instance_id)
+
+ logging.debug('instance %s: resuming',
+ instance_ref['internal_id'])
+ self.db.instance_set_state(context,
+ instance_id,
+ power_state.NOSTATE,
+ 'resume')
+ yield self.driver.resume(instance_ref)
+ self._update_state(context, instance_id)
+
@exception.wrap_exception
def get_console_output(self, context, instance_id):
"""Send the console output for an instance."""