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][XM] Fix bug in XendDomainInfo.recr

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [XEND][XM] Fix bug in XendDomainInfo.recreate introduced by refactoring.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 02 Nov 2006 22:08:38 +0000
Delivery-date: Thu, 02 Nov 2006 21:40:02 -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 acb85833be66180659fd633253aa72e10ebddd12
# Parent  d1f6aa51621f27168816904a6c97b46d2012d5aa
[XEND][XM] Fix bug in XendDomainInfo.recreate introduced by refactoring.

* Replaced autostart and autostop with more descriptive on_xend_start
  and on_xend_stop for the configuration.

Signed-off-by: Alastair Tse <atse@xxxxxxxxxxxxx>
---
 tools/python/xen/xend/XendConfig.py     |   18 +++++-------
 tools/python/xen/xend/XendDomain.py     |    3 --
 tools/python/xen/xend/XendDomainInfo.py |   48 +++++++++++++++++---------------
 tools/python/xen/xm/create.py           |   21 ++++++--------
 4 files changed, 44 insertions(+), 46 deletions(-)

diff -r d1f6aa51621f -r acb85833be66 tools/python/xen/xend/XendConfig.py
--- a/tools/python/xen/xend/XendConfig.py       Thu Oct 05 18:22:13 2006 +0100
+++ b/tools/python/xen/xend/XendConfig.py       Thu Oct 05 18:24:18 2006 +0100
@@ -124,12 +124,11 @@ XENAPI_UNSUPPORTED_IN_LEGACY_CFG = [
 
 # All parameters of VMs that may be configured on-the-fly, or at start-up.
 VM_CONFIG_ENTRIES = [
-    ('autostart',  int),
-    ('autostop',   int),    
     ('name',        str),
     ('on_crash',    str),
     ('on_poweroff', str),
     ('on_reboot',   str),
+    ('on_xend_start', str),
     ('on_xend_stop', str),        
 ]
 
@@ -216,9 +215,8 @@ DEFAULT_CONFIGURATION = (
     ('device',       lambda info: {}),
     ('image',        lambda info: None),
     ('security',     lambda info: []),
-    ('autostart',    lambda info: 0),
-    ('autostop',     lambda info: 0),
-    ('on_xend_stop', lambda info: 'shutdown'),
+    ('on_xend_start', lambda info: 'ignore'),    
+    ('on_xend_stop', lambda info: 'ignore'),
 
     ('cpus',         lambda info: []),
     ('cpu_weight',   lambda info: 1.0),
@@ -469,7 +467,7 @@ class XendConfig(dict):
             dev_info = {}
             for opt, val in config[1:]:
                 dev_info[opt] = val
-
+            log.debug("XendConfig: reading device: %s" % dev_info)
             # create uuid if it doesn't
             dev_uuid = dev_info.get('uuid', uuid.createString())
             dev_info['uuid'] = dev_uuid
@@ -654,9 +652,8 @@ class XendConfig(dict):
             sxpr.append(['up_time', str(uptime)])
             sxpr.append(['start_time', str(self['start_time'])])
 
-        sxpr.append(['autostart', self.get('autostart', 0)])
-        sxpr.append(['autostop', self.get('autostop', 0)])
-        sxpr.append(['on_xend_stop', self.get('on_xend_stop', 'shutdown')])
+        sxpr.append(['on_xend_start', self.get('on_xend_start', 'ignore')])
+        sxpr.append(['on_xend_stop', self.get('on_xend_stop', 'ignore')])
 
         sxpr.append(['status', domain.state])
 
@@ -729,6 +726,8 @@ class XendConfig(dict):
             raise XendConfigError("XendConfig: device_add requires some "
                                   "config.")
 
+        log.debug("XendConfig.device_add: %s" % str(cfg_sxp))
+
         if cfg_sxp:
             config = sxp.child0(cfg_sxp)
             dev_type = sxp.name(config)
@@ -738,7 +737,6 @@ class XendConfig(dict):
                 for opt, val in config[1:]:
                     dev_info[opt] = val
             except ValueError:
-                log.debug('XendConfig.device_add: %s' % config)
                 pass # SXP has no options for this device
 
             # create uuid if it doesn't exist
diff -r d1f6aa51621f -r acb85833be66 tools/python/xen/xend/XendDomain.py
--- a/tools/python/xen/xend/XendDomain.py       Thu Oct 05 18:22:13 2006 +0100
+++ b/tools/python/xen/xend/XendDomain.py       Thu Oct 05 18:24:18 2006 +0100
@@ -523,8 +523,7 @@ class XendDomain:
                     continue
                 
                 if dom.state == XendDomainInfo.DOM_STATE_RUNNING:
-                    shouldShutdown = dom.info.get('autostop', 0)
-                    shutdownAction = dom.info.get('on_xend_stop', 'shutdown')
+                    shutdownAction = dom.info.get('on_xend_stop', 'ignore')
                     if shouldShutdown and shutdownAction == 'shutdown':
                         log.debug('Shutting down domain: %s' % dom.getName())
                         dom.shutdown("poweroff")
diff -r d1f6aa51621f -r acb85833be66 tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Thu Oct 05 18:22:13 2006 +0100
+++ b/tools/python/xen/xend/XendDomainInfo.py   Thu Oct 05 18:24:18 2006 +0100
@@ -102,8 +102,7 @@ VM_STORE_ENTRIES = [
     ('shadow_memory', int),
     ('maxmem',        int),
     ('start_time',    float),
-    ('autostart',  int),
-    ('autostop',   int),
+    ('on_xend_start', str),
     ('on_xend_stop', str),
     ]
 
@@ -194,23 +193,28 @@ def recreate(info, priv):
     #       entry disappears (eg. xenstore-rm /)
     #
     if domid != 0:
-        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
-        
-        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
-
-        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
+        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 :)
 
     vm = XendDomainInfo(xeninfo, domid, dompath, augment = True, priv = priv)
     
@@ -263,7 +267,6 @@ def createDormant(xeninfo):
     
     # Remove domid and uuid do not make sense for non-running domains.
     xeninfo.pop('domid', None)
-    xeninfo.pop('uuid', None)
     vm = XendDomainInfo(XendConfig(cfg = xeninfo))
     return vm    
 
@@ -506,10 +509,11 @@ class XendDomainInfo:
         @param dev_config: device configuration
         @type  dev_config: dictionary (parsed config)
         """
+        log.debug("XendDomainInfo.device_create: %s" % dev_config)
         dev_type = sxp.name(dev_config)
         devid = self._createDevice(dev_type, dev_config)
+        self.info.device_add(dev_type, cfg_sxp = dev_config)        
         self._waitForDevice(dev_type, devid)
-        self.info.device_add(dev_type, cfg_sxp = dev_config)
         return self.getDeviceController(dev_type).sxpr(devid)
 
     def device_configure(self, dev_config, devid):
@@ -622,7 +626,7 @@ class XendDomainInfo:
 
         if not self.info['device'] and devices is not None:
             for device in devices:
-                self.info.device_add(device[0], cfg_sxp = device[1])
+                self.info.device_add(device[0], cfg_sxp = device)
 
     #
     # Function to update xenstore /vm/*
diff -r d1f6aa51621f -r acb85833be66 tools/python/xen/xm/create.py
--- a/tools/python/xen/xm/create.py     Thu Oct 05 18:22:13 2006 +0100
+++ b/tools/python/xen/xm/create.py     Thu Oct 05 18:24:18 2006 +0100
@@ -439,17 +439,14 @@ gopts.var('uuid', val='',
           addresses for virtual network interfaces.  This must be a unique 
           value across the entire cluster.""")
 
