From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: [PATCH] Even prettier printing of xm network-list/block-list/vtpm-list Date: Fri, 10 Feb 2006 17:39:34 -0600 Message-ID: <43ED2436.7060707@us.ibm.com> References: <1139604485.4101.1.camel@941e-2.watson.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1139604485.4101.1.camel@941e-2.watson.ibm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Stefan Berger Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org 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 > > > ------------------------------------------------------------------------ > > 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 >