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-devel

Re: [Xen-devel] [PATCH] Even prettier printing of xm network-list/block-

To: Stefan Berger <stefanb@xxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] Even prettier printing of xm network-list/block-list/vtpm-list
From: Anthony Liguori <aliguori@xxxxxxxxxx>
Date: Fri, 10 Feb 2006 17:39:34 -0600
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Fri, 10 Feb 2006 23:51:18 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <1139604485.4101.1.camel@xxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <1139604485.4101.1.camel@xxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mail/News 1.5 (X11/20060119)
Thanks Stefan!

I had this on my TODO list too so I'm glad you got to it before I did :-)

Regards,

Anthony Liguori

Stefan Berger wrote:
This patch now also supports the --long option.

Signed-off-by: Stefan Berger <stefanb@xxxxxxxxxx>

------------------------------------------------------------------------

Index: xen/xen-unstable.hg/tools/python/xen/xm/main.py
===================================================================
--- xen.orig/xen-unstable.hg/tools/python/xen/xm/main.py
+++ xen/xen-unstable.hg/tools/python/xen/xm/main.py
@@ -684,29 +684,127 @@ def xm_log(args):
     from xen.xend.XendClient import server
     print server.xend_node_log()
+def parse_dev_info(info):
+    def get_info(n, t, d):
+        i = 0
+        while i < len(info):
+            if (info[i][0] == n):
+                return t(info[i][1])
+            i = i + 1
+        return t(d)
+    return {
+        #common
+        'backend-id' : get_info('backend-id',   int,   -1),
+        'handle'     : get_info('handle',       int,    0),
+        'state'      : get_info('state',        int,   -1),
+        'be-path'    : get_info('backend',      str,   '??'),
+        'event-ch'   : get_info('event-channel',int,   -1),
+        #network specific
+        'virtual-device' : get_info('virtual-device', str, '??'),
+        'tx-ring-ref': get_info('tx-ring-ref',  int,   -1),
+        'rx-ring-ref': get_info('rx-ring-ref',  int,   -1),
+        'mac'        : get_info('mac',          str,   '??'),
+        #block-device specific
+        'ring-ref'   : get_info('ring-ref',     int,   -1),
+        }
+
+def has_long_option(args):
+    use_long = 0
+    try:
+        (options, params) = getopt.gnu_getopt(args, 'l', ['long'])
+    except getopt.GetoptError, opterr:
+        err(opterr)
+        sys.exit(1)
+
+    for (k, v) in options:
+        if k in ['-l', '--long']:
+            use_long = 1
+    return (use_long, params)
+
 def xm_network_list(args):
-    arg_check(args, "network-list", 1)
-    dom = args[0]
+    arg_check(args, "network-list", 1, 2)
+
+    (use_long, params) = has_long_option(args)
+
+    dom = params[0]
     from xen.xend.XendClient import server
-    for x in server.xend_domain_devices(dom, 'vif'):
-        sxp.show(x)
-        print
+    if use_long:
+        devs = server.xend_domain_devices(dom, 'vif')
+        map(PrettyPrint.prettyprint, devs)
+    else:
+        hdr = 0
+        for x in server.xend_domain_devices(dom, 'vif'):
+            if hdr == 0:
+                print 'Attached network devices:'
+                print 'Idx BE     MAC Addr.     handle state evt-ch 
tx-/rx-ring-ref BE-path'
+                hdr = 1
+            ni = parse_dev_info(x[1])
+            ni['idx'] = int(x[0])
+            print ("%(idx)-3d "
+                   "%(backend-id)-3d"
+                   "%(mac)-17s    "
+                   "%(handle)-3d   "
+                   "%(state)-3d    "
+                   "%(event-ch)-3d   "
+                   "%(tx-ring-ref)-5d/%(rx-ring-ref)-5d   "
+                   "%(be-path)-30s  "
+                   % ni)
def xm_block_list(args):
-    arg_check(args, "block-list", 1)
-    dom = args[0]
+    arg_check(args, "block-list", 1, 2)
+
+    (use_long, params) = has_long_option(args)
+
+    dom = params[0]
     from xen.xend.XendClient import server
-    for x in server.xend_domain_devices(dom, 'vbd'):
-        sxp.show(x)
-        print
+    if use_long:
+        devs = server.xend_domain_devices(dom, 'vbd')
+        map(PrettyPrint.prettyprint, devs)
+    else:
+        hdr = 0
+        for x in server.xend_domain_devices(dom, 'vbd'):
+            if hdr == 0:
+                print 'Attached block devices:'
+                print 'Vdev  BE handle state evt-ch ring-ref BE-path'
+                hdr = 1
+            ni = parse_dev_info(x[1])
+            ni['idx'] = int(x[0])
+            print ("%(idx)-3d    "
+                   "%(backend-id)-3d  "
+                   "%(handle)-3d   "
+                   "%(state)-3d    "
+                   "%(event-ch)-3d    "
+                   "%(ring-ref)-5d "
+                   "%(be-path)-30s  "
+                   % ni)
def xm_vtpm_list(args):
-    arg_check(args, "vtpm-list", 1)
-    dom = args[0]
+    arg_check(args, "vtpm-list", 1, 2)
+
+    (use_long, params) = has_long_option(args)
+
+    dom = params[0]
     from xen.xend.XendClient import server
-    for x in server.xend_domain_devices(dom, 'vtpm'):
-        sxp.show(x)
-        print
+    if use_long:
+        devs = server.xend_domain_devices(dom, 'vtpm')
+        map(PrettyPrint.prettyprint, devs)
+    else:
+        hdr = 0
+        for x in server.xend_domain_devices(dom, 'vtpm'):
+            if hdr == 0:
+                print 'Attached virtual TPM devices:'
+                print 'Idx  BE handle state evt-ch ring-ref BE-path'
+                hdr = 1
+            ni = parse_dev_info(x[1])
+            ni['idx'] = int(x[0])
+            print ("%(idx)-3d   "
+                   "%(backend-id)-3d  "
+                   "%(handle)-3d   "
+                   "%(state)-3d    "
+                   "%(event-ch)-3d    "
+                   "%(ring-ref)-5d "
+                   "%(be-path)-30s  "
+                   % ni)
def xm_block_attach(args):
     arg_check(args, 'block-attach', 4, 5)
------------------------------------------------------------------------

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>