63 lines
2.4 KiB
Diff
63 lines
2.4 KiB
Diff
# HG changeset patch
|
|
# User Keir Fraser <keir.fraser@citrix.com>
|
|
# 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@jp.fujitsu.com>
|
|
|
|
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)
|