[Libvirt-cim] [PATCH] Cimtest: Use python xml to parse virsh net-dumpxml output
Chip Vincent
cvincent at linux.vnet.ibm.com
Wed Jun 8 16:29:55 UTC 2011
+1 & pushed.
On 05/30/2011 12:57 PM, Eduardo Lima (Etrunko) wrote:
> # HG changeset patch
> # User Eduardo Lima (Etrunko)<eblima at br.ibm.com>
> # Date 1306533151 10800
> # Node ID 51bd999e881e96c8c2af698a7968d00b7009aaf2
> # Parent 589512c8ddff8224f16fbaa4348cc17df4d0536a
> Cimtest: Use python xml to parse virsh net-dumpxml output
>
> Signed-off-by: Eduardo Lima (Etrunko)<eblima at br.ibm.com>
>
> diff --git a/suites/libvirt-cim/lib/XenKvmLib/vxml.py b/suites/libvirt-cim/lib/XenKvmLib/vxml.py
> --- a/suites/libvirt-cim/lib/XenKvmLib/vxml.py
> +++ b/suites/libvirt-cim/lib/XenKvmLib/vxml.py
> @@ -38,6 +38,12 @@
> import pywbem
> from xml.dom import minidom, Node
> from xml import xpath
> +
> +try:
> + from xml.etree import cElementTree as ElementTree
> +except:
> + from xml.etree import ElementTree
> +
> from VirtLib import utils, live
> from XenKvmLib.xm_virt_util import get_bridge_from_network_xml, bootloader, \
> net_list
> @@ -210,6 +216,17 @@
> else:
> vbr = bridgename
> return vbr
> + # get_valid_bridge_name
> +
> + def _parse_net_dumpxml(_xml):
> + try:
> + root = ElementTree.fromstring(_xml)
> + ip_element = root.find("ip")
> + return ip_element.get("address")
> + except:
> + logger.error("Encounter error dump netxml")
> + return None
> + # _parse_net_dumpxml
>
> self.vbr = get_valid_bridge_name(server)
> if self.vbr is None:
> @@ -223,7 +240,7 @@
> self.server = server
>
> if is_new_net is False:
> - cmd = "virsh net-dumpxml %s 2>/dev/null" % self.net_name
> + cmd = "virsh -c %s net-dumpxml %s 2>/dev/null" % (self.vuri, self.net_name)
> s, net_xml = utils.run_remote(server, cmd)
> if s != 0:
> logger.error("Encounter error dump netxml")
> @@ -245,10 +262,13 @@
>
> n_list = net_list(server, virt)
> for _net_name in n_list:
> - cmd = "virsh net-dumpxml %s 2>/dev/null | \
> - awk '/ip address/ {print}' | \
> - cut -d ' ' -f 4 | sed 's/address=//'" % _net_name
> - s, in_use_addr = utils.run_remote(server, cmd)
> + cmd = "virsh -c %s net-dumpxml %s 2>/dev/null" % (self.vuri, _net_name)
> + s, xml = utils.run_remote(server, cmd)
> +
> + in_use_addr = _parse_net_dumpxml(xml)
> + if in_use_addr is None:
> + logger.error("Unable to find IP address")
> + return None
>
> sub_net_in_use = in_use_addr
> sub_net_in_use = sub_net_in_use.rsplit('.', 1)[0].strip("'") + "."
> @@ -310,7 +330,7 @@
> self.server = server
>
> if is_new_pool is False:
> - cmd = "virsh pool-dumpxml %s 2>/dev/null" % self.pool_name
> + cmd = "virsh -c %s pool-dumpxml %s 2>/dev/null" % (self.vuri, self.pool_name)
> s, disk_xml = utils.run_remote(server, cmd)
> if s != 0:
> logger.error("Encounter error dump netxml")
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
--
Chip Vincent
Open Virtualization
IBM Linux Technology Center
cvincent at linux.vnet.ibm.com
More information about the Libvirt-cim
mailing list