# 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
|