This is a great patch, I just want to make sure everyone who has written
a tool against xm that is perhaps screen scrapping the output of xm
block-list or xm network-list that the interface has changed.
You will now have to use --long to get the same S-Expression output.
Perhaps this sort of changes should be announced on xen-announce in the
future? Is there such a list?
Regards,
Anthony Liguori
--- Begin Message ---
# HG changeset patch
# User emellor@xxxxxxxxxxxxxxxxxxxxxx
# Node ID 34f6a1efe52d8c5c722a2d423a0b26b469540a3a
# Parent aeeeedc6c9b754dc9d26b4bc12ab9d025578da6e
This patch displays the network-list/block-list/vtpm-list using the 'xm'
command. It supports the '--long' option.
Signed-off-by: Stefan Berger <stefanb@xxxxxxxxxx>
diff -r aeeeedc6c9b7 -r 34f6a1efe52d tools/python/xen/xm/main.py
--- a/tools/python/xen/xm/main.py Fri Feb 17 17:22:23 2006
+++ b/tools/python/xen/xm/main.py Fri Feb 17 18:35:38 2006
@@ -90,18 +90,18 @@
where <DevId> may either be the device ID
or the device name as mounted in the
guest"""
-block_list_help = "block-list <DomId> List virtual block devices
for a domain"
+block_list_help = "block-list <DomId> [--long] List virtual block devices
for a domain"
network_attach_help = """network-attach <DomID> [script=<script>] [ip=<ip>]
[mac=<mac>]
[bridge=<bridge>] [backend=<backDomID>]
Create a new virtual network device """
network_detach_help = """network-detach <DomId> <DevId> Destroy a domain's
virtual network
device, where <DevId> is the device ID."""
-network_list_help = "network-list <DomId> List virtual network
interfaces for a domain"
+network_list_help = "network-list <DomId> [--long] List virtual network
interfaces for a domain"
vnet_list_help = "vnet-list [-l|--long] list vnets"
vnet_create_help = "vnet-create <config> create a vnet from a
config file"
vnet_delete_help = "vnet-delete <vnetid> delete a vnet"
-vtpm_list_help = "vtpm-list <DomId> list virtual TPM devices"
+vtpm_list_help = "vtpm-list <DomId> [--long] list virtual TPM devices"
short_command_list = [
"console",
@@ -684,29 +684,133 @@
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]
- from xen.xend.XendClient import server
- for x in server.xend_domain_devices(dom, 'vif'):
- sxp.show(x)
- print
+ arg_check(args, "network-list", 1, 2)
+
+ (use_long, params) = has_long_option(args)
+
+ if len(params) == 0:
+ print 'No domain parameter given'
+ sys.exit(1)
+ dom = params[0]
+ from xen.xend.XendClient import server
+ 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 '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]
- from xen.xend.XendClient import server
- for x in server.xend_domain_devices(dom, 'vbd'):
- sxp.show(x)
- print
+ arg_check(args, "block-list", 1, 2)
+
+ (use_long, params) = has_long_option(args)
+
+ if len(params) == 0:
+ print 'No domain parameter given'
+ sys.exit(1)
+ dom = params[0]
+ from xen.xend.XendClient import server
+ 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 '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]
- from xen.xend.XendClient import server
- for x in server.xend_domain_devices(dom, 'vtpm'):
- sxp.show(x)
- print
+ arg_check(args, "vtpm-list", 1, 2)
+
+ (use_long, params) = has_long_option(args)
+
+ if len(params) == 0:
+ print 'No domain parameter given'
+ sys.exit(1)
+ dom = params[0]
+ from xen.xend.XendClient import server
+ 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 '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-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
--- End Message ---
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|