Add protection in portmapping connection-map loop
[transportpce.git] / common / src / main / java / org / opendaylight / transportpce / common / mapping / PortMappingVersion710.java
index 0987dfe7f3b9b1b9110ba24385b1f301c1fb646f..9eb0cf9f6048c41db228e857129f8638794782d1 100644 (file)
@@ -89,10 +89,6 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev191129.OtnO
 import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev200529.Protocols1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev200529.lldp.container.Lldp;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev200529.lldp.container.lldp.PortConfig;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.port.capability.rev200529.Ports1;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.port.capability.rev200529.port.capability.grp.port.capabilities.SupportedInterfaceCapability;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.port.capability.rev200529.port.capability.grp.port.capabilities.SupportedInterfaceCapabilityKey;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.SupportedIfCapability;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.Uint16;
 import org.opendaylight.yangtools.yang.common.Uint32;
@@ -421,31 +417,33 @@ public class PortMappingVersion710 {
             }
         }
 
-        if (device.getConnectionMap() != null) {
+        if (device.getConnectionMap() == null) {
+            LOG.warn("No connection-map inside device configuration");
+        } else {
             Collection<ConnectionMap> connectionMap = deviceObject.get().nonnullConnectionMap().values();
-            String slcp = null;
-            String dlcp = null;
             for (ConnectionMap cm : connectionMap) {
+                String slcp = null;
+                String dlcp = null;
                 String skey = cm.getSource().getCircuitPackName() + "+" + cm.getSource().getPortName();
                 if (lcpMap.containsKey(skey)) {
                     slcp = lcpMap.get(skey);
                 }
                 Destination destination0 = cm.nonnullDestination().values().iterator().next();
                 String dkey = destination0.getCircuitPackName() + "+" + destination0.getPortName();
+                if (slcp == null) {
+                    LOG.error("Error in connection-map analysis for source {} and destination (circuitpack+port) {}",
+                        skey, dkey);
+                    continue;
+                }
                 if (lcpMap.containsKey(dkey)) {
                     dlcp = lcpMap.get(dkey);
                 }
-                if (slcp != null) {
-                    Mapping mapping = mappingMap.get(slcp);
-                    mappingMap.remove(slcp);
-                    portMapList.add(createXpdrMappingObject(nodeId, null, null, null, null, mapping, dlcp, null));
-                } else {
-                    LOG.error("Error in connection-map analysis");
-                }
+                Mapping mapping = mappingMap.get(slcp);
+                mappingMap.remove(slcp);
+                portMapList.add(createXpdrMappingObject(nodeId, null, null, null, null, mapping, dlcp, null));
             }
-        } else {
-            LOG.warn("No connection-map inside device configuration");
         }
+
         if (device.getOduSwitchingPools() != null) {
             Collection<OduSwitchingPools> oduSwithcingPools = device.nonnullOduSwitchingPools().values();
             List<SwitchingPoolLcp> switchingPoolList = new ArrayList<>();
@@ -880,24 +878,12 @@ public class PortMappingVersion710 {
     }
 
     private List<McCapabilities> createMcCapDegreeObject(List<Degree> degrees,
-        Map<McCapabilityProfileKey, McCapabilityProfile> mcCapabilityProfileMap, String nodeId) {
+            Map<McCapabilityProfileKey, McCapabilityProfile> mcCapabilityProfileMap, String nodeId) {
+
         List<McCapabilities> mcCapabilitiesList = new ArrayList<>();
         for (Degree degree : degrees) {
-            if (!degree.getMcCapabilityProfileName().isEmpty()) {
-                for (String mcCapabilityProfileName : degree.getMcCapabilityProfileName()) {
-                    McCapabilityProfileKey mcKey = new McCapabilityProfileKey(mcCapabilityProfileName);
-                    McCapabilityProfile mcCapabilityProfile = mcCapabilityProfileMap.get(mcKey);
-                    String mcNodeName = "DEG" + degree.getDegreeNumber().toString() + "-TTP-" + mcCapabilityProfile;
-                    McCapabilitiesBuilder mcCapabilitiesBuilder = new McCapabilitiesBuilder()
-                        .withKey(new McCapabilitiesKey(mcNodeName))
-                        .setMcNodeName(mcNodeName);
-                    mcCapabilitiesBuilder
-                        .setCenterFreqGranularity(mcCapabilityProfile.getCenterFreqGranularity())
-                        .setSlotWidthGranularity(mcCapabilityProfile.getSlotWidthGranularity());
-                    mcCapabilitiesList.add(mcCapabilitiesBuilder.build());
-                } // end for
-            }
-            else {
+
+            if ((degree.getMcCapabilityProfileName() == null) || (degree.getMcCapabilityProfileName().isEmpty())) {
                 LOG.warn("No MC profiles are found for  node {} on degree {}", nodeId, degree.getDegreeNumber());
                 LOG.warn("Assuming the fixed grid capabilities for degree {}", degree.getDegreeNumber());
                 LOG.warn("Assuming a default MC profile-name for degree {}", degree.getDegreeNumber());
@@ -908,30 +894,34 @@ public class PortMappingVersion710 {
                 mcCapabilitiesBuilder
                     .setCenterFreqGranularity(FrequencyGHz.getDefaultInstance("50"))
                     .setSlotWidthGranularity(FrequencyGHz.getDefaultInstance("50"));
+                mcCapabilitiesList.add(mcCapabilitiesBuilder.build());
+                continue;
+            }
+
+            for (String mcCapabilityProfileName : degree.getMcCapabilityProfileName()) {
+                McCapabilityProfileKey mcKey = new McCapabilityProfileKey(mcCapabilityProfileName);
+                McCapabilityProfile mcCapabilityProfile = mcCapabilityProfileMap.get(mcKey);
+                String mcNodeName = "DEG" + degree.getDegreeNumber().toString() + "-TTP-" + mcCapabilityProfile;
+                McCapabilitiesBuilder mcCapabilitiesBuilder = new McCapabilitiesBuilder()
+                    .withKey(new McCapabilitiesKey(mcNodeName))
+                    .setMcNodeName(mcNodeName);
+                mcCapabilitiesBuilder
+                    .setCenterFreqGranularity(mcCapabilityProfile.getCenterFreqGranularity())
+                    .setSlotWidthGranularity(mcCapabilityProfile.getSlotWidthGranularity());
+                mcCapabilitiesList.add(mcCapabilitiesBuilder.build());
             }
+
         }
         return mcCapabilitiesList;
     }
 
     private List<McCapabilities> createMcCapSrgObject(List<SharedRiskGroup> srgs,
-        Map<McCapabilityProfileKey, McCapabilityProfile> mcCapabilityProfileMap, String nodeId) {
+            Map<McCapabilityProfileKey, McCapabilityProfile> mcCapabilityProfileMap, String nodeId) {
+
         List<McCapabilities> mcCapabilitiesList = new ArrayList<>();
         for (SharedRiskGroup srg : srgs) {
-            if (!srg.getMcCapabilityProfileName().isEmpty()) {
-                for (String mcCapabilityProfileName : srg.getMcCapabilityProfileName()) {
-                    McCapabilityProfileKey mcKey = new McCapabilityProfileKey(mcCapabilityProfileName);
-                    McCapabilityProfile mcCapabilityProfile = mcCapabilityProfileMap.get(mcKey);
-                    String mcNodeName = "SRG" + srg.getSrgNumber().toString() + "-PP-" + mcCapabilityProfile;
-                    McCapabilitiesBuilder mcCapabilitiesBuilder = new McCapabilitiesBuilder()
-                        .withKey(new McCapabilitiesKey(mcNodeName))
-                        .setMcNodeName(mcNodeName);
-                    mcCapabilitiesBuilder
-                        .setCenterFreqGranularity(mcCapabilityProfile.getCenterFreqGranularity())
-                        .setSlotWidthGranularity(mcCapabilityProfile.getSlotWidthGranularity());
-                    mcCapabilitiesList.add(mcCapabilitiesBuilder.build());
-                } // end for
-            }
-            else {
+
+            if ((srg.getMcCapabilityProfileName() == null) || (srg.getMcCapabilityProfileName().isEmpty())) {
                 LOG.warn("No MC profiles are found for  node {} on SRG {}", nodeId, srg.getSrgNumber());
                 LOG.warn("Assuming the fixed grid capabilities for SRG {}", srg.getSrgNumber());
                 LOG.warn("Assuming a default MC profile-name for SRG {}", srg.getSrgNumber());
@@ -942,6 +932,21 @@ public class PortMappingVersion710 {
                 mcCapabilitiesBuilder
                     .setCenterFreqGranularity(FrequencyGHz.getDefaultInstance("50"))
                     .setSlotWidthGranularity(FrequencyGHz.getDefaultInstance("50"));
+                mcCapabilitiesList.add(mcCapabilitiesBuilder.build());
+                continue;
+            }
+
+            for (String mcCapabilityProfileName : srg.getMcCapabilityProfileName()) {
+                McCapabilityProfileKey mcKey = new McCapabilityProfileKey(mcCapabilityProfileName);
+                McCapabilityProfile mcCapabilityProfile = mcCapabilityProfileMap.get(mcKey);
+                String mcNodeName = "SRG" + srg.getSrgNumber().toString() + "-PP-" + mcCapabilityProfile;
+                McCapabilitiesBuilder mcCapabilitiesBuilder = new McCapabilitiesBuilder()
+                    .withKey(new McCapabilitiesKey(mcNodeName))
+                    .setMcNodeName(mcNodeName);
+                mcCapabilitiesBuilder
+                    .setCenterFreqGranularity(mcCapabilityProfile.getCenterFreqGranularity())
+                    .setSlotWidthGranularity(mcCapabilityProfile.getSlotWidthGranularity());
+                mcCapabilitiesList.add(mcCapabilitiesBuilder.build());
             }
         }
         return mcCapabilitiesList;
@@ -1012,9 +1017,6 @@ public class PortMappingVersion710 {
         if (ports.getPortQual() != null) {
             mpBldr.setPortQual(ports.getPortQual().getName());
         }
-        if (ports.augmentation(Ports1.class).getPortCapabilities().getSupportedInterfaceCapability() != null) {
-            mpBldr.setSupportedInterfaceCapability(getSupportedIfCapability(ports));
-        }
         if (xpdrNodeType != null) {
             mpBldr.setXponderType(xpdrNodeType);
         }
@@ -1024,16 +1026,6 @@ public class PortMappingVersion710 {
         return mpBldr.build();
     }
 
-
-    private List<Class<? extends SupportedIfCapability>> getSupportedIfCapability(Ports ports) {
-        Map<SupportedInterfaceCapabilityKey, SupportedInterfaceCapability> supportedInterfaceCapabilityMap =
-            ports.augmentation(Ports1.class).getPortCapabilities().getSupportedInterfaceCapability();
-        List<Class<? extends SupportedIfCapability>> supportedInterfaceCapabilityList = new ArrayList<>();
-
-        supportedInterfaceCapabilityMap.forEach((k, v) -> supportedInterfaceCapabilityList.add(k.getIfCapType()));
-        return supportedInterfaceCapabilityList;
-    }
-
     private boolean createMcCapabilitiesList(String nodeId, Info deviceInfo, List<McCapabilities> mcCapabilitiesList) {
         List<Degree> degrees = getDegrees(nodeId, deviceInfo);
         List<SharedRiskGroup> srgs = getSrgs(nodeId, deviceInfo);