-gopts.var('autostart', val='no|yes',
-          fn=set_bool, default=0,
-          use="Should the start VM automatically when Xend starts.")
-
-gopts.var('autostop', val='no|yes',
-          fn=set_bool, default=0,
-          use="Should stop VM automatically when Xend stops.")
-
-gopts.var('on_xend_stop', val='shtudown|suspend',
-          fn=set_value, default="shutdown",
-          use="""Behaviour when Xend stops and autostop is on:
+gopts.var('on_xend_start', val='ignore|start',
+          fn=set_value, default='ignore',
+          use='Action to perform when xend starts')
+
+gopts.var('on_xend_stop', val='continue|shutdown|suspend',
+          fn=set_value, default="ignore",
+          use="""Behaviour when Xend stops:
+          - ignore:         Domain continues to run;
           - shutdown:       Domain is shutdown;
           - suspend:        Domain is suspended;
           """)
@@ -685,7 +682,7 @@ def make_config(vals):
     map(add_conf, ['name', 'memory', 'maxmem', 'shadow_memory',
                    'restart', 'on_poweroff',
                    'on_reboot', 'on_crash', 'vcpus', 'features',
-                   'autostart', 'autostop', 'on_xend_stop'])
+                   'on_xend_start', 'on_xend_stop'])
 
     if vals.uuid is not None:
         config.append(['uuid', vals.uuid])

_______________________________________________
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][XM] Fix bug in XendDomainInfo.recreate introduced by refactoring., Xen patchbot-unstable <=