Bug 6692: remove InstanceIdentifierCodec instance from SBU
[ovsdb.git] / southbound / southbound-impl / src / main / java / org / opendaylight / ovsdb / southbound / ovsdb / transact / BridgeUpdateCommand.java
index 63104189c2c8d4f05ea5bde2d0bb9f763605b2b1..d0948efba1510893d6f9cb380e21b986ece62401 100644 (file)
@@ -28,9 +28,9 @@ import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
 import org.opendaylight.ovsdb.schema.openvswitch.Bridge;
 import org.opendaylight.ovsdb.schema.openvswitch.Interface;
 import org.opendaylight.ovsdb.schema.openvswitch.Port;
+import org.opendaylight.ovsdb.southbound.InstanceIdentifierCodec;
 import org.opendaylight.ovsdb.southbound.SouthboundConstants;
 import org.opendaylight.ovsdb.southbound.SouthboundMapper;
-import org.opendaylight.ovsdb.southbound.SouthboundUtil;
 import org.opendaylight.ovsdb.utils.yang.YangUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeInternal;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
@@ -48,35 +48,41 @@ public class BridgeUpdateCommand implements TransactCommand {
 
     @Override
     public void execute(TransactionBuilder transaction, BridgeOperationalState state,
-                        AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> events) {
-        execute(transaction, state, TransactUtils.extractCreatedOrUpdated(events, OvsdbBridgeAugmentation.class));
+            AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> events,
+            InstanceIdentifierCodec instanceIdentifierCodec) {
+        execute(transaction, state, TransactUtils.extractCreatedOrUpdated(events, OvsdbBridgeAugmentation.class),
+                instanceIdentifierCodec);
     }
 
     @Override
     public void execute(TransactionBuilder transaction, BridgeOperationalState state,
-                        Collection<DataTreeModification<Node>> modifications) {
+            Collection<DataTreeModification<Node>> modifications, InstanceIdentifierCodec instanceIdentifierCodec) {
         execute(transaction, state,
-                TransactUtils.extractCreatedOrUpdated(modifications, OvsdbBridgeAugmentation.class));
+                TransactUtils.extractCreatedOrUpdated(modifications, OvsdbBridgeAugmentation.class),
+                instanceIdentifierCodec);
     }
 
     private void execute(TransactionBuilder transaction, BridgeOperationalState state,
-                        Map<InstanceIdentifier<OvsdbBridgeAugmentation>, OvsdbBridgeAugmentation> createdOrUpdated) {
+            Map<InstanceIdentifier<OvsdbBridgeAugmentation>, OvsdbBridgeAugmentation> createdOrUpdated,
+            InstanceIdentifierCodec instanceIdentifierCodec) {
         for (Entry<InstanceIdentifier<OvsdbBridgeAugmentation>, OvsdbBridgeAugmentation> ovsdbManagedNodeEntry :
                 createdOrUpdated.entrySet()) {
-            updateBridge(transaction, state, ovsdbManagedNodeEntry.getKey(), ovsdbManagedNodeEntry.getValue());
+            updateBridge(transaction, state, ovsdbManagedNodeEntry.getKey(), ovsdbManagedNodeEntry.getValue(),
+                    instanceIdentifierCodec);
         }
     }
 
