update portmapping YANG to store SAPI/DAPI hashmap
[transportpce.git] / common / src / main / java / org / opendaylight / transportpce / common / mapping / PortMappingVersion121.java
index aa726fa6701d70b6c72a1012bdf76c1c0e237a73..5f08e571698be4a5285dcd64cf1ef5bd53f4b8b1 100644 (file)
@@ -9,12 +9,14 @@
 package org.opendaylight.transportpce.common.mapping;
 
 import com.google.common.util.concurrent.FluentFuture;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Optional;
 import java.util.concurrent.ExecutionException;
 import java.util.stream.Collectors;
@@ -29,20 +31,20 @@ import org.opendaylight.transportpce.common.Timeouts;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.NetworkBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.CpToDegreeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.CpToDegreeKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfo.OpenroadmVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev190702.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.nodes.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.nodes.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.nodes.CpToDegreeKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.nodes.NodeInfoBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.Direction;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.CircuitPack;
@@ -75,7 +77,7 @@ import org.slf4j.LoggerFactory;
 
 public class PortMappingVersion121 {
 
-    private static final Logger LOG = LoggerFactory.getLogger(PortMappingImpl.class);
+    private static final Logger LOG = LoggerFactory.getLogger(PortMappingVersion121.class);
 
     private final DataBroker dataBroker;
     private final DeviceTransactionManager deviceTransactionManager;
@@ -141,7 +143,6 @@ public class PortMappingVersion121 {
     }
 
     public boolean updateMapping(String nodeId, Mapping oldMapping) {
-        LOG.info("Updating Mapping Data {} for node {}", oldMapping, nodeId);
         InstanceIdentifier<Ports> portIId = InstanceIdentifier.create(OrgOpenroadmDevice.class)
             .child(CircuitPacks.class, new CircuitPacksKey(oldMapping.getSupportingCircuitPackName()))
             .child(Ports.class, new PortsKey(oldMapping.getSupportingPort()));
@@ -154,7 +155,8 @@ public class PortMappingVersion121 {
                     Ports port = portObject.get();
                     Mapping newMapping = createMappingObject(nodeId, port, oldMapping.getSupportingCircuitPackName(),
                         oldMapping.getLogicalConnectionPoint());
-
+                    LOG.info("Updating old mapping Data {} for {} of {} by new mapping data {}", oldMapping,
+                        oldMapping.getLogicalConnectionPoint(), nodeId, newMapping);
                     final WriteTransaction writeTransaction = this.dataBroker.newWriteOnlyTransaction();
                     InstanceIdentifier<Mapping> mapIID = InstanceIdentifier.create(Network.class)
                         .child(Nodes.class, new NodesKey(nodeId))
@@ -194,7 +196,8 @@ public class PortMappingVersion121 {
         Map<String, String> lcpMap = new HashMap<>();
         Map<String, Mapping> mappingMap = new HashMap<>();
 
-        List<CircuitPacks> circuitPackList = deviceObject.get().getCircuitPacks();
+        // com.google.common.collect.ImmutableList implementation of List
+        List<CircuitPacks> circuitPackList = new ArrayList<>(deviceObject.get().getCircuitPacks());
         circuitPackList.sort(Comparator.comparing(CircuitPack::getCircuitPackName));
 
         for (CircuitPacks cp : circuitPackList) {
@@ -203,7 +206,9 @@ public class PortMappingVersion121 {
                 LOG.warn("Ports were not found for circuit pack: {}", circuitPackName);
                 continue;
             }
-            List<Ports> portList = cp.getPorts();
+
+            // com.google.common.collect.ImmutableList implementation of List
+            List<Ports> portList = new ArrayList<>(cp.getPorts());
             portList.sort(Comparator.comparing(Ports::getPortName));
             for (Ports port : portList) {
                 if (port.getPortQual() == null) {
@@ -320,7 +325,7 @@ public class PortMappingVersion121 {
         // Get value for max Srg from info subtree, required for iteration
         // if not present assume to be 20 (temporary)
         if (ordmInfo.getMaxSrgs() != null) {
-            maxSrg = ordmInfo.getMaxSrgs();
+            maxSrg = ordmInfo.getMaxSrgs().toJava();
         } else {
             maxSrg = 20;
         }
@@ -335,7 +340,7 @@ public class PortMappingVersion121 {
                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
             if (ordmSrgObject.isPresent()) {
                 srgCps.addAll(ordmSrgObject.get().getCircuitPacks());
-                cpPerSrg.put(ordmSrgObject.get().getSrgNumber(), srgCps);
+                cpPerSrg.put(ordmSrgObject.get().getSrgNumber().toJava(), srgCps);
             }
         }
         LOG.info("Device {} has {} Srg", deviceId, cpPerSrg.size());
@@ -349,9 +354,9 @@ public class PortMappingVersion121 {
         HashMap<Integer, List<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks>> srgCps
             = getSrgCps(nodeId, deviceInfo);
 
-        for (Integer k : srgCps.keySet()) {
+        for (Entry<Integer, List<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks>> srgCpEntry : srgCps.entrySet()) {
             List<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks> cpList =
-                srgCps.get(k);
+                srgCps.get(srgCpEntry.getKey());
             List<String> keys = new ArrayList<>();
             for (org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks cp : cpList) {
                 String circuitPackName = cp.getCircuitPackName();
@@ -365,8 +370,9 @@ public class PortMappingVersion121 {
                     LOG.warn("{} : Circuit pack {} not found or without ports.", nodeId, circuitPackName);
                     continue;
                 }
+                // com.google.common.collect.ImmutableList implementation of List
                 @Nullable
-                List<Ports> portList = circuitPackObject.get().getPorts();
+                List<Ports> portList = new ArrayList<>(circuitPackObject.get().getPorts());
                 Collections.sort(portList, new SortPort121ByName());
                 int portIndex = 1;
                 for (Ports port : portList) {
@@ -376,7 +382,7 @@ public class PortMappingVersion121 {
                     } else if (Port.PortQual.RoadmExternal.getIntValue() == port.getPortQual().getIntValue()
                         && Direction.Bidirectional.getIntValue() == port.getPortDirection().getIntValue()
                         && !keys.contains(currentKey)) {
-                        String logicalConnectionPoint = createLogicalConnectionPort(port, k, portIndex);
+                        String logicalConnectionPoint = createLogicalConnectionPort(port, srgCpEntry.getKey(), portIndex);
                         LOG.info("{} : Logical Connection Point for {} {} is {}", nodeId, circuitPackName,
                             port.getPortName(), logicalConnectionPoint);
                         portMapList.add(createMappingObject(nodeId, port, circuitPackName, logicalConnectionPoint));
@@ -387,7 +393,8 @@ public class PortMappingVersion121 {
                         || Direction.Tx.getIntValue() == port.getPortDirection().getIntValue())
                         && !keys.contains(currentKey)
                         && port.getPartnerPort() != null) {
-                        String logicalConnectionPoint1 = createLogicalConnectionPort(port, k, portIndex);
+                        String logicalConnectionPoint1 = createLogicalConnectionPort(port, srgCpEntry.getKey(),
+                            portIndex);
                         LOG.info("{} : Logical Connection Point for {} {} is {}", nodeId, circuitPackName,
                             port.getPortName(), logicalConnectionPoint1);
                         InstanceIdentifier<Ports> port2ID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
@@ -411,7 +418,8 @@ public class PortMappingVersion121 {
                                 && port2.getPartnerPort() != null
                                 && port2.getPartnerPort().getCircuitPackName().equals(circuitPackName)
                                 && port2.getPartnerPort().getPortName().toString().equals(port.getPortName()))) {
-                                String logicalConnectionPoint2 = createLogicalConnectionPort(port2, k, portIndex);
+                                String logicalConnectionPoint2 = createLogicalConnectionPort(port2, srgCpEntry.getKey(),
+                                    portIndex);
                                 LOG.info("{} : Logical Connection Point for {} {} is {}", nodeId, circuitPackName,
                                     port2.getPortName(), logicalConnectionPoint2);
                                 portMapList.add(createMappingObject(nodeId, port, circuitPackName,
@@ -467,7 +475,7 @@ public class PortMappingVersion121 {
         // Get value for max degree from info subtree, required for iteration
         // if not present assume to be 20 (temporary)
         if (ordmInfo.getMaxDegrees() != null) {
-            maxDegree = ordmInfo.getMaxDegrees();
+            maxDegree = ordmInfo.getMaxDegrees().toJava();
         } else {
             maxDegree = 20;
         }
@@ -483,7 +491,7 @@ public class PortMappingVersion121 {
                 degrees.add(ordmDegreeObject.get());
             }
         }
-        LOG.info("Device {} has {} degree", degrees.size());
+        LOG.info("Device {} has {} degree", deviceId, degrees.size());
         return degrees;
     }
 
@@ -492,7 +500,7 @@ public class PortMappingVersion121 {
         Integer maxDegree;
 
         if (ordmInfo.getMaxDegrees() != null) {
-            maxDegree = ordmInfo.getMaxDegrees();
+            maxDegree = ordmInfo.getMaxDegrees().toJava();
         } else {
             maxDegree = 20;
         }
@@ -608,7 +616,7 @@ public class PortMappingVersion121 {
             interfaceName = interfaceList.get(circuitPackName);
         }
         return new CpToDegreeBuilder().withKey(new CpToDegreeKey(circuitPackName)).setCircuitPackName(circuitPackName)
-            .setDegreeNumber(new Long(degreeNumber)).setInterfaceName(interfaceName).build();
+            .setDegreeNumber(Long.valueOf(degreeNumber)).setInterfaceName(interfaceName).build();
     }
 
     private Mapping createMappingObject(String nodeId, Ports port, String circuitPackName,
@@ -652,7 +660,7 @@ public class PortMappingVersion121 {
         if (mapping != null && assoLcp != null) {
             // update existing mapping
             mpBldr = new MappingBuilder(mapping);
-            mpBldr.setAssociatedLcp(assoLcp);
+            mpBldr.setConnectionMapLcp(assoLcp);
         } else {
             // create a new mapping
             mpBldr = new MappingBuilder();
@@ -673,6 +681,7 @@ public class PortMappingVersion121 {
 
     // some LOG messages are too long
     @SuppressWarnings("checkstyle:linelength")
+    @SuppressFBWarnings("DM_CONVERT_CASE")
     private boolean createTtpPortMapping(String nodeId, Info deviceInfo, List<Mapping> portMapList) {
         // Creating mapping data for degree TTP's
         List<Degree> degrees = getDegrees(nodeId, deviceInfo);
@@ -682,17 +691,18 @@ public class PortMappingVersion121 {
         postPortMapping(nodeId, null, null, cpToDegreeList);
 
         Map<Integer, List<ConnectionPorts>> connectionPortMap = getPerDegreePorts(nodeId, deviceInfo);
-        for (Integer k : connectionPortMap.keySet()) {
-            switch (connectionPortMap.get(k).size()) {
+        for (Entry<Integer, List<ConnectionPorts>> cpMapEntry : connectionPortMap.entrySet()) {
+            switch (connectionPortMap.get(cpMapEntry.getKey()).size()) {
                 case 1:
                     // port is bidirectional
                     InstanceIdentifier<Ports> portID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
-                        .child(CircuitPacks.class, new CircuitPacksKey(connectionPortMap.get(k).get(0)
+                        .child(CircuitPacks.class, new CircuitPacksKey(connectionPortMap.get(cpMapEntry.getKey()).get(0)
                             .getCircuitPackName()))
-                        .child(Ports.class, new PortsKey(connectionPortMap.get(k).get(0)
+                        .child(Ports.class, new PortsKey(connectionPortMap.get(cpMapEntry.getKey()).get(0)
                             .getPortName().toString()));
-                    LOG.info("Fetching connection-port {} at circuit pack {}", connectionPortMap.get(k).get(0)
-                        .getPortName().toString(), connectionPortMap.get(k).get(0).getCircuitPackName());
+                    LOG.info("Fetching connection-port {} at circuit pack {}", connectionPortMap
+                        .get(cpMapEntry.getKey()).get(0).getPortName().toString(), connectionPortMap
+                        .get(cpMapEntry.getKey()).get(0).getCircuitPackName());
                     Optional<Ports> portObject = this.deviceTransactionManager.getDataFromDevice(nodeId,
                         LogicalDatastoreType.OPERATIONAL, portID, Timeouts.DEVICE_READ_TIMEOUT,
                         Timeouts.DEVICE_READ_TIMEOUT_UNIT);
@@ -702,42 +712,46 @@ public class PortMappingVersion121 {
                             continue;
                         } else if (Port.PortQual.RoadmExternal.getIntValue() == port.getPortQual().getIntValue()
                             && Direction.Bidirectional.getIntValue() == port.getPortDirection().getIntValue()) {
-                            String logicalConnectionPoint = new StringBuilder("DEG").append(k).append("-TTP-TXRX")
-                                .toString();
+                            String logicalConnectionPoint = new StringBuilder("DEG").append(cpMapEntry.getKey())
+                                .append("-TTP-TXRX").toString();
                             LOG.info("{} : Logical Connection Point for {} {} is {}", nodeId,
-                                connectionPortMap.get(k).get(0).getCircuitPackName(), port.getPortName(),
-                                logicalConnectionPoint);
+                                connectionPortMap.get(cpMapEntry.getKey()).get(0).getCircuitPackName(),
+                                port.getPortName(), logicalConnectionPoint);
                             portMapList.add(createMappingObject(nodeId, port,
-                                connectionPortMap.get(k).get(0).getCircuitPackName(), logicalConnectionPoint));
+                                connectionPortMap.get(cpMapEntry.getKey()).get(0).getCircuitPackName(),
+                                logicalConnectionPoint));
                         } else {
                             LOG.error(
                                 "Impossible to create logical connection point for port {} of {} on node {} - Error in configuration with port-qual or port-direction",
-                                port.getPortName(), connectionPortMap.get(k).get(0).getCircuitPackName(), nodeId);
+                                port.getPortName(), connectionPortMap
+                                .get(cpMapEntry.getKey()).get(0).getCircuitPackName(), nodeId);
                         }
                     } else {
                         LOG.error("No port {} on circuit pack {} for node {}",
-                            connectionPortMap.get(k).get(0).getPortName().toString(),
-                            connectionPortMap.get(k).get(0).getCircuitPackName(), nodeId);
+                            connectionPortMap.get(cpMapEntry.getKey()).get(0).getPortName().toString(),
+                            connectionPortMap.get(cpMapEntry.getKey()).get(0).getCircuitPackName(), nodeId);
                         return false;
                     }
                     break;
                 case 2:
                     // ports are unidirectionals
-                    String cp1Name = connectionPortMap.get(k).get(0).getCircuitPackName();
-                    String cp2Name = connectionPortMap.get(k).get(1).getCircuitPackName();
+                    String cp1Name = connectionPortMap.get(cpMapEntry.getKey()).get(0).getCircuitPackName();
+                    String cp2Name = connectionPortMap.get(cpMapEntry.getKey()).get(1).getCircuitPackName();
                     InstanceIdentifier<Ports> port1ID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
                         .child(CircuitPacks.class, new CircuitPacksKey(cp1Name))
-                        .child(Ports.class, new PortsKey(connectionPortMap.get(k).get(0).getPortName().toString()));
-                    LOG.info("Fetching connection-port {} at circuit pack {}", connectionPortMap.get(k).get(0)
-                        .getPortName().toString(), cp1Name);
+                        .child(Ports.class, new PortsKey(connectionPortMap.get(cpMapEntry.getKey()).get(0).getPortName()
+                            .toString()));
+                    LOG.info("Fetching connection-port {} at circuit pack {}", connectionPortMap
+                        .get(cpMapEntry.getKey()).get(0).getPortName().toString(), cp1Name);
                     Optional<Ports> port1Object = this.deviceTransactionManager.getDataFromDevice(nodeId,
                         LogicalDatastoreType.OPERATIONAL, port1ID, Timeouts.DEVICE_READ_TIMEOUT,
                         Timeouts.DEVICE_READ_TIMEOUT_UNIT);
                     InstanceIdentifier<Ports> port2ID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
                         .child(CircuitPacks.class, new CircuitPacksKey(cp2Name))
-                        .child(Ports.class, new PortsKey(connectionPortMap.get(k).get(1).getPortName().toString()));
+                        .child(Ports.class, new PortsKey(connectionPortMap.get(cpMapEntry.getKey()).get(1).getPortName()
+                            .toString()));
                     LOG.info("Fetching connection-port {} at circuit pack {}",
-                        connectionPortMap.get(k).get(1).getPortName().toString(), cp2Name);
+                        connectionPortMap.get(cpMapEntry.getKey()).get(1).getPortName().toString(), cp2Name);
                     Optional<Ports> port2Object = this.deviceTransactionManager.getDataFromDevice(nodeId,
                         LogicalDatastoreType.OPERATIONAL, port2ID, Timeouts.DEVICE_READ_TIMEOUT,
                         Timeouts.DEVICE_READ_TIMEOUT_UNIT);
@@ -752,7 +766,7 @@ public class PortMappingVersion121 {
                                 && Direction.Tx.getIntValue() == port2.getPortDirection().getIntValue()
                                 && port1.getPartnerPort() != null && port2.getPartnerPort() != null
                                 && port1.getPartnerPort().getCircuitPackName().equals(cp2Name)
-                                && port1.getPartnerPort().getPortName().equals(port2.getPortName().toString())
+                                && port1.getPartnerPort().getPortName().equals(port2.getPortName())
                                 && port2.getPartnerPort().getCircuitPackName().equals(cp1Name)
                                 && port2.getPartnerPort().getPortName().equals(port1.getPortName()))
                                 ||
@@ -762,23 +776,23 @@ public class PortMappingVersion121 {
                                 && Direction.Tx.getIntValue() == port1.getPortDirection().getIntValue()
                                 && port1.getPartnerPort() != null && port2.getPartnerPort() != null
                                 && port1.getPartnerPort().getCircuitPackName().equals(cp2Name)
-                                && port1.getPartnerPort().getPortName().equals(port2.getPortName().toString())
+                                && port1.getPartnerPort().getPortName().equals(port2.getPortName())
                                 && port2.getPartnerPort().getCircuitPackName().equals(cp1Name)
-                                && port2.getPartnerPort().getPortName().equals(port1.getPortName().toString()))) {
-                            String logicalConnectionPoint1 = new StringBuilder("DEG").append(k).append("-TTP-")
-                                .append(port1.getPortDirection().getName().toUpperCase()).toString();
+                                && port2.getPartnerPort().getPortName().equals(port1.getPortName()))) {
+                            String logicalConnectionPoint1 = new StringBuilder("DEG").append(cpMapEntry.getKey())
+                                .append("-TTP-").append(port1.getPortDirection().getName().toUpperCase()).toString();
                             LOG.info("{} : Logical Connection Point for {} {} is {}", nodeId,
-                                connectionPortMap.get(k).get(0).getCircuitPackName(), port1.getPortName(),
-                                logicalConnectionPoint1);
-                            portMapList.add(createMappingObject(nodeId, port1, connectionPortMap.get(k).get(0)
-                                .getCircuitPackName(), logicalConnectionPoint1));
-                            String logicalConnectionPoint2 = new StringBuilder("DEG").append(k).append("-TTP-")
-                                .append(port2.getPortDirection().getName().toUpperCase()).toString();
+                                connectionPortMap.get(cpMapEntry.getKey()).get(0).getCircuitPackName(),
+                                port1.getPortName(), logicalConnectionPoint1);
+                            portMapList.add(createMappingObject(nodeId, port1, connectionPortMap
+                                .get(cpMapEntry.getKey()).get(0).getCircuitPackName(), logicalConnectionPoint1));
+                            String logicalConnectionPoint2 = new StringBuilder("DEG").append(cpMapEntry.getKey())
+                                .append("-TTP-").append(port2.getPortDirection().getName().toUpperCase()).toString();
                             LOG.info("{} : Logical Connection Point for {} {} is {}", nodeId,
-                                connectionPortMap.get(k).get(1).getCircuitPackName(), port2.getPortName(),
-                                logicalConnectionPoint2);
-                            portMapList.add(createMappingObject(nodeId, port2, connectionPortMap.get(k).get(1)
-                                .getCircuitPackName(), logicalConnectionPoint2));
+                                connectionPortMap.get(cpMapEntry.getKey()).get(1).getCircuitPackName(),
+                                port2.getPortName(), logicalConnectionPoint2);
+                            portMapList.add(createMappingObject(nodeId, port2, connectionPortMap
+                                .get(cpMapEntry.getKey()).get(1).getCircuitPackName(), logicalConnectionPoint2));
                         } else {
                             LOG.error(
                                 "Impossible to create logical connection point for port {} or port {} on node {} - Error in configuration with port-qual, port-direction or partner-port configuration",
@@ -786,14 +800,14 @@ public class PortMappingVersion121 {
                         }
                     } else {
                         LOG.error("No port {} on circuit pack {} for node {}",
-                            connectionPortMap.get(k).get(0).getPortName().toString(),
-                            connectionPortMap.get(k).get(0).getCircuitPackName(), nodeId);
+                            connectionPortMap.get(cpMapEntry.getKey()).get(0).getPortName().toString(),
+                            connectionPortMap.get(cpMapEntry.getKey()).get(0).getCircuitPackName(), nodeId);
                         return false;
                     }
 
                     break;
                 default:
-                    LOG.error("Number of connection port for DEG{} on {} is incorrect", k, nodeId);
+                    LOG.error("Number of connection port for DEG{} on {} is incorrect", cpMapEntry.getKey(), nodeId);
                     continue;
             }
         }
@@ -803,8 +817,7 @@ public class PortMappingVersion121 {
     private NodeInfo createNodeInfo(Info deviceInfo) {
         NodeInfoBuilder nodeInfoBldr = new NodeInfoBuilder();
         if (deviceInfo.getNodeType() != null) {
-            nodeInfoBldr = new NodeInfoBuilder()
-                .setOpenroadmVersion(OpenroadmVersion._121);
+            nodeInfoBldr.setOpenroadmVersion(OpenroadmVersion._121);
             if (deviceInfo.getNodeType().getIntValue() == 1) {
                 nodeInfoBldr.setNodeType(NodeTypes.Rdm);
             } else if (deviceInfo.getNodeType().getIntValue() == 2) {