Fixed some bugs

- Update br-int rather than do nothing if it already exists
- Make only the leader performs node bootstrap
- Check mastership on HOST event not flow rule populator
- Install/uninstall flow rules for vSG always from master, or the rules
  stay in PENDING_ADDED state

Change-Id: I4bd5cf6f84bf36f2617288b2d843435819c76ba8
diff --git a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java
index 9b6043d..2c7f8e6 100644
--- a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java
+++ b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java
@@ -578,11 +578,6 @@
             return false;
         }
 
-        String bridgeUuid = getBridgeUuid(bridgeName);
-        if (bridgeUuid != null) {
-            return false;
-        }
-
         Bridge bridge = (Bridge) TableGenerator.createTable(dbSchema, OvsdbTable.BRIDGE);
         Set<String> failMode = new HashSet<>(Arrays.asList("secure"));
         bridge.setFailMode(failMode);
@@ -594,10 +589,15 @@
         options.put("datapath-id", dpid);
         bridge.setOtherConfig(options);
 
-        bridge.setName(bridgeName);
-        bridgeUuid = insertConfig(OvsdbConstant.BRIDGE, "_uuid",
-                                  OvsdbConstant.DATABASENAME, "bridges",
-                                  ovsUuid, bridge.getRow());
+        String bridgeUuid = getBridgeUuid(bridgeName);
+        if (bridgeUuid == null) {
+            bridge.setName(bridgeName);
+            bridgeUuid = insertConfig(OvsdbConstant.BRIDGE, "_uuid",
+                                      OvsdbConstant.DATABASENAME, "bridges",
+                                      ovsUuid, bridge.getRow());
+        } else {
+            updateConfig(OvsdbConstant.BRIDGE, "_uuid", bridgeUuid, bridge.getRow());
+        }
 
         if (bridgeUuid != null) {
             createPort(bridgeName, bridgeName);