Xen 
 
Home About Xen.org Xen Xen Summit Wiki Mailing List Bug Tracker Xen Downloads
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] Add domain name check and UUID check to '

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Add domain name check and UUID check to 'xm new' command.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 27 Jul 2007 03:21:33 -0700
Delivery-date: Fri, 27 Jul 2007 03:19:34 -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
# Date 1185296704 -3600
# Node ID 207582c8d88b532783da5c6f5839336187556f0a
# Parent  d9836851a2a4cf6e506f6a8e162a4c90c9f87d82
Add domain name check and UUID check to 'xm new' command.

Add a domain name check and a UUID check to xm new command. The check
logic is as follows:

 - If the UUID is not specified
       - If a VM with same name exists
           => Update the config for that existing VM
       - Else no vm with same name exists
           => Define a brand new VM with auto-generated UUID
 - Else UUID is specified
       - If a VM with same UUID exists
             - If name is different
                   => Error
             - Else if name is same
                   => Update the config for that existing VM
       - Else no VM with same UUID exists
             - If name is different
                   => Define a branch new VM with that name
             - Else if name is same
                   => Error

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

diff -r d9836851a2a4 -r 207582c8d88b tools/python/xen/xend/XendDomain.py
--- a/tools/python/xen/xend/XendDomain.py       Tue Jul 24 15:47:36 2007 +0100
+++ b/tools/python/xen/xend/XendDomain.py       Tue Jul 24 18:05:04 2007 +0100
@@ -51,6 +51,7 @@ from xen.xend.xenstore.xswatch import xs
 from xen.xend.xenstore.xswatch import xswatch
 from xen.util import mkdir
 from xen.xend import uuid
+from xen.xend import sxp
 
 xc = xen.lowlevel.xc.xc()
 xoptions = XendOptions.instance() 
@@ -968,6 +969,31 @@ class XendDomain:
         try:
             try:
                 domconfig = XendConfig.XendConfig(sxp_obj = config)
+                
+                domains = self.list('all')
+                domains = map(lambda dom: dom.sxpr(), domains)
+                for dom in domains:
+                    if sxp.child_value(config, 'uuid', None):
+                        if domconfig['uuid'] == sxp.child_value(dom, 'uuid'):
+                            if domconfig['name_label'] != sxp.child_value(dom, 
'name'):
+                                raise XendError("Domain UUID '%s' is already 
used." % \
+                                                domconfig['uuid'])
+                            else:
+                                # Update the config for that existing domain
+                                # because it is same name and same UUID.
+                                break
+                        else:
+                            if domconfig['name_label'] == sxp.child_value(dom, 
'name'):
+                                raise XendError("Domain name '%s' is already 
used." % \
+                                                domconfig['name_label'])
+                    else:
+                        if domconfig['name_label'] == sxp.child_value(dom, 
'name'):
+                            # Overwrite the auto-generated UUID by the UUID
+                            # of the existing domain. And update the config
+                            # for that existing domain.
+                            domconfig['uuid'] = sxp.child_value(dom, 'uuid')
+                            break
+                
                 dominfo = XendDomainInfo.createDormant(domconfig)
                 log.debug("Creating new managed domain: %s" %
                           dominfo.getName())

_______________________________________________
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] Add domain name check and UUID check to 'xm new' command., Xen patchbot-unstable <=