WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] [XEND] Remove mistake of not checking xen

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [XEND] Remove mistake of not checking xenstore's name entry for Dom0
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 02 Nov 2006 22:09:12 +0000
Delivery-date: Thu, 02 Nov 2006 21:41:35 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# 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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] [XEND] Remove mistake of not checking xenstore's name entry for Dom0, Xen patchbot-unstable <=