Merge branch 'master' into forward-port
[sliver-openvswitch.git] / xenserver / usr_share_openvswitch_scripts_ovs-xapi-sync
index 7c78251..cb35e7a 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/python
-# Copyright (c) 2009, 2010, 2011, 2012 Nicira Networks
+# Copyright (c) 2009, 2010, 2011, 2012 Nicira, Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -35,6 +35,7 @@ from ovs.db import types
 import ovs.daemon
 import ovs.db.idl
 import ovs.unixctl
+import ovs.unixctl.server
 
 vlog = ovs.vlog.Vlog("ovs-xapi-sync")
 session = None
@@ -81,10 +82,9 @@ def get_network_by_bridge(br_name):
                 " XAPI session could not be initialized" % br_name)
         return None
 
-    for n in session.xenapi.network.get_all():
-        rec = session.xenapi.network.get_record(n)
-        if rec['bridge'] == br_name:
-            return rec
+    recs = session.xenapi.network.get_all_records_where('field "bridge"="%s"' % br_name)
+    if len(recs) > 0:
+        return recs.values()[0]
 
     return None
 
@@ -162,6 +162,7 @@ def set_or_delete(d, key, value):
 
 
 def set_external_id(row, key, value):
+    row.verify("external_ids")
     external_ids = row.external_ids
     if set_or_delete(external_ids, key, value):
         row.external_ids = external_ids
@@ -186,6 +187,7 @@ def update_fail_mode(row):
     if fail_mode not in ['standalone', 'secure']:
         fail_mode = 'standalone'
 
+    row.verify("fail_mode")
     if row.fail_mode != fail_mode:
         row.fail_mode = fail_mode
 
@@ -197,6 +199,7 @@ def update_in_band_mgmt(row):
 
     dib = rec['other_config'].get('vswitch-disable-in-band')
 
+    row.verify("other_config")
     other_config = row.other_config
     if dib and dib not in ['true', 'false']:
         vlog.warn('"%s" isn\'t a valid setting for '
@@ -233,7 +236,7 @@ def main():
     ovs.unixctl.command_register("exit", "", 0, 0, unixctl_exit, None)
     ovs.unixctl.command_register("flush-cache", "", 0, 0, unixctl_flush_cache,
                                  None)
-    error, unixctl_server = ovs.unixctl.UnixctlServer.create(None)
+    error, unixctl_server = ovs.unixctl.server.UnixctlServer.create(None)
     if error:
         ovs.util.ovs_fatal(error, "could not create unixctl server", vlog)
 
@@ -358,6 +361,7 @@ def main():
         iface_ids = new_iface_ids
         vm_ids = new_vm_ids
 
+        txn.add_comment("ovs-xapi-sync: Updating records from XAPI")
         txn.commit_block()
 
     unixctl_server.close()