# HG changeset patch
# User Alastair Tse <atse@xxxxxxxxxxxxx>
# Node ID 7ae6323db2f8d35d9d8e99b6494da6e9ca47279b
# Parent f0c7f258c19e0bd1f231dab4185287a0cff4db73
[XEND] Remove mistake of not checking xenstore's name entry for Dom0
Also fix logic with detecting whether devid is an int or not because
xm passes this as a string all the time.
Signed-off-by: Alastair Tse <atse@xxxxxxxxxxxxx>
---
tools/python/xen/xend/XendDomain.py | 3 -
tools/python/xen/xend/XendDomainInfo.py | 55 +++++++++++++++++---------------
2 files changed, 31 insertions(+), 27 deletions(-)
diff -r f0c7f258c19e -r 7ae6323db2f8 tools/python/xen/xend/XendDomain.py
--- a/tools/python/xen/xend/XendDomain.py Thu Oct 19 17:46:54 2006 +0100
+++ b/tools/python/xen/xend/XendDomain.py Thu Oct 19 17:48:54 2006 +0100
@@ -93,9 +93,8 @@ class XendDomain:
dom0info = [d for d in self._running_domains() \
if d['domid'] == DOM0_ID][0]
+ dom0info['name'] = DOM0_NAME
dom0 = XendDomainInfo.recreate(dom0info, True)
- # Sometimes this is not set?
- dom0.setName(DOM0_NAME)
self._add_domain(dom0)
except IndexError:
raise XendError('Unable to find Domain 0')
diff -r f0c7f258c19e -r 7ae6323db2f8 tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py Thu Oct 19 17:46:54 2006 +0100
+++ b/tools/python/xen/xend/XendDomainInfo.py Thu Oct 19 17:48:54 2006 +0100
@@ -29,6 +29,7 @@ import threading
import threading
import re
import copy
+from types import StringTypes
import xen.lowlevel.xc
from xen.util import asserts
@@ -183,7 +184,8 @@ def recreate(info, priv):
raise XendError('No domain path in store for existing '
'domain %d' % domid)
- log.info("Recreating domain %d, UUID %s.", domid, xeninfo['uuid'])
+ log.info("Recreating domain %d, UUID %s. at %s" %
+ (domid, xeninfo['uuid'], dompath))
# need to verify the path and uuid if not Domain-0
# if the required uuid and vm aren't set, then that means
@@ -193,29 +195,28 @@ def recreate(info, priv):
# abort or ignore, but there may be cases where xenstore's
# entry disappears (eg. xenstore-rm /)
#
- if domid != 0:
- try:
- vmpath = xstransact.Read(dompath, "vm")
- if not vmpath:
- log.warn('/dom/%d/vm is missing. recreate is confused, '
- 'trying our best to recover' % domid)
- needs_reinitialising = True
- raise XendError('reinit')
-
- uuid2_str = xstransact.Read(vmpath, "uuid")
- if not uuid2_str:
- log.warn('%s/uuid/ is missing. recreate is confused, '
- 'trying our best to recover' % vmpath)
- needs_reinitialising = True
- raise XendError('reinit')
-
- uuid2 = uuid.fromString(uuid2_str)
- if uuid1 != uuid2:
- log.warn('UUID in /vm does not match the UUID in /dom/%d.'
- 'Trying out best to recover' % domid)
- needs_reinitialising = True
- except XendError:
- pass # our best shot at 'goto' in python :)
+ try:
+ vmpath = xstransact.Read(dompath, "vm")
+ if not vmpath:
+ log.warn('/local/domain/%d/vm is missing. recreate is '
+ 'confused, trying our best to recover' % domid)
+ needs_reinitialising = True
+ raise XendError('reinit')
+
+ uuid2_str = xstransact.Read(vmpath, "uuid")
+ if not uuid2_str:
+ log.warn('%s/uuid/ is missing. recreate is confused, '
+ 'trying our best to recover' % vmpath)
+ needs_reinitialising = True
+ raise XendError('reinit')
+
+ uuid2 = uuid.fromString(uuid2_str)
+ if uuid1 != uuid2:
+ log.warn('UUID in /vm does not match the UUID in /dom/%d.'
+ 'Trying out best to recover' % domid)
+ needs_reinitialising = True
+ except XendError:
+ pass # our best shot at 'goto' in python :)
vm = XendDomainInfo(xeninfo, domid, dompath, augment = True, priv = priv)
@@ -537,7 +538,10 @@ class XendDomainInfo:
self.getDeviceController(devclass).waitForDevices()
def destroyDevice(self, deviceClass, devid):
- if type(devid) is str:
+ try:
+ devid = int(devid)
+ except ValueError:
+ # devid is not a number, let's search for it in xenstore.
devicePath = '%s/device/%s' % (self.dompath, deviceClass)
for entry in xstransact.List(devicePath):
backend = xstransact.Read('%s/%s' % (devicePath, entry),
@@ -547,6 +551,7 @@ class XendDomainInfo:
# We found the integer matching our devid, use it instead
devid = entry
break
+
return self.getDeviceController(deviceClass).destroyDevice(devid)
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|