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] Fixes for xm list output

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [XEND][XM] Fixes for xm list output
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 02 Nov 2006 22:10:22 +0000
Delivery-date: Thu, 02 Nov 2006 21:45:00 -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 41ad2c673fdb39524d4388c82bb8b04f1a0c0042
# Parent  70687bcb82dd0b2d5813e6125c95ff908e25c94d
[XEND][XM] Fixes for xm list output

Do not output image, security if they are empty
Change xm list slightly to be more informative about state.
Add back store_mfn and console_mfn to the SXP so save/restore can work
again.

Signed-off-by: Alastair Tse <atse@xxxxxxxxxxxxx>
---
 tools/python/xen/xend/XendConfig.py |   52 +++++++++---------------------------
 tools/python/xen/xm/main.py         |   20 ++++++++-----
 2 files changed, 26 insertions(+), 46 deletions(-)

diff -r 70687bcb82dd -r 41ad2c673fdb tools/python/xen/xend/XendConfig.py
--- a/tools/python/xen/xend/XendConfig.py       Thu Nov 02 07:46:06 2006 +0000
+++ b/tools/python/xen/xend/XendConfig.py       Thu Nov 02 14:26:01 2006 +0000
@@ -24,47 +24,13 @@ from xen.xend.XendDevices import XendDev
 from xen.xend.XendDevices import XendDevices
 from xen.xend.XendLogging import log
 from xen.xend.PrettyPrint import prettyprintstring
+from xen.xend.XendConstants import DOM_STATE_HALTED
 
 """
 XendConfig API
 
   XendConfig will try to mirror as closely the Xen API VM Struct
   providing a backwards compatibility mode for SXP dumping, loading.
-
-XendConfig is a subclass of the python dict in order to emulate the
-previous behaviour of the XendDomainInfo.info dictionary. However,
-the new dictionary also exposes a set of attributes that implement
-the Xen API VM configuration interface.
-
-Example:
-
->>> cfg = XendConfig(cfg = dict_from_xc_domain_getinfo)
->>> cfg.name_label
-Domain-0
->>> cfg['name']
-Domain-0
->>> cfg.kernel_kernel
-/boot/vmlinuz-xen
->>> cfg.kernel_initrd
-/root/initrd
->>> cfg.kernel_args
-root=/dev/sda1 ro
->>> cfg['image']
-(linux
-  (kernel /boot/vmlinuz-xen)
-  (ramdisk /root/initrd)
-  (root '/dev/sda1 ro'))
->>>  
-
-Internally, XendConfig will make sure changes via the old 'dict'
-interface get reflected, if possible, to the attribute store.
-
-It does this by overriding __setitem__, __getitem__, __hasitem__,
-__getattr__, __setattr__, __hasattr__.
-
-What this means is that as code is moved from the SXP interface to
-the Xen API interface, we can spot unported code by tracing calls
-to  __getitem__ and __setitem__.
 
 """
 
@@ -665,9 +631,9 @@ class XendConfig(dict):
                 if self[cfg] != None:
                     sxpr.append([cfg, self[cfg]])
 
-        if 'image' in self:
+        if 'image' in self and self['image'] != None:
             sxpr.append(['image', self['image']])
-        if 'security' in self:
+        if 'security' in self and self['security']:
             sxpr.append(['security', self['security']])
         if 'shutdown_reason' in self:
             sxpr.append(['shutdown_reason', self['shutdown_reason']])
@@ -684,7 +650,17 @@ class XendConfig(dict):
         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])
+        if domain:
+            sxpr.append(['status', domain.state])
+        else:
+            sxpr.append(['status', DOM_STATE_HALTED])
+
+        # For save/restore migration
+        if domain:
+            if domain.store_mfn:
+                sxpr.append(['store_mfn', domain.store_mfn])
+            if domain.console_mfn:
+                sxpr.append(['console_mfn', domain.console_mfn])
 
         # Marshall devices (running or from configuration)
         if not ignore_devices:
diff -r 70687bcb82dd -r 41ad2c673fdb tools/python/xen/xm/main.py
--- a/tools/python/xen/xm/main.py       Thu Nov 02 07:46:06 2006 +0000
+++ b/tools/python/xen/xm/main.py       Thu Nov 02 14:26:01 2006 +0000
@@ -39,6 +39,7 @@ from xen.xend import sxp
 from xen.xend import sxp
 from xen.xend import XendClient
 from xen.xend.XendClient import server
+from xen.xend.XendConstants import *
 
 from xen.xm.opts import OptionError, Opts, wrap, set_true
 from xen.xm import console
@@ -532,13 +533,16 @@ def parse_doms_info(info):
 def parse_doms_info(info):
     def get_info(n, t, d):
         return t(sxp.child_value(info, n, d))
+
+    def get_status(n, t, d):
+        return DOM_STATES[t(sxp.child_value(info, n, d))]
     
     return {
         'domid'    : get_info('domid',        int,   -1),
         'name'     : get_info('name',         str,   '??'),
         'mem'      : get_info('memory',       int,   0),
         'vcpus'    : get_info('online_vcpus', int,   0),
-        'state'    : get_info('state',        str,   '??'),
+        'status'   : get_status('status',     int,   DOM_STATE_HALTED),
         'cpu_time' : get_info('cpu_time',     float, 0),
         'up_time'  : get_info('up_time',      float, -1),
         'seclabel' : security.get_security_printlabel(info),
@@ -559,10 +563,10 @@ def parse_sedf_info(info):
         }
 
 def xm_brief_list(doms):
-    print '%-40s %3s %8s %5s %5s %9s' % \
-          ('Name', 'ID', 'Mem(MiB)', 'VCPUs', 'State', 'Time(s)')
-    
-    format = "%(name)-40s %(domid)3d %(mem)8d %(vcpus)5d %(state)5s " \
+    print '%-40s %3s %5s %5s %10s %9s' % \
+          ('Name', 'ID', 'Mem', 'VCPUs', 'State', 'Time(s)')
+    
+    format = "%(name)-40s %(domid)3d %(mem)5d %(vcpus)5d %(status)10s " \
              "%(cpu_time)8.1f"
     
     for dom in doms:
@@ -570,11 +574,11 @@ def xm_brief_list(doms):
         print format % d
 
 def xm_label_list(doms):
-    print '%-32s %3s %8s %5s %5s %9s %-8s' % \
-          ('Name', 'ID', 'Mem(MiB)', 'VCPUs', 'State', 'Time(s)', 'Label')
+    print '%-32s %3s %5s %5s %5s %9s %-8s' % \
+          ('Name', 'ID', 'Mem', 'VCPUs', 'State', 'Time(s)', 'Label')
     
     output = []
-    format = '%(name)-32s %(domid)3d %(mem)8d %(vcpus)5d %(state)5s ' \
+    format = '%(name)-32s %(domid)3d %(mem)5d %(vcpus)5d %(status)10s ' \
              '%(cpu_time)8.1f %(seclabel)9s'
     
     for dom in doms:

_______________________________________________
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] Fixes for xm list output, Xen patchbot-unstable <=