* [PATCH] Even prettier printing of xm network-list/block-list/vtpm-list
@ 2006-02-10 20:48 Stefan Berger
2006-02-10 23:39 ` Anthony Liguori
0 siblings, 1 reply; 2+ messages in thread
From: Stefan Berger @ 2006-02-10 20:48 UTC (permalink / raw)
To: xen-devel, ewan
[-- Attachment #1: Type: text/plain, Size: 100 bytes --]
This patch now also supports the --long option.
Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
[-- Attachment #2: xm-format.diff --]
[-- Type: text/x-patch, Size: 5017 bytes --]
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)
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] Even prettier printing of xm network-list/block-list/vtpm-list
2006-02-10 20:48 [PATCH] Even prettier printing of xm network-list/block-list/vtpm-list Stefan Berger
@ 2006-02-10 23:39 ` Anthony Liguori
0 siblings, 0 replies; 2+ messages in thread
From: Anthony Liguori @ 2006-02-10 23:39 UTC (permalink / raw)
To: Stefan Berger; +Cc: xen-devel
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@us.ibm.com>
>
>
> ------------------------------------------------------------------------
>
> 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@lists.xensource.com
> http://lists.xensource.com/xen-devel
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2006-02-10 23:39 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-10 20:48 [PATCH] Even prettier printing of xm network-list/block-list/vtpm-list Stefan Berger
2006-02-10 23:39 ` Anthony Liguori
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.