Antoni Segura Puimedon has uploaded a new change for review. Change subject: Optimize netinfo.networks. ......................................................................
Optimize netinfo.networks. Currently netinfo.networks is doing three trips to libvirt: - libvirtmod.virNetworkLookupByName - libvirtmod.virConnectListNetworks - libvirtmod.virNetworkGetXMLDesc With this change, we reduce it to: - libvirtmod.virNetworkGetXMLDesc - libvirtmod.virConnectListAllNetworks Testing ======== In [185]: %timeit foo() 100 loops, best of 3: 4.45 ms per loop %timeit netinfo.networks() %100 loops, best of 3: 7.55 ms per loop Change-Id: I2cd332819363c4399335358686e19d6a1dc3b45e Signed-off-by: Antoni S. Puimedon <[email protected]> --- M vdsm/netinfo.py 1 file changed, 15 insertions(+), 15 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/59/13159/1 diff --git a/vdsm/netinfo.py b/vdsm/netinfo.py index 56999b5..5088bd3 100644 --- a/vdsm/netinfo.py +++ b/vdsm/netinfo.py @@ -90,21 +90,21 @@ """ nets = {} conn = libvirtconnection.get() - for name in conn.listNetworks(): - if name.startswith(LIBVIRT_NET_PREFIX): - # remove the LIBVIRT_NET_PREFIX from the network name - netname = name[len(LIBVIRT_NET_PREFIX):] - nets[netname] = {} - net = conn.networkLookupByName(name) - xml = minidom.parseString(net.XMLDesc(0)) - interfaces = xml.getElementsByTagName('interface') - if len(interfaces) > 0: - nets[netname]['iface'] = interfaces[0].getAttribute('dev') - nets[netname]['bridged'] = False - else: - nets[netname]['bridge'] = \ - xml.getElementsByTagName('bridge')[0].getAttribute('name') - nets[netname]['bridged'] = True + allNets = ((net, net.name()) for net in conn.listAllNetworks(0)) + vdsmNets = ((net[0], + net[1][len(LIBVIRT_NET_PREFIX):]) + for net in allNets if net[1].startswith(LIBVIRT_NET_PREFIX)) + for net, netname in vdsmNets: + nets[netname] = {} + xml = minidom.parseString(net.XMLDesc(0)) + interfaces = xml.getElementsByTagName('interface') + if len(interfaces) > 0: + nets[netname]['iface'] = interfaces[0].getAttribute('dev') + nets[netname]['bridged'] = False + else: + nets[netname]['bridge'] = \ + xml.getElementsByTagName('bridge')[0].getAttribute('name') + nets[netname]['bridged'] = True return nets -- To view, visit http://gerrit.ovirt.org/13159 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2cd332819363c4399335358686e19d6a1dc3b45e Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Antoni Segura Puimedon <[email protected]> _______________________________________________ vdsm-patches mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches
