Refactor SupportedIfCapability usage
[transportpce.git] / common / src / main / java / org / opendaylight / transportpce / common / mapping / PortMappingVersion710.java
index cfed29e9ce41ca0d6f5f87d9a2e4b9d6802a0d14..207d0bad6c6a122aa8fa44090a31b9e1f8476ca8 100644 (file)
@@ -31,32 +31,30 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.StringConstants;
 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.rev210426.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.NetworkBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.OpenroadmNodeVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.cp.to.degree.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.cp.to.degree.CpToDegreeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.cp.to.degree.CpToDegreeKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mapping.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mc.capabilities.McCapabilities;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mc.capabilities.McCapabilitiesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mc.capabilities.McCapabilitiesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.mpdr.restrictions.grp.MpdrRestrictionsBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.network.nodes.NodeInfoBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.SwitchingPoolLcp;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.SwitchingPoolLcpBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.SwitchingPoolLcpKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.switching.pool.lcp.NonBlockingList;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.switching.pool.lcp.NonBlockingListBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210426.switching.pool.lcp.switching.pool.lcp.NonBlockingListKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.cp.to.degree.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.cp.to.degree.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.cp.to.degree.CpToDegreeKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mc.capabilities.McCapabilities;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mc.capabilities.McCapabilitiesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mc.capabilities.McCapabilitiesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mpdr.restrictions.grp.MpdrRestrictionsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.switching.pool.lcp.SwitchingPoolLcp;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.switching.pool.lcp.SwitchingPoolLcpBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.switching.pool.lcp.SwitchingPoolLcpKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.switching.pool.lcp.switching.pool.lcp.NonBlockingList;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.switching.pool.lcp.switching.pool.lcp.NonBlockingListBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.switching.pool.lcp.switching.pool.lcp.NonBlockingListKey;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.alarm.pm.types.rev191129.Direction;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyGHz;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.CircuitPack;
@@ -92,6 +90,7 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev191129.Inte
 import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev191129.OpenROADMOpticalMultiplex;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev191129.OpticalTransport;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev191129.OtnOdu;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev191129.OtnOtu;
 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;
