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

Reply via email to