X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=common%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fcommon%2Fcrossconnect%2FCrossConnectImpl121.java;h=89cdc7793cedfefe1fc3efd52f3e1827a159112a;hb=refs%2Fchanges%2F97%2F102497%2F2;hp=99843bd081c1ad4e03b51a5a8418a0234c123f40;hpb=738d0daf16440e92fc7b111d3db83b42573c705a;p=transportpce.git diff --git a/common/src/main/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl121.java b/common/src/main/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl121.java index 99843bd08..89cdc7793 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl121.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl121.java @@ -8,7 +8,6 @@ package org.opendaylight.transportpce.common.crossconnect; import com.google.common.util.concurrent.FluentFuture; -import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -23,11 +22,14 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.Timeouts; import org.opendaylight.transportpce.common.device.DeviceTransaction; import org.opendaylight.transportpce.common.device.DeviceTransactionManager; +import org.opendaylight.transportpce.common.fixedflex.GridConstant; +import org.opendaylight.transportpce.common.fixedflex.SpectrumInformation; 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.openroadm.common.types.rev161014.PowerDBm; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.GetConnectionPortTrailInputBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.GetConnectionPortTrailOutput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceData; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceService; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.connection.DestinationBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.connection.SourceBuilder; @@ -37,6 +39,7 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.open import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.RoadmConnectionsBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.RoadmConnectionsKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Decimal64; import org.opendaylight.yangtools.yang.common.RpcResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -56,16 +59,22 @@ public class CrossConnectImpl121 { Timeouts.DEVICE_READ_TIMEOUT_UNIT); } - public Optional postCrossConnect(String deviceId, Long waveNumber, String srcTp, String destTp) { + public Optional postCrossConnect(String deviceId, String srcTp, String destTp, + SpectrumInformation spectrumInformation) { RoadmConnectionsBuilder rdmConnBldr = new RoadmConnectionsBuilder(); - String connectionNumber = generateConnectionNumber(srcTp, destTp, waveNumber); + String connectionNumber = spectrumInformation.getIdentifierFromParams(srcTp, destTp); rdmConnBldr.setConnectionNumber(connectionNumber); - rdmConnBldr.setWavelengthNumber(waveNumber); + rdmConnBldr.setWavelengthNumber(spectrumInformation.getWaveLength()); rdmConnBldr.setOpticalControlMode(OpticalControlMode.Off); - rdmConnBldr.setSource(new SourceBuilder().setSrcIf(srcTp + "-" + waveNumber.toString()).build()); - rdmConnBldr.setDestination(new DestinationBuilder().setDstIf(destTp + "-" + waveNumber.toString()).build()); - InstanceIdentifier rdmConnectionIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(RoadmConnections.class, new RoadmConnectionsKey(rdmConnBldr.getConnectionNumber())); + rdmConnBldr.setSource(new SourceBuilder().setSrcIf(spectrumInformation.getIdentifierFromParams(srcTp)) + .build()); + rdmConnBldr.setDestination(new DestinationBuilder() + .setDstIf(spectrumInformation.getIdentifierFromParams(destTp)) + .build()); + InstanceIdentifier rdmConnectionIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(RoadmConnections.class, new RoadmConnectionsKey(rdmConnBldr.getConnectionNumber())) + .build(); Future> deviceTxFuture = deviceTransactionManager.getDeviceTransaction(deviceId); DeviceTransaction deviceTx; @@ -83,15 +92,17 @@ public class CrossConnectImpl121 { } // post the cross connect on the device - deviceTx.put(LogicalDatastoreType.CONFIGURATION, rdmConnectionIID, rdmConnBldr.build()); + deviceTx.merge(LogicalDatastoreType.CONFIGURATION, rdmConnectionIID, rdmConnBldr.build()); FluentFuture commit = deviceTx.commit(Timeouts.DEVICE_WRITE_TIMEOUT, Timeouts.DEVICE_WRITE_TIMEOUT_UNIT); try { commit.get(); - LOG.info("Roadm-connection successfully created: {}-{}-{}", srcTp, destTp, waveNumber); + LOG.info("Roadm-connection successfully created: {}-{}-{}-{}", srcTp, destTp, + spectrumInformation.getLowerSpectralSlotNumber(), + spectrumInformation.getHigherSpectralSlotNumber()); return Optional.of(connectionNumber); } catch (InterruptedException | ExecutionException e) { - LOG.warn("Failed to post {}. Exception: {}", rdmConnBldr.build(), e); + LOG.warn("Failed to post {}. Exception: ", rdmConnBldr.build(), e); } return Optional.empty(); } @@ -137,9 +148,11 @@ public class CrossConnectImpl121 { } - public List getConnectionPortTrail(String nodeId, Long waveNumber, String srcTp, String destTp) - throws OpenRoadmInterfaceException { - String connectionName = generateConnectionNumber(srcTp, destTp, waveNumber); + public List getConnectionPortTrail(String nodeId, String srcTp, String destTp, + int lowerSpectralSlotNumber, int higherSpectralSlotNumber) throws OpenRoadmInterfaceException { + String spectralSlotName = String.join(GridConstant.SPECTRAL_SLOT_SEPARATOR, + String.valueOf(lowerSpectralSlotNumber), String.valueOf(higherSpectralSlotNumber)); + String connectionName = generateConnectionNumber(srcTp, destTp, spectralSlotName); Optional mountPointOpt = deviceTransactionManager.getDeviceMountPoint(nodeId); List ports = null; MountPoint mountPoint; @@ -181,20 +194,21 @@ public class CrossConnectImpl121 { } private InstanceIdentifier generateRdmConnectionIID(String connectionNumber) { - return InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(RoadmConnections.class, new RoadmConnectionsKey(connectionNumber)); + return InstanceIdentifier.builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(RoadmConnections.class, new RoadmConnectionsKey(connectionNumber)) + .build(); } - private String generateConnectionNumber(String srcTp, String destTp, Long waveNumber) { - return srcTp + "-" + destTp + "-" + waveNumber; + private String generateConnectionNumber(String srcTp, String destTp, String spectralSlotName) { + return String.join(GridConstant.NAME_PARAMETERS_SEPARATOR, srcTp, destTp, spectralSlotName); } - public boolean setPowerLevel(String deviceId, Enum mode, BigDecimal powerValue, String connectionNumber) { + public boolean setPowerLevel(String deviceId, OpticalControlMode mode, Decimal64 powerValue, String ctNumber) { - Optional rdmConnOpt = getCrossConnect(deviceId, connectionNumber); + Optional rdmConnOpt = getCrossConnect(deviceId, ctNumber); if (rdmConnOpt.isPresent()) { - RoadmConnectionsBuilder rdmConnBldr = new RoadmConnectionsBuilder(rdmConnOpt.get()); - rdmConnBldr.setOpticalControlMode(OpticalControlMode.class.cast(mode)); + RoadmConnectionsBuilder rdmConnBldr = new RoadmConnectionsBuilder(rdmConnOpt.get()) + .setOpticalControlMode(mode); if (powerValue != null) { rdmConnBldr.setTargetOutputPower(new PowerDBm(powerValue)); } @@ -217,9 +231,11 @@ public class CrossConnectImpl121 { } // post the cross connect on the device - InstanceIdentifier roadmConnIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(RoadmConnections.class, new RoadmConnectionsKey(connectionNumber)); - deviceTx.put(LogicalDatastoreType.CONFIGURATION, roadmConnIID, newRdmConn); + InstanceIdentifier roadmConnIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(RoadmConnections.class, new RoadmConnectionsKey(ctNumber)) + .build(); + deviceTx.merge(LogicalDatastoreType.CONFIGURATION, roadmConnIID, newRdmConn); FluentFuture commit = deviceTx.commit(Timeouts.DEVICE_WRITE_TIMEOUT, Timeouts.DEVICE_WRITE_TIMEOUT_UNIT); try { @@ -231,7 +247,7 @@ public class CrossConnectImpl121 { } } else { - LOG.warn("Roadm-Connection is null in set power level ({})", connectionNumber); + LOG.warn("Roadm-Connection is null in set power level ({})", ctNumber); } return false; }