xenserver: monitor-external-ids remove redundant ovs-vsctl calls
authorEthan Jackson <ethan@nicira.com>
Fri, 17 Sep 2010 15:23:32 +0000 (08:23 -0700)
committerEthan Jackson <ethan@nicira.com>
Fri, 17 Sep 2010 16:39:57 +0000 (09:39 -0700)
The number of ovs-vsctl calls required to add a new vif in
monitor-external-ids grew linearly with the number of vifs in the
system.  Changed to only do O(1) ovs-vsctl calls per vif addition.

xenserver/usr_share_openvswitch_scripts_monitor-external-ids

index a28ce6090b5362ee8d546f05d1245b05db3fc517..a0aad7a0e1de0d2b0b4f7c639c912b99261ed885 100755 (executable)
@@ -227,13 +227,15 @@ def main(argv):
                 if name not in bridges:
                     update_network_uuids(name, ids)
 
-                update_bridge_id(name, ids)
+                if (name not in bridges) or (bridges[name] != ids):
+                    update_bridge_id(name, ids)
 
             bridges = new_bridges
 
         if interfaces != new_interfaces:
             for name,ids in new_interfaces.items():
-                update_iface_id(name, ids)
+                if (name not in interfaces) or (interfaces[name] != ids):
+                    update_iface_id(name, ids)
             interfaces = new_interfaces
  
 if __name__ == '__main__':