# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1202376466 0
# Node ID d04593aa1605fd337423b2c1296e275424e06656
# Parent 45b2e7d59e3a1895e903cbb7939e79c2f1f351d6
xm reboot: Fix wait option of xm reboot command
When I rebooted a domain by xm reboot command with wait option,
I saw the following message. But, rebooting the domain succeeded.
Domain vm1 destroyed for failed in rebooting
The cause why the message was shown is the domain is destroyed
temporarily by processing of xm reboot command. The domain
information is not gotten from Xend by server.xend.domains()
function till recreating the domain is completed.
This patch fixes processing of xm reboot command in Xm side.
It waits just a bit till recreating the domain is completed,
then it measures the success or failure of the reboot of the
domain.
Signed-off-by: Masaki Kanno <kanno.masaki@xxxxxxxxxxxxxx>
---
tools/python/xen/xm/shutdown.py | 15 +++++++++++++--
1 files changed, 13 insertions(+), 2 deletions(-)
diff -r 45b2e7d59e3a -r d04593aa1605 tools/python/xen/xm/shutdown.py
--- a/tools/python/xen/xm/shutdown.py Thu Feb 07 09:21:19 2008 +0000
+++ b/tools/python/xen/xm/shutdown.py Thu Feb 07 09:27:46 2008 +0000
@@ -23,6 +23,8 @@ from opts import *
from opts import *
from main import server, serverType, SERVER_XEN_API, get_single_vm
from xen.xend.XendAPIConstants import *
+
+RECREATING_TIMEOUT = 30
gopts = Opts(use="""[options] [DOM]
@@ -53,6 +55,7 @@ def wait_reboot(opts, doms, rcs):
if serverType == SERVER_XEN_API:
opts.err("Cannot wait for reboot w/ XenAPI (yet)")
+ recreating = {}
while doms:
alive = server.xend.domains(0)
reboot = []
@@ -61,9 +64,17 @@ def wait_reboot(opts, doms, rcs):
rc = server.xend.domain.getRestartCount(d)
if rc == rcs[d]: continue
reboot.append(d)
+
+ # Probably the domain is being recreated now.
+ # We have to wait just a bit for recreating the domain.
+ elif not recreating.has_key(d):
+ recreating[d] = 0
else:
- opts.info("Domain %s destroyed for failed in rebooting" % d)
- doms.remove(d)
+ recreating[d] += 1
+ if recreating[d] > RECREATING_TIMEOUT:
+ opts.info("Domain %s destroyed for failing to reboot" % d)
+ doms.remove(d)
+
for d in reboot:
opts.info("Domain %s rebooted" % d)
doms.remove(d)
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|