diff --git a/lib/hypervisor.py b/lib/hypervisor.py index 4669c626cc699b82c676fd0c643ba2b5da3355ca..04737add1c101807deef000c789d4e451a828931 100644 --- a/lib/hypervisor.py +++ b/lib/hypervisor.py @@ -73,6 +73,10 @@ class BaseHypervisor(object): """Stop an instance.""" raise NotImplementedError + def RebootInstance(self, instance): + """Reboot an instance.""" + raise NotImplementedError + def ListInstances(self): """Get the list of running instances.""" raise NotImplementedError @@ -277,6 +281,14 @@ class XenHypervisor(BaseHypervisor): raise HypervisorError("Failed to stop instance %s: %s" % (instance.name, result.fail_reason)) + def RebootInstance(self, instance): + """Reboot an instance.""" + result = utils.RunCmd(["xm", "reboot", instance.name]) + + if result.failed: + raise HypervisorError("Failed to reboot instance %s: %s" % + (instance.name, result.fail_reason)) + def GetNodeInfo(self): """Return information about the node. @@ -438,6 +450,14 @@ class FakeHypervisor(BaseHypervisor): (instance.name, "not running")) utils.RemoveFile(file_name) + def RebootInstance(self, instance): + """Reboot an instance. + + For the fake hypervisor, this does nothing. + + """ + return + def GetNodeInfo(self): """Return information about the node.