Adapt TransportPCE code to Sulfur
[transportpce.git] / common / src / main / java / org / opendaylight / transportpce / common / crossconnect / CrossConnectImpl.java
index 463dabd9456473376f3d493f38a4ebdcc1b41628..71af9a89c168655c74b50e1c48d5902d9b321186 100644 (file)
@@ -10,14 +10,17 @@ package org.opendaylight.transportpce.common.crossconnect;
 
 import static org.opendaylight.transportpce.common.StringConstants.OPENROADM_DEVICE_VERSION_1_2_1;
 import static org.opendaylight.transportpce.common.StringConstants.OPENROADM_DEVICE_VERSION_2_2_1;
+import static org.opendaylight.transportpce.common.StringConstants.OPENROADM_DEVICE_VERSION_7_1;
 
-import java.math.BigDecimal;
 import java.util.List;
 import java.util.Optional;
-
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
+import org.opendaylight.transportpce.common.fixedflex.SpectrumInformation;
 import org.opendaylight.transportpce.common.mapping.MappingUtils;
 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.OpticalControlMode;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.otn.renderer.nodes.Nodes;
+import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -29,78 +32,107 @@ public class CrossConnectImpl implements CrossConnect {
     private final MappingUtils mappingUtils;
     private CrossConnectImpl121 crossConnectImpl121;
     private CrossConnectImpl221 crossConnectImpl221;
+    private CrossConnectImpl710 crossConnectImpl710;
 
     public CrossConnectImpl(DeviceTransactionManager deviceTransactionManager, MappingUtils mappingUtils,
                             CrossConnectImpl121 crossConnectImpl121,
-                            CrossConnectImpl221 crossConnectImpl221) {
+                            CrossConnectImpl221 crossConnectImpl221,
+                            CrossConnectImpl710 crossConnectImpl710) {
         this.mappingUtils = mappingUtils;
         this.crossConnectImpl121 = crossConnectImpl121;
         this.crossConnectImpl221 = crossConnectImpl221;
+        this.crossConnectImpl710 = crossConnectImpl710;
         this.crossConnect = null;
     }
 
     public Optional<?> getCrossConnect(String nodeId, String connectionNumber) {
         String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId);
-        if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_1_2_1)) {
+        if (OPENROADM_DEVICE_VERSION_1_2_1.equals(openRoadmVersion)) {
             return crossConnectImpl121.getCrossConnect(nodeId,connectionNumber);
         }
-        else if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_2_2_1)) {
+        else if (OPENROADM_DEVICE_VERSION_2_2_1.equals(openRoadmVersion)) {
             return crossConnectImpl221.getCrossConnect(nodeId,connectionNumber);
         }
-        return null;
+        return Optional.empty();
     }
 
 
-    public Optional<String> postCrossConnect(String nodeId, Long waveNumber, String srcTp, String destTp) {
+    public Optional<String> postCrossConnect(String nodeId, String srcTp, String destTp,
+            SpectrumInformation spectrumInformation) {
         String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId);
         LOG.info("Cross Connect post request received for node {} with version {}",nodeId,openRoadmVersion);
-        if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_1_2_1)) {
+        if (OPENROADM_DEVICE_VERSION_1_2_1.equals(openRoadmVersion)) {
             LOG.info("Device Version is 1.2.1");
-            return crossConnectImpl121.postCrossConnect(nodeId, waveNumber, srcTp, destTp);
+            return crossConnectImpl121.postCrossConnect(nodeId, srcTp, destTp, spectrumInformation);
         }
-        else if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_2_2_1)) {
+        else if (OPENROADM_DEVICE_VERSION_2_2_1.equals(openRoadmVersion)) {
             LOG.info("Device Version is 2.2");
-            return crossConnectImpl221.postCrossConnect(nodeId, waveNumber, srcTp, destTp);
+            return crossConnectImpl221.postCrossConnect(nodeId, srcTp, destTp,
+                    spectrumInformation);
         }
         LOG.info("Device Version not found");
-        return null;
+        return Optional.empty();
 
     }
 
 
-    public List<String> deleteCrossConnect(String nodeId, String connectionNumber) {
+    public List<String> deleteCrossConnect(String nodeId, String connectionNumber, Boolean isOtn) {
 
-        String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId);
-        if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_1_2_1)) {
-            return crossConnectImpl121.deleteCrossConnect(nodeId, connectionNumber);
-        }
-        else if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_2_2_1)) {
-            return crossConnectImpl221.deleteCrossConnect(nodeId, connectionNumber);
+        switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
+            case OPENROADM_DEVICE_VERSION_1_2_1:
+                return crossConnectImpl121.deleteCrossConnect(nodeId, connectionNumber);
+            case OPENROADM_DEVICE_VERSION_2_2_1:
+                return crossConnectImpl221.deleteCrossConnect(nodeId, connectionNumber, isOtn);
+            case OPENROADM_DEVICE_VERSION_7_1:
+                return crossConnectImpl710.deleteOtnCrossConnect(nodeId, connectionNumber);
+            default:
+                return null;
         }
-        return null;
     }
 
-    public List<?> getConnectionPortTrail(String nodeId, Long waveNumber, String srcTp, String destTp)
+    public List<?> getConnectionPortTrail(String nodeId, String srcTp, String destTp, int lowerSpectralSlotNumber,
+            int higherSpectralSlotNumber)
             throws OpenRoadmInterfaceException {
         String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId);
-        if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_1_2_1)) {
-            return crossConnectImpl121.getConnectionPortTrail(nodeId, waveNumber, srcTp, destTp);
+        if (OPENROADM_DEVICE_VERSION_1_2_1.equals(openRoadmVersion)) {
+            return crossConnectImpl121.getConnectionPortTrail(nodeId, srcTp, destTp,
+                    lowerSpectralSlotNumber, higherSpectralSlotNumber);
         }
-        else if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_2_2_1)) {
-            return crossConnectImpl221.getConnectionPortTrail(nodeId, waveNumber, srcTp, destTp);
+        else if (OPENROADM_DEVICE_VERSION_2_2_1.equals(openRoadmVersion)) {
+            return crossConnectImpl221
+                    .getConnectionPortTrail(nodeId, srcTp, destTp, lowerSpectralSlotNumber, higherSpectralSlotNumber);
         }
         return null;
     }
 
-    public boolean setPowerLevel(String nodeId, Enum mode, BigDecimal powerValue,
-                                 String connectionNumber) {
+    @Override
+    public boolean setPowerLevel(String nodeId, String mode, Decimal64 powerValue, String connectionNumber) {
         String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId);
-        if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_1_2_1)) {
-            return crossConnectImpl121.setPowerLevel(nodeId,mode,powerValue,connectionNumber);
+        if (OPENROADM_DEVICE_VERSION_1_2_1.equals(openRoadmVersion) && OpticalControlMode.forName(mode).isPresent()) {
+            return crossConnectImpl121.setPowerLevel(nodeId,OpticalControlMode.forName(mode).get(), powerValue,
+                connectionNumber);
         }
-        else if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_2_2_1)) {
-            return crossConnectImpl221.setPowerLevel(nodeId,mode,powerValue,connectionNumber);
+        else if (OPENROADM_DEVICE_VERSION_2_2_1.equals(openRoadmVersion)
+            && org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.OpticalControlMode.forName(mode)
+            .isPresent()) {
+            return crossConnectImpl221.setPowerLevel(nodeId,
+                org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.OpticalControlMode.forName(mode)
+                .get(), powerValue, connectionNumber);
         }
         return false;
     }
+
+    @Override
+    public Optional<String> postOtnCrossConnect(List<String> createdOduInterfaces, Nodes node)
+            throws OpenRoadmInterfaceException {
+        String openRoadmVersion = mappingUtils.getOpenRoadmVersion(node.getNodeId());
+
+        if (OPENROADM_DEVICE_VERSION_2_2_1.equals(openRoadmVersion)) {
+            return crossConnectImpl221.postOtnCrossConnect(createdOduInterfaces, node);
+        }
+        else if (OPENROADM_DEVICE_VERSION_7_1.equals(openRoadmVersion)) {
+            return crossConnectImpl710.postOtnCrossConnect(createdOduInterfaces, node);
+        }
+        return Optional.empty();
+    }
 }