[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Reinstate the reboot-feature code that was accidentally lost as part of the
# HG changeset patch # User Ewan Mellor <ewan@xxxxxxxxxxxxx> # Node ID 2e9eb9980c41ac7f0412466daecbb084cbdc6e84 # Parent c7e33053f59b6cc852c08539c2be907feb5fa68c Reinstate the reboot-feature code that was accidentally lost as part of the merge in changeset 12189. Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx> --- tools/python/xen/xend/image.py | 35 +++++++++++++++++++++++++++++++++++ 1 files changed, 35 insertions(+) diff -r c7e33053f59b -r 2e9eb9980c41 tools/python/xen/xend/image.py --- a/tools/python/xen/xend/image.py Thu Nov 30 17:53:59 2006 +0000 +++ b/tools/python/xen/xend/image.py Thu Nov 30 17:28:51 2006 +0000 @@ -280,6 +280,7 @@ class HVMImageHandler(ImageHandler): log.debug("apic = %d", self.apic) self.register_shutdown_watch() + self.register_reboot_feature_watch() return xc.hvm_build(domid = self.vm.getDomid(), image = self.kernel, @@ -420,6 +421,7 @@ class HVMImageHandler(ImageHandler): def destroy(self): self.unregister_shutdown_watch() + self.unregister_reboot_feature_watch(); if not self.pid: return try: @@ -469,6 +471,39 @@ class HVMImageHandler(ImageHandler): vm.refreshShutdown(vm.info) return 1 # Keep watching + + def register_reboot_feature_watch(self): + """ add xen store watch on control/feature-reboot """ + self.rebootFeatureWatch = xswatch(self.vm.dompath + "/control/feature-reboot", \ + self.hvm_reboot_feature) + log.debug("hvm reboot feature watch registered") + + def unregister_reboot_feature_watch(self): + """Remove the watch on the control/feature-reboot, if any. Nothrow + guarantee.""" + + try: + if self.rebootFeatureWatch: + self.rebootFeatureWatch.unwatch() + except: + log.exception("Unwatching hvm reboot feature watch failed.") + self.rebootFeatureWatch = None + log.debug("hvm reboot feature watch unregistered") + + def hvm_reboot_feature(self, _): + """ watch call back on node control/feature-reboot, + if node changed, this function will be called + """ + xd = xen.xend.XendDomain.instance() + vm = xd.domain_lookup( self.vm.getDomid() ) + + status = vm.readDom('control/feature-reboot') + log.debug("hvm_reboot_feature fired, module status=%s", status) + if status == '1': + self.unregister_shutdown_watch() + + return 1 # Keep watching + class IA64_HVM_ImageHandler(HVMImageHandler): _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |