Upgrade to Neon base platform
[ovsdb.git] / southbound / southbound-impl / src / main / java / org / opendaylight / ovsdb / southbound / SouthboundMapper.java
index b32efd1f5292ca0732ff4246bc68dc59d9d8060d..7b0f86b0e39134b4874be83d61effcc76d2c5541 100644 (file)
@@ -69,7 +69,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class SouthboundMapper {
+public final class SouthboundMapper {
 
     private SouthboundMapper() { }
 
@@ -107,13 +107,14 @@ public class SouthboundMapper {
     }
 
     @SuppressWarnings("unchecked")
-    public static InstanceIdentifier<Node> createInstanceIdentifier(OvsdbConnectionInstance client,Bridge bridge) {
+    public static InstanceIdentifier<Node> createInstanceIdentifier(InstanceIdentifierCodec instanceIdentifierCodec,
+            OvsdbConnectionInstance client, Bridge bridge) {
         InstanceIdentifier<Node> iid;
         if (bridge.getExternalIdsColumn() != null
                 && bridge.getExternalIdsColumn().getData() != null
                 && bridge.getExternalIdsColumn().getData().containsKey(SouthboundConstants.IID_EXTERNAL_ID_KEY)) {
             String iidString = bridge.getExternalIdsColumn().getData().get(SouthboundConstants.IID_EXTERNAL_ID_KEY);
-            iid = (InstanceIdentifier<Node>) SouthboundUtil.deserializeInstanceIdentifier(iidString);
+            iid = (InstanceIdentifier<Node>) instanceIdentifierCodec.bindingDeserializerOrNull(iidString);
         } else {
             iid = createInstanceIdentifier(client, bridge.getName());
         }
@@ -121,14 +122,14 @@ public class SouthboundMapper {
     }
 
     @SuppressWarnings("unchecked")
-    public static InstanceIdentifier<Node> createInstanceIdentifier(
+    public static InstanceIdentifier<Node> createInstanceIdentifier(InstanceIdentifierCodec instanceIdentifierCodec,
             OvsdbConnectionInstance client, Controller controller, String bridgeName) {
         InstanceIdentifier<Node> iid;
         if (controller.getExternalIdsColumn() != null
                 && controller.getExternalIdsColumn().getData() != null
                 && controller.getExternalIdsColumn().getData().containsKey(SouthboundConstants.IID_EXTERNAL_ID_KEY)) {
             String iidString = controller.getExternalIdsColumn().getData().get(SouthboundConstants.IID_EXTERNAL_ID_KEY);
-            iid = (InstanceIdentifier<Node>) SouthboundUtil.deserializeInstanceIdentifier(iidString);
+            iid = (InstanceIdentifier<Node>) instanceIdentifierCodec.bindingDeserializerOrNull(iidString);
         } else {
             iid = createInstanceIdentifier(client, bridgeName);
         }
@@ -145,7 +146,7 @@ public class SouthboundMapper {
     }
 
     public static NodeId createManagedNodeId(InstanceIdentifier<Node> iid) {
-        NodeKey nodeKey = iid.firstKeyOf(Node.class, NodeKey.class);
+        NodeKey nodeKey = iid.firstKeyOf(Node.class);
         return nodeKey.getNodeId();
     }
 
@@ -276,7 +277,7 @@ public class SouthboundMapper {
                 bridge, updatedControllerRows);
         final Set<UUID> controllerUuids = bridge.getControllerColumn().getData();
         final List<ControllerEntry> controllerEntries = new ArrayList<>();
-        for (UUID controllerUuid : controllerUuids ) {
+        for (UUID controllerUuid : controllerUuids) {
             final Controller controller = updatedControllerRows.get(controllerUuid);
             addControllerEntries(controllerEntries, controller);
         }
@@ -299,7 +300,7 @@ public class SouthboundMapper {
                 bridgeNode, updatedControllerRows);
         final List<ControllerEntry> controllerEntriesCreated = new ArrayList<>();
         final OvsdbBridgeAugmentation ovsdbBridgeAugmentation =
-                bridgeNode.getAugmentation(OvsdbBridgeAugmentation.class);
+                bridgeNode.augmentation(OvsdbBridgeAugmentation.class);
         if (ovsdbBridgeAugmentation == null) {
             return controllerEntriesCreated;
         }
@@ -330,14 +331,24 @@ public class SouthboundMapper {
             final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid uuid =
                     new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang
                             .ietf.yang.types.rev130715.Uuid(controller.getUuid().toString());
+            ControllerEntryBuilder builder = new ControllerEntryBuilder();
 
-            controllerEntries.add(new ControllerEntryBuilder()
+            if (controller.getMaxBackoffColumn() != null && controller.getMaxBackoffColumn().getData() != null
+                    && !controller.getMaxBackoffColumn().getData().isEmpty()) {
+                builder.setMaxBackoff(controller.getMaxBackoffColumn().getData().iterator().next());
+            }
+            if (controller.getInactivityProbeColumn() != null && controller.getInactivityProbeColumn().getData() != null
+                    && !controller.getInactivityProbeColumn().getData().isEmpty()) {
+                builder.setInactivityProbe(controller.getInactivityProbeColumn().getData().iterator().next());
+            }
+            controllerEntries.add(builder
                     .setTarget(new Uri(targetString))
                     .setIsConnected(controller.getIsConnectedColumn().getData())
                     .setControllerUuid(uuid).build());
         }
     }
 
+    // This is not called from anywhere but test. Do we need this?
     public static Map<UUID, Controller> createOvsdbController(OvsdbBridgeAugmentation omn,DatabaseSchema dbSchema) {
         List<ControllerEntry> controllerEntries = omn.getControllerEntry();
         Map<UUID,Controller> controllerMap = new HashMap<>();
@@ -410,7 +421,7 @@ public class SouthboundMapper {
                 ovsdbNode, updatedManagerRows);
         final List<ManagerEntry> managerEntriesCreated = new ArrayList<>();
         final OvsdbNodeAugmentation ovsdbNodeAugmentation =
-                ovsdbNode.getAugmentation(OvsdbNodeAugmentation.class);
+                ovsdbNode.augmentation(OvsdbNodeAugmentation.class);
         if (ovsdbNodeAugmentation == null) {
             return managerEntriesCreated;
         }
@@ -439,8 +450,9 @@ public class SouthboundMapper {
             long numberOfConnections = 0;
             final String targetString = manager.getTargetColumn().getData();
 
-            final Map<String, String> statusAttributeMap = manager.getStatusColumn().getData();
-            if (statusAttributeMap.containsKey(N_CONNECTIONS_STR)) {
+            final Map<String, String> statusAttributeMap =
+                            manager.getStatusColumn() == null ? null : manager.getStatusColumn().getData();
+            if (statusAttributeMap != null && statusAttributeMap.containsKey(N_CONNECTIONS_STR)) {
                 String numberOfConnectionValueStr = statusAttributeMap.get(N_CONNECTIONS_STR);
                 numberOfConnections = Integer.parseInt(numberOfConnectionValueStr);
             } else {
@@ -492,12 +504,13 @@ public class SouthboundMapper {
     }
 
 
-    public static InstanceIdentifier<Node> getInstanceIdentifier(OpenVSwitch ovs) {
+    public static InstanceIdentifier<Node> getInstanceIdentifier(InstanceIdentifierCodec instanceIdentifierCodec,
+            OpenVSwitch ovs) {
         if (ovs.getExternalIdsColumn() != null
                 && ovs.getExternalIdsColumn().getData() != null
                 && ovs.getExternalIdsColumn().getData().containsKey(SouthboundConstants.IID_EXTERNAL_ID_KEY)) {
             String iidString = ovs.getExternalIdsColumn().getData().get(SouthboundConstants.IID_EXTERNAL_ID_KEY);
-            return (InstanceIdentifier<Node>) SouthboundUtil.deserializeInstanceIdentifier(iidString);
+            return (InstanceIdentifier<Node>) instanceIdentifierCodec.bindingDeserializerOrNull(iidString);
         } else {
             String nodeString = SouthboundConstants.OVSDB_URI_PREFIX + "://" + SouthboundConstants.UUID + "/"
                     + ovs.getUuid().toString();
@@ -521,7 +534,7 @@ public class SouthboundMapper {
         if (terminationPoints != null && !terminationPoints.isEmpty()) {
             for (TerminationPoint tp : terminationPoints) {
                 OvsdbTerminationPointAugmentation ovsdbTerminationPointAugmentation =
-                        tp.getAugmentation(OvsdbTerminationPointAugmentation.class);
+                        tp.augmentation(OvsdbTerminationPointAugmentation.class);
                 if (ovsdbTerminationPointAugmentation != null) {
                     final InstanceIdentifier<OvsdbTerminationPointAugmentation> tpIid =
                             bridgeNodeIid