From: Rob Hoes <[email protected]>
Subject: [PATCH] xenserver: Reduce number of xapi DB calls in plugin

When there are lots of PIFs in a XenServer/XCP pool, for example when
there are many VLANs configured on the pool, operations such as
PIF.get_all and loops over all PIFs which include database operations,
are very inefficient when executed on a pool slave, and should be
avoided as much as possible. This patch reduces the number of database
calls in the update function of the openvswitch-cfg-update xapi plugin.

Signed-off-by: Rob Hoes <[email protected]>
Ack-by: Dominic Curran <[email protected]>
---
xenserver/etc_xapi.d_plugins_openvswitch-cfg-update |   10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)

Index: openvswitch/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update
===================================================================
--- openvswitch.orig/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update 2011-11-29 17:38:33.266859041 +0000 +++ openvswitch/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update 2011-11-29 17:44:40.158854937 +0000
@@ -86,8 +86,7 @@ def update(session, args):

    bton = {}

-    for n in session.xenapi.network.get_all():
-        rec = session.xenapi.network.get_record(n)
+    for rec in session.xenapi.network.get_all_records().values():
        try:
            bton[rec['bridge']] = rec
        except KeyError:
@@ -100,10 +99,9 @@ def update(session, args):
    host_mgmt_device = None
    pool_mgmt_macs = {}
    if new_controller:
-        for n in session.xenapi.PIF.get_all():
-            rec = session.xenapi.PIF.get_record(n)
-            if rec.get('management', False):
-                pool_mgmt_macs[rec.get('MAC')] = rec.get('device')
+ recs = session.xenapi.PIF.get_all_records_where('field "management"="true"')
+        for rec in recs:
+            pool_mgmt_macs[rec.get('MAC')] = rec.get('device')

    dib_changed = False
    fail_mode_changed = False

_______________________________________________
discuss mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to