X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=common%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fcommon%2Fcrossconnect%2FCrossConnectImpl.java;h=b9a12e5881a760ef2a3949324dc9813d255293e8;hb=eedfcf046eadaa5ca9d38792c0af8769a4006f32;hp=ec699ae97859c7366d2ce83a0421d0638ef8c1c4;hpb=869d6c3def408c3d984617a2dd4bada049db94a1;p=transportpce.git diff --git a/common/src/main/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl.java b/common/src/main/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl.java index ec699ae97..b9a12e588 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl.java @@ -10,99 +10,145 @@ 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.rev220926.otn.renderer.nodes.Nodes; +import org.opendaylight.yangtools.yang.common.Decimal64; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +@Component public class CrossConnectImpl implements CrossConnect { private static final Logger LOG = LoggerFactory.getLogger(CrossConnectImpl.class); - private final DeviceTransactionManager deviceTransactionManager; - protected CrossConnect crossConnect; private final MappingUtils mappingUtils; private CrossConnectImpl121 crossConnectImpl121; private CrossConnectImpl221 crossConnectImpl221; + private CrossConnectImpl710 crossConnectImpl710; + + @Activate + public CrossConnectImpl(@Reference DeviceTransactionManager deviceTransactionManager, + @Reference MappingUtils mappingUtils) { + this(deviceTransactionManager, mappingUtils, + new CrossConnectImpl121(deviceTransactionManager), + new CrossConnectImpl221(deviceTransactionManager), + new CrossConnectImpl710(deviceTransactionManager)); + } + // TODO: DeviceTransactionManager is not used here public CrossConnectImpl(DeviceTransactionManager deviceTransactionManager, MappingUtils mappingUtils, CrossConnectImpl121 crossConnectImpl121, - CrossConnectImpl221 crossConnectImpl221) { - this.deviceTransactionManager = deviceTransactionManager; + CrossConnectImpl221 crossConnectImpl221, + CrossConnectImpl710 crossConnectImpl710) { this.mappingUtils = mappingUtils; this.crossConnectImpl121 = crossConnectImpl121; this.crossConnectImpl221 = crossConnectImpl221; - this.crossConnect = null; + this.crossConnectImpl710 = crossConnectImpl710; } public Optional getCrossConnect(String nodeId, String connectionNumber) { - String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId); - if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_1_2_1)) { - return crossConnectImpl121.getCrossConnect(nodeId,connectionNumber); - } - else if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_2_2_1)) { - return crossConnectImpl221.getCrossConnect(nodeId,connectionNumber); + switch (mappingUtils.getOpenRoadmVersion(nodeId)) { + case OPENROADM_DEVICE_VERSION_1_2_1: + return crossConnectImpl121.getCrossConnect(nodeId,connectionNumber); + case OPENROADM_DEVICE_VERSION_2_2_1: + return crossConnectImpl221.getCrossConnect(nodeId,connectionNumber); + default: + return Optional.empty(); } - return null; } - public Optional postCrossConnect(String nodeId, Long waveNumber, String srcTp, String destTp) { + public Optional 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)) { - LOG.info("Device Version is 1.2.1"); - return crossConnectImpl121.postCrossConnect(nodeId, waveNumber, srcTp, destTp); + LOG.info("Cross Connect post request received for node {} with version {}", nodeId, openRoadmVersion); + switch (openRoadmVersion) { + case OPENROADM_DEVICE_VERSION_1_2_1: + LOG.info("Device Version is 1.2.1"); + return crossConnectImpl121.postCrossConnect(nodeId, srcTp, destTp, spectrumInformation); + case OPENROADM_DEVICE_VERSION_2_2_1: + LOG.info("Device Version is 2.2.1"); + return crossConnectImpl221.postCrossConnect(nodeId, srcTp, destTp, spectrumInformation); + default: + LOG.info("Device Version not found"); + return Optional.empty(); } - else if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_2_2_1)) { - LOG.info("Device Version is 2.2"); - return crossConnectImpl221.postCrossConnect(nodeId, waveNumber, srcTp, destTp); - } - LOG.info("Device Version not found"); - return null; - } - public List deleteCrossConnect(String nodeId, String connectionNumber) { - - String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId); - if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_1_2_1)) { - return crossConnectImpl121.deleteCrossConnect(nodeId, connectionNumber); + public List deleteCrossConnect(String nodeId, String connectionNumber, Boolean isOtn) { + 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; } - else if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_2_2_1)) { - return crossConnectImpl221.deleteCrossConnect(nodeId, connectionNumber); - } - 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); + switch (mappingUtils.getOpenRoadmVersion(nodeId)) { + case OPENROADM_DEVICE_VERSION_1_2_1: + return crossConnectImpl121 + .getConnectionPortTrail(nodeId, srcTp, destTp, lowerSpectralSlotNumber, higherSpectralSlotNumber); + case OPENROADM_DEVICE_VERSION_2_2_1: + return crossConnectImpl221 + .getConnectionPortTrail(nodeId, srcTp, destTp, lowerSpectralSlotNumber, higherSpectralSlotNumber); + default: + return null; } - else if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_2_2_1)) { - return crossConnectImpl221.getConnectionPortTrail(nodeId, waveNumber, srcTp, destTp); - } - return null; } - public boolean setPowerLevel(String nodeId, Enum mode, BigDecimal powerValue, - String connectionNumber) { - String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId); - if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_1_2_1)) { - return crossConnectImpl121.setPowerLevel(nodeId,mode,powerValue,connectionNumber); + @Override + public boolean setPowerLevel(String nodeId, String mode, Decimal64 powerValue, String connectionNumber) { + switch (mappingUtils.getOpenRoadmVersion(nodeId)) { + case OPENROADM_DEVICE_VERSION_1_2_1: + if (OpticalControlMode.forName(mode) == null) { + return false; + } + return crossConnectImpl121.setPowerLevel(nodeId, + OpticalControlMode.forName(mode), + powerValue, connectionNumber); + case OPENROADM_DEVICE_VERSION_2_2_1: + if (org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.OpticalControlMode + .forName(mode) == null) { + return false; + } + return crossConnectImpl221.setPowerLevel(nodeId, + org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.OpticalControlMode + .forName(mode), + powerValue, connectionNumber); + default: + return false; } - else if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_2_2_1)) { - return crossConnectImpl221.setPowerLevel(nodeId,mode,powerValue,connectionNumber); + } + + @Override + public Optional postOtnCrossConnect(List createdOduInterfaces, Nodes node) + throws OpenRoadmInterfaceException { + switch (mappingUtils.getOpenRoadmVersion(node.getNodeId())) { + case OPENROADM_DEVICE_VERSION_2_2_1: + return crossConnectImpl221.postOtnCrossConnect(createdOduInterfaces, node); + case OPENROADM_DEVICE_VERSION_7_1: + return crossConnectImpl710.postOtnCrossConnect(createdOduInterfaces, node); + default: + return Optional.empty(); } - return false; } }