X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=common%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fcommon%2Fcrossconnect%2FCrossConnectImpl221.java;h=529af506c4335d0f87a9bb913add82f4e7de2ac5;hb=refs%2Fchanges%2F46%2F100646%2F27;hp=8941e829ebc3a6c6201b1716dacadc348cacfaa4;hpb=ec97a3b1ee893164f4c76092fa115af43e0f9d43;p=transportpce.git diff --git a/common/src/main/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl221.java b/common/src/main/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl221.java index 8941e829e..529af506c 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl221.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl221.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; @@ -31,18 +30,21 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.Po import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.GetConnectionPortTrailInputBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.GetConnectionPortTrailOutput; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.OduConnection.Direction; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.OrgOpenroadmDeviceData; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.OrgOpenroadmDeviceService; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.connection.DestinationBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.connection.SourceBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.get.connection.port.trail.output.Ports; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.OrgOpenroadmDevice; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.OduConnection; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.OduConnectionBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.OduConnectionKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.RoadmConnections; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.RoadmConnectionsBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.RoadmConnectionsKey; -import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev201211.otn.renderer.input.Nodes; +import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.otn.renderer.nodes.Nodes; 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; @@ -50,6 +52,8 @@ import org.slf4j.LoggerFactory; public class CrossConnectImpl221 { private static final Logger LOG = LoggerFactory.getLogger(CrossConnectImpl221.class); + private static final String DEV_TRANSACTION_NOT_FOUND = "Device transaction for device {} was not found!"; + private static final String UNABLE_DEV_TRANSACTION = "Unable to obtain device transaction for device {}!"; private final DeviceTransactionManager deviceTransactionManager; public CrossConnectImpl221(DeviceTransactionManager deviceTransactionManager) { @@ -64,7 +68,7 @@ public class CrossConnectImpl221 { } public Optional getOtnCrossConnect(String deviceId, String connectionNumber) { + .openroadm.device.OduConnection> getOtnCrossConnect(String deviceId, String connectionNumber) { //TODO Change it to Operational later for real device return deviceTransactionManager.getDataFromDevice(deviceId, LogicalDatastoreType.CONFIGURATION, generateOduConnectionIID(connectionNumber), Timeouts.DEVICE_READ_TIMEOUT, @@ -72,7 +76,7 @@ public class CrossConnectImpl221 { } public Optional postCrossConnect(String deviceId, String srcTp, String destTp, - SpectrumInformation spectrumInformation) { + SpectrumInformation spectrumInformation) { String connectionNumber = spectrumInformation.getIdentifierFromParams(srcTp, destTp); RoadmConnectionsBuilder rdmConnBldr = new RoadmConnectionsBuilder() .setConnectionName(connectionNumber) @@ -84,9 +88,10 @@ public class CrossConnectImpl221 { .setDstIf(spectrumInformation.getIdentifierFromParams(destTp,"nmc")) .build()); - InstanceIdentifier rdmConnectionIID = - InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(RoadmConnections.class, new RoadmConnectionsKey(rdmConnBldr.getConnectionName())); + InstanceIdentifier rdmConnectionIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(RoadmConnections.class, new RoadmConnectionsKey(rdmConnBldr.getConnectionName())) + .build(); Future> deviceTxFuture = deviceTransactionManager.getDeviceTransaction(deviceId); DeviceTransaction deviceTx; @@ -95,11 +100,11 @@ public class CrossConnectImpl221 { if (deviceTxOpt.isPresent()) { deviceTx = deviceTxOpt.get(); } else { - LOG.error("Device transaction for device {} was not found!", deviceId); + LOG.error(DEV_TRANSACTION_NOT_FOUND, deviceId); return Optional.empty(); } } catch (InterruptedException | ExecutionException e) { - LOG.error("Unable to obtain device transaction for device {}!", deviceId, e); + LOG.error(UNABLE_DEV_TRANSACTION, deviceId, e); return Optional.empty(); } @@ -124,7 +129,7 @@ public class CrossConnectImpl221 { List interfList = new ArrayList<>(); Optional xc = getCrossConnect(deviceId, connectionName); Optional otnXc = getOtnCrossConnect(deviceId, connectionName); + .openroadm.device.OduConnection> otnXc = getOtnCrossConnect(deviceId, connectionName); //Check if cross connect exists before delete if (xc.isPresent()) { interfList.add(xc.get().getSource().getSrcIf()); @@ -145,11 +150,11 @@ public class CrossConnectImpl221 { if (deviceTxOpt.isPresent()) { deviceTx = deviceTxOpt.get(); } else { - LOG.error("Device transaction for device {} was not found!", deviceId); + LOG.error(DEV_TRANSACTION_NOT_FOUND, deviceId); return null; } } catch (InterruptedException | ExecutionException e) { - LOG.error("Unable to obtain device transaction for device {}!", deviceId, e); + LOG.error(UNABLE_DEV_TRANSACTION, deviceId, e); return null; } @@ -173,7 +178,7 @@ public class CrossConnectImpl221 { public List getConnectionPortTrail(String nodeId, String srcTp, String destTp, - int lowerSpectralSlotNumber, int higherSpectralSlotNumber) + int lowerSpectralSlotNumber, int higherSpectralSlotNumber) throws OpenRoadmInterfaceException { String spectralSlotName = String.join(GridConstant.SPECTRAL_SLOT_SEPARATOR, String.valueOf(lowerSpectralSlotNumber), @@ -220,7 +225,7 @@ public class CrossConnectImpl221 { } - public boolean setPowerLevel(String deviceId, OpticalControlMode mode, BigDecimal powerValue, String ctName) { + public boolean setPowerLevel(String deviceId, OpticalControlMode mode, Decimal64 powerValue, String ctName) { Optional rdmConnOpt = getCrossConnect(deviceId, ctName); if (rdmConnOpt.isPresent()) { RoadmConnectionsBuilder rdmConnBldr = new RoadmConnectionsBuilder(rdmConnOpt.get()); @@ -247,11 +252,13 @@ public class CrossConnectImpl221 { } // post the cross connect on the device - InstanceIdentifier roadmConnIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(RoadmConnections.class, new RoadmConnectionsKey(ctName)); + InstanceIdentifier roadmConnIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(RoadmConnections.class, new RoadmConnectionsKey(ctName)) + .build(); deviceTx.merge(LogicalDatastoreType.CONFIGURATION, roadmConnIID, newRdmConn); FluentFuture commit = - deviceTx.commit(Timeouts.DEVICE_WRITE_TIMEOUT, Timeouts.DEVICE_WRITE_TIMEOUT_UNIT); + deviceTx.commit(Timeouts.DEVICE_WRITE_TIMEOUT, Timeouts.DEVICE_WRITE_TIMEOUT_UNIT); try { commit.get(); LOG.info("Roadm connection power level successfully set "); @@ -267,15 +274,17 @@ public class CrossConnectImpl221 { } 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 InstanceIdentifier generateOduConnectionIID(String connectionNumber) { - return InstanceIdentifier.create(OrgOpenroadmDevice.class).child(org.opendaylight.yang.gen.v1.http.org - .openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.OduConnection.class, - new OduConnectionKey(connectionNumber)); + private InstanceIdentifier generateOduConnectionIID(String connectionNumber) { + return InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(OduConnection.class, new OduConnectionKey(connectionNumber)) + .build(); } private String generateConnectionName(String srcTp, String destTp, String spectralSlotName) { @@ -284,23 +293,22 @@ public class CrossConnectImpl221 { public Optional postOtnCrossConnect(List createdOduInterfaces, Nodes node) { String deviceId = node.getNodeId(); - String srcTp = createdOduInterfaces.get(0); - String dstTp = createdOduInterfaces.get(1); + List sortedCreatedOduInterfaces = new ArrayList<>(createdOduInterfaces); + sortedCreatedOduInterfaces.sort((s1,s2) -> s1.compareTo(s2)); + String srcTp = sortedCreatedOduInterfaces.get(0); + String dstTp = sortedCreatedOduInterfaces.get(1); OduConnectionBuilder oduConnectionBuilder = new OduConnectionBuilder() - .setConnectionName(srcTp + "-x-" + dstTp) - .setDestination(new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.odu.connection - .DestinationBuilder().setDstIf(dstTp).build()) - .setSource(new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.odu.connection - .SourceBuilder().setSrcIf(srcTp).build()) - .setDirection(Direction.Bidirectional); + .setConnectionName(srcTp + "-x-" + dstTp) + .setDestination(new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.odu.connection + .DestinationBuilder().setDstIf(dstTp).build()) + .setSource(new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.odu.connection + .SourceBuilder().setSrcIf(srcTp).build()) + .setDirection(Direction.Bidirectional); - InstanceIdentifier oduConnectionIID = - InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device - .container.org.openroadm.device.OduConnection.class, - new OduConnectionKey(oduConnectionBuilder.getConnectionName()) - ); + InstanceIdentifier oduConnectionIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(OduConnection.class, new OduConnectionKey(oduConnectionBuilder.getConnectionName())) + .build(); Future> deviceTxFuture = deviceTransactionManager.getDeviceTransaction(deviceId); DeviceTransaction deviceTx; @@ -309,11 +317,11 @@ public class CrossConnectImpl221 { if (deviceTxOpt.isPresent()) { deviceTx = deviceTxOpt.get(); } else { - LOG.error("Device transaction for device {} was not found!", deviceId); + LOG.error(DEV_TRANSACTION_NOT_FOUND, deviceId); return Optional.empty(); } } catch (InterruptedException | ExecutionException e) { - LOG.error("Unable to obtain device transaction for device {}!", deviceId, e); + LOG.error(UNABLE_DEV_TRANSACTION, deviceId, e); return Optional.empty(); } @@ -330,4 +338,4 @@ public class CrossConnectImpl221 { } return Optional.empty(); } -} +} \ No newline at end of file