@@ -117,7 +116,6 @@ public class PortMappingVersion710 {
 
     private final DataBroker dataBroker;
     private final DeviceTransactionManager deviceTransactionManager;
-    private final OpenRoadmInterfaces openRoadmInterfaces;
 
     static {
         SUFFIX =  Map.of(
@@ -126,11 +124,9 @@ public class PortMappingVersion710 {
             Direction.Bidirectional, "TXRX");
     }
 
-    public PortMappingVersion710(DataBroker dataBroker, DeviceTransactionManager deviceTransactionManager,
-            OpenRoadmInterfaces openRoadmInterfaces) {
+    public PortMappingVersion710(DataBroker dataBroker, DeviceTransactionManager deviceTransactionManager) {
         this.dataBroker = dataBroker;
         this.deviceTransactionManager = deviceTransactionManager;
-        this.openRoadmInterfaces = openRoadmInterfaces;
     }
 
     public boolean createMappingData(String nodeId) {
@@ -371,7 +367,7 @@ public class PortMappingVersion710 {
                 portList.sort(Comparator.comparing(Ports::getPortName));
                 for (Ports port : portList) {
                     int[] counters = fillXpdrLcpsMaps(line, client, nodeId,
-                        1, null, circuitPackName, port,
+                        1, XpdrNodeTypes.Tpdr, circuitPackName, port,
                         circuitPackList, lcpMap, mappingMap);
                     line = counters[0];
                     client = counters[1];
@@ -511,12 +507,12 @@ public class PortMappingVersion710 {
         for (Entry<Integer, List<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.srg.CircuitPacks>>
                 srgCpEntry : getSrgCps(nodeId, deviceInfo).entrySet()) {
             List<String> keys = new ArrayList<>();
+            int portIndex = 1;
             for (org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.srg.CircuitPacks
                     cp : srgCpEntry.getValue()) {
                 String circuitPackName = cp.getCircuitPackName();
                 List<Ports> portList = getPortList(circuitPackName, nodeId);
                 Collections.sort(portList, new SortPort710ByName());
-                int portIndex = 1;
                 for (Ports port : portList) {
                     if (!checkPortQual(port, circuitPackName, nodeId)) {
                         continue;
@@ -924,9 +920,7 @@ public class PortMappingVersion710 {
     private Mapping updateMappingObject(String nodeId, Ports port, Mapping oldmapping) {
         MappingBuilder mpBldr = new MappingBuilder(oldmapping);
         updateMappingStates(mpBldr, port, oldmapping);
-        if ((port.getInterfaces() == null)
-            || (!oldmapping.getLogicalConnectionPoint().contains(StringConstants.TTP_TOKEN)
-                && !oldmapping.getLogicalConnectionPoint().contains(StringConstants.NETWORK_TOKEN))) {
+        if (port.getInterfaces() == null) {
             return mpBldr.build();
         }
         // Get interfaces provisioned on the port
@@ -947,41 +941,49 @@ public class PortMappingVersion710 {
     }
 
     private MappingBuilder updateMappingInterfaces(String nodeId, MappingBuilder mpBldr, Ports port) {
+        mpBldr.setSupportingOtu4(null)
+            .setSupportingOdu4(null)
+            .setSupportingOducn(null)
+            .setSupportingOtucn(null);
         for (Interfaces interfaces : port.getInterfaces()) {
-            try {
-                Optional<Interface> openRoadmInterface = this.openRoadmInterfaces.getInterface(nodeId,
-                    interfaces.getInterfaceName());
-                if (openRoadmInterface.isEmpty()) {
-                    LOG.warn(PortMappingUtils.INTF_ISSUE_LOGMSG,
-                        nodeId, interfaces.getInterfaceName() + "- empty interface");
-                    continue;
-                }
-                LOG.debug(PortMappingUtils.GOT_INTF_LOGMSG,
-                    nodeId, openRoadmInterface.get().getName(), openRoadmInterface.get().getType());
-                Class<? extends InterfaceType> interfaceType
-                    = (Class<? extends InterfaceType>) openRoadmInterface.get().getType();
-                // Check if interface type is OMS or OTS
-                if (interfaceType.equals(OpenROADMOpticalMultiplex.class)) {
-                    mpBldr.setSupportingOms(interfaces.getInterfaceName());
-                }
-                if (interfaceType.equals(OpticalTransport.class)) {
-                    mpBldr.setSupportingOts(interfaces.getInterfaceName());
-                }
-                String interfaceName = interfaces.getInterfaceName();
-                if (interfaceType.equals(OtnOdu.class)
-                    && (interfaceName.substring(interfaceName.lastIndexOf("-") + 1)
-                    .equals("ODU"))) {
-                    mpBldr.setSupportingOdu4(interfaces.getInterfaceName());
-                }
-                if ((interfaceType.equals(OtnOdu.class))
-                    && (interfaceName.substring(interfaceName.lastIndexOf("-") + 1)
-                    .equals("ODUC4"))) {
-                    mpBldr.setSupportingOduc4(interfaces.getInterfaceName());
-                }
-
-            } catch (OpenRoadmInterfaceException ex) {
+            Optional<Interface> openRoadmInterface = getInterfaceFromDevice(nodeId,
+                interfaces.getInterfaceName());
+            if (openRoadmInterface.isEmpty()) {
                 LOG.warn(PortMappingUtils.INTF_ISSUE_LOGMSG,
-                    nodeId, interfaces.getInterfaceName(), ex);
+                    nodeId, interfaces.getInterfaceName() + "- empty interface");
+                continue;
+            }
+            LOG.debug(PortMappingUtils.GOT_INTF_LOGMSG,
+                nodeId, openRoadmInterface.get().getName(), openRoadmInterface.get().getType());
+            Class<? extends InterfaceType> interfaceType
+                = (Class<? extends InterfaceType>) openRoadmInterface.get().getType();
+            // Check if interface type is OMS or OTS
+            if (interfaceType.equals(OpenROADMOpticalMultiplex.class)) {
+                mpBldr.setSupportingOms(interfaces.getInterfaceName());
+            }
+            if (interfaceType.equals(OpticalTransport.class)) {
+                mpBldr.setSupportingOts(interfaces.getInterfaceName());
+            }
+            String interfaceName = interfaces.getInterfaceName();
+            if (interfaceType.equals(OtnOtu.class)
+                && (interfaceName.substring(interfaceName.lastIndexOf("-") + 1)
+                .equals("OTU4"))) {
+                mpBldr.setSupportingOtu4(interfaces.getInterfaceName());
+            }
+            if ((interfaceType.equals(OtnOtu.class))
+                && (interfaceName.substring(interfaceName.lastIndexOf("-") + 1)
+                .contains("OTUC"))) {
+                mpBldr.setSupportingOtucn(interfaces.getInterfaceName());
+            }
+            if (interfaceType.equals(OtnOdu.class)
+                && (interfaceName.substring(interfaceName.lastIndexOf("-") + 1)
+                .equals("ODU4"))) {
+                mpBldr.setSupportingOdu4(interfaces.getInterfaceName());
+            }
+            if ((interfaceType.equals(OtnOdu.class))
+                && (interfaceName.substring(interfaceName.lastIndexOf("-") + 1)
+                .contains("ODUC"))) {
+                mpBldr.setSupportingOducn(interfaces.getInterfaceName());
             }
         }
         return mpBldr;
@@ -1019,11 +1021,11 @@ public class PortMappingVersion710 {
         }
         Collection<SupportedInterfaceCapability> supIntfCapaList = getSupIntfCapaList(port);
         if (supIntfCapaList != null) {
-            List<Class<? extends org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327
+            List<Class<? extends org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev201211
                 .SupportedIfCapability>> supportedIntf = new ArrayList<>();
             SupportedInterfaceCapability sic1 = null;
             for (SupportedInterfaceCapability sic : supIntfCapaList) {
-                supportedIntf.add(sic.getIfCapType());
+                supportedIntf.add(MappingUtilsImpl.convertSupIfCapa(sic.getIfCapType().getSimpleName()));
                 sic1 = sic;
             }
             mpBldr.setSupportedInterfaceCapability(supportedIntf);
@@ -1163,7 +1165,7 @@ public class PortMappingVersion710 {
                     PortMappingUtils.createXpdrLogicalConnectionPort(xponderNb, client, StringConstants.CLIENT_TOKEN);
                 lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp0);
                 mappingMap.put(lcp0,
-                    createXpdrMappingObject(nodeId, port, circuitPackName, lcp0, null, null, null, null));
+                    createXpdrMappingObject(nodeId, port, circuitPackName, lcp0, null, null, null, xponderType));
                 client++;
                 break;
 
@@ -1416,4 +1418,10 @@ public class PortMappingVersion710 {
         return null;
     }
 
+    private Optional<Interface> getInterfaceFromDevice(String nodeId, String interfaceName) {
+        InstanceIdentifier<Interface> interfacesIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
+            .child(Interface.class, new InterfaceKey(interfaceName));
+        return deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION,
+            interfacesIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
+    }
 }