-    private void updateBridge(
-            TransactionBuilder transaction, BridgeOperationalState state,
-            InstanceIdentifier<OvsdbBridgeAugmentation> iid, OvsdbBridgeAugmentation ovsdbManagedNode) {
+    private void updateBridge(TransactionBuilder transaction, BridgeOperationalState state,
+            InstanceIdentifier<OvsdbBridgeAugmentation> iid, OvsdbBridgeAugmentation ovsdbManagedNode,
+            InstanceIdentifierCodec instanceIdentifierCodec) {
         LOG.debug("Received request to create ovsdb bridge name: {} uuid: {}",
                 ovsdbManagedNode.getBridgeName(),
                 ovsdbManagedNode.getBridgeUuid());
         Bridge bridge = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Bridge.class);
         setFailMode(bridge, ovsdbManagedNode);
         setDataPathType(bridge, ovsdbManagedNode);
-        setOpenDaylightExternalIds(bridge, iid, ovsdbManagedNode);
+        setStpEnalbe(bridge, ovsdbManagedNode);
+        setOpenDaylightExternalIds(bridge, iid, ovsdbManagedNode, instanceIdentifierCodec);
         setOpenDaylightOtherConfig(bridge, ovsdbManagedNode);
         Optional<OvsdbBridgeAugmentation> operationalBridgeOptional =
                 state.getOvsdbBridgeAugmentation(iid);
@@ -95,7 +101,8 @@ public class BridgeUpdateCommand implements TransactCommand {
             transaction.add(op.update(bridge)
                     .where(extraBridge.getNameColumn().getSchema().opEqual(existingBridgeName))
                     .build());
-            stampInstanceIdentifier(transaction, iid.firstIdentifierOf(Node.class),existingBridgeName);
+            stampInstanceIdentifier(transaction, iid.firstIdentifierOf(Node.class), existingBridgeName,
+                    instanceIdentifierCodec);
         }
     }
 
@@ -105,6 +112,12 @@ public class BridgeUpdateCommand implements TransactCommand {
         }
     }
 
+    private void setStpEnalbe(Bridge bridge, OvsdbBridgeAugmentation ovsdbManageNode) {
+        if (ovsdbManageNode.isStpEnable() != null) {
+            bridge.setStpEnable(ovsdbManageNode.isStpEnable());
+        }
+    }
+
     private void setName(Bridge bridge, OvsdbBridgeAugmentation ovsdbManagedNode,
             Optional<OvsdbBridgeAugmentation> operationalBridgeOptional) {
         if (ovsdbManagedNode.getBridgeName() != null) {
@@ -115,10 +128,10 @@ public class BridgeUpdateCommand implements TransactCommand {
     }
 
     private void setOpenDaylightExternalIds(Bridge bridge, InstanceIdentifier<OvsdbBridgeAugmentation> iid,
-            OvsdbBridgeAugmentation ovsdbManagedNode) {
+            OvsdbBridgeAugmentation ovsdbManagedNode, InstanceIdentifierCodec instanceIdentifierCodec) {
         // Set the iid external_id
         Map<String, String> externalIdMap = new HashMap<>();
-        externalIdMap.put(SouthboundConstants.IID_EXTERNAL_ID_KEY, SouthboundUtil.serializeInstanceIdentifier(iid));
+        externalIdMap.put(SouthboundConstants.IID_EXTERNAL_ID_KEY, instanceIdentifierCodec.serialize(iid));
         // Set user provided external ids
         try {
             YangUtils.copyYangKeyValueListToMap(externalIdMap, ovsdbManagedNode.getBridgeExternalIds(),
@@ -173,14 +186,12 @@ public class BridgeUpdateCommand implements TransactCommand {
     }
 
     private void stampInstanceIdentifier(TransactionBuilder transaction,InstanceIdentifier<Node> iid,
-            String bridgeName) {
+            String bridgeName, InstanceIdentifierCodec instanceIdentifierCodec) {
         Bridge bridge = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Bridge.class);
         bridge.setName(bridgeName);
         bridge.setExternalIds(Collections.<String,String>emptyMap());
-        Mutate mutate = TransactUtils.stampInstanceIdentifierMutation(transaction,
-                iid,
-                bridge.getSchema(),
-                bridge.getExternalIdsColumn().getSchema());
+        Mutate mutate = TransactUtils.stampInstanceIdentifierMutation(transaction, iid, bridge.getSchema(),
+                bridge.getExternalIdsColumn().getSchema(), instanceIdentifierCodec);
         transaction.add(mutate
                 .where(bridge.getNameColumn().getSchema().opEqual(bridgeName))
                 .build());