From: Rob Hoes Date: Mon, 5 Dec 2011 14:43:12 +0000 (+0000) Subject: xenserver: Reduce number of xapi DB calls in plugin X-Git-Tag: sliver-openvswitch-0.1-1~589 X-Git-Url: http://git.onelab.eu/?p=sliver-openvswitch.git;a=commitdiff_plain;h=3249bb907a1dab9b0c4499be2451b38d027c7845 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 Acked-by: Dominic Curran --- diff --git a/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update b/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update index cc97c2d36..a9a10e83f 100755 --- a/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update +++ b/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update @@ -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