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] Prevent uuid double use.

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [XEND] Prevent uuid double use.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 12 Jul 2006 16:50:16 +0000
Delivery-date: Wed, 12 Jul 2006 09:52:31 -0700
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 kfraser@xxxxxxxxxxxxxxxxxxxxx
# Node ID 800261a88275baa3f031aaeb9d847e1d2b20ebd3
# Parent  a1c2cede77c78d2af99088d7dece8f74f2a27260
[XEND] Prevent uuid double use.

A check_uuid() in this patch checks on uuid of the
VM configuration definition. If specified uuid is
already used with the others VM, the xm create command 
does not create the VM. The xm create command error occurs.

Signed-off-by: Masaki Kanno <kanno.masaki@xxxxxxxxxxxxxx>
---
 tools/python/xen/xend/XendDomain.py     |   13 +++++++++++++
 tools/python/xen/xend/XendDomainInfo.py |   25 +++++++++++++++++++++++++
 2 files changed, 38 insertions(+)

diff -r a1c2cede77c7 -r 800261a88275 tools/python/xen/xend/XendDomain.py
--- a/tools/python/xen/xend/XendDomain.py       Mon Jul 10 15:01:49 2006 +0100
+++ b/tools/python/xen/xend/XendDomain.py       Mon Jul 10 15:10:00 2006 +0100
@@ -347,6 +347,19 @@ class XendDomain:
             self.domains_lock.release()
 
 
+    def domain_lookup_by_uuid_nr(self, uuid):
+        self.domains_lock.acquire()
+        try:
+            matching = filter(lambda d: d.getUuid() == uuid,
+                              self.domains.values())
+            n = len(matching)
+            if n == 1:
+                return matching[0]
+            return None
+        finally:
+            self.domains_lock.release()
+
+
     def privilegedDomain(self):
         self.domains_lock.acquire()
         try:
diff -r a1c2cede77c7 -r 800261a88275 tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Mon Jul 10 15:01:49 2006 +0100
+++ b/tools/python/xen/xend/XendDomainInfo.py   Mon Jul 10 15:10:00 2006 +0100
@@ -396,6 +396,10 @@ def domain_by_name(name):
     return XendDomain.instance().domain_lookup_by_name_nr(name)
 
 
+def domain_by_uuid(uuid):
+    return XendDomain.instance().domain_lookup_by_uuid_nr(uuid)
+
+
 def shutdown_reason(code):
     """Get a shutdown reason from a code.
 
@@ -581,6 +585,7 @@ class XendDomainInfo:
             defaultInfo('security',     lambda: None)
 
             self.check_name(self.info['name'])
+            self.check_uuid(self.info['uuid'])
 
             if isinstance(self.info['image'], str):
                 self.info['image'] = sxp.from_string(self.info['image'])
@@ -777,6 +782,9 @@ class XendDomainInfo:
 
     def getName(self):
         return self.info['name']
+
+    def getUuid(self):
+        return self.info['uuid']
 
     def getDomainPath(self):
         return self.dompath
@@ -1205,6 +1213,23 @@ class XendDomainInfo:
         if dominfo.domid != self.domid:
             raise VmError("VM name '%s' is used in both domains %d and %d" %
                           (name, self.domid, dominfo.domid))
+
+
+    def check_uuid(self, uuid):
+        """The same uuid cannot be used for more than one vm at the same time.
+
+        @param uuid: uuid
+        @raise: VmError if same uuid is used
+        """
+        dominfo = domain_by_uuid(uuid)
+        if not dominfo:
+            return
+        if self.domid is None:
+            raise VmError("uuid '%s' already in use by domain %d" %
+                          (uuid, dominfo.domid))
+        if dominfo.domid != self.domid:
+            raise VmError("uuid '%s' is used in both domains %d and %d" %
+                          (uuid, self.domid, dominfo.domid))
 
 
     def construct(self):

_______________________________________________
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] Prevent uuid double use., Xen patchbot-unstable <=