revision-date 2018-10-19;
}
+ revision 2021-09-30 {
+ description
+ "Replace leaf width in optical-renderer-input by mc-width and nmc-width";
+ }
revision 2021-06-18 {
description
"Replace olm-renderer-input by optical-rendrer-input.
leaf center-freq {
type org-openroadm-common-types:frequency-THz;
}
- leaf width {
+ leaf nmc-width {
+ description
+ " Width of network media channel nmc";
+ type org-openroadm-common-types:frequency-GHz;
+ }
+ leaf mc-width {
description
- " Width of nmc";
+ " Width of media channel (mc)";
type org-openroadm-common-types:frequency-GHz;
}
leaf min-freq {
import java.util.Optional;
import org.opendaylight.transportpce.common.fixedflex.SpectrumInformation;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.otn.renderer.nodes.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.otn.renderer.nodes.Nodes;
public interface CrossConnect {
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.rev210618.otn.renderer.nodes.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.otn.renderer.nodes.Nodes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.rev210618.otn.renderer.nodes.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.RpcResult;
import org.slf4j.Logger;
}
public Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org
- .openroadm.device.OduConnection> 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,
}
public Optional<String> postCrossConnect(String deviceId, String srcTp, String destTp,
- SpectrumInformation spectrumInformation) {
+ SpectrumInformation spectrumInformation) {
String connectionNumber = spectrumInformation.getIdentifierFromParams(srcTp, destTp);
RoadmConnectionsBuilder rdmConnBldr = new RoadmConnectionsBuilder()
.setConnectionName(connectionNumber)
InstanceIdentifier<RoadmConnections> rdmConnectionIID =
InstanceIdentifier.create(OrgOpenroadmDevice.class)
- .child(RoadmConnections.class, new RoadmConnectionsKey(rdmConnBldr.getConnectionName()));
+ .child(RoadmConnections.class, new RoadmConnectionsKey(rdmConnBldr.getConnectionName()));
Future<Optional<DeviceTransaction>> deviceTxFuture = deviceTransactionManager.getDeviceTransaction(deviceId);
DeviceTransaction deviceTx;
List<String> interfList = new ArrayList<>();
Optional<RoadmConnections> xc = getCrossConnect(deviceId, connectionName);
Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org
- .openroadm.device.OduConnection> 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());
public List<Ports> 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),
.child(RoadmConnections.class, new RoadmConnectionsKey(ctName));
deviceTx.merge(LogicalDatastoreType.CONFIGURATION, roadmConnIID, newRdmConn);
FluentFuture<? extends @NonNull CommitInfo> 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 ");
}
private InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device
- .container.org.openroadm.device.OduConnection> generateOduConnectionIID(String connectionNumber) {
+ .container.org.openroadm.device.OduConnection> 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));
+ .openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.OduConnection.class,
+ new OduConnectionKey(connectionNumber));
}
private String generateConnectionName(String srcTp, String destTp, String spectralSlotName) {
String srcTp = createdOduInterfaces.get(0);
String dstTp = createdOduInterfaces.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<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device
.container.org.openroadm.device.OduConnection> 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.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())
+ );
Future<Optional<DeviceTransaction>> deviceTxFuture = deviceTransactionManager.getDeviceTransaction(deviceId);
DeviceTransaction deviceTx;
}
return Optional.empty();
}
-}
+}
\ No newline at end of file
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.OrgOpenroadmDevice;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.org.openroadm.device.OduConnectionBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.org.openroadm.device.OduConnectionKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.otn.renderer.nodes.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.slf4j.Logger;
import org.slf4j.LoggerFactory;
.getCentralFrequency(spectrumInformation.getMinFrequency(),
spectrumInformation.getMaxFrequency()).getValue());
}
- if (input.getWidth() != null) {
- spectrumInformation.setWidth(input.getWidth().getValue());
+ if (input.getNmcWidth() != null) {
+ spectrumInformation.setWidth(input.getNmcWidth().getValue());
}
if (input.getModulationFormat() != null) {
spectrumInformation.setModulationFormat(input.getModulationFormat());
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.RoadmConnections;
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.rev210618.otn.renderer.nodes.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.otn.renderer.nodes.Nodes;
import org.opendaylight.yangtools.util.concurrent.FluentFutures;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.Uint32;
.FrequencyTHz(BigDecimal.valueOf(196.125)))
.setMinFreq(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019
.FrequencyTHz(BigDecimal.valueOf(196.075)))
- .setWidth(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019
+ .setNmcWidth(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019
.FrequencyGHz(GridConstant.WIDTH_40))
.build();
SpectrumInformation spectrumInformation = GridUtils.initSpectrumInformationFromServicePathInput(input);
.FrequencyTHz(BigDecimal.valueOf(196.125)))
.setMinFreq(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019
.FrequencyTHz(BigDecimal.valueOf(196.075)))
- .setWidth(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019
+ .setNmcWidth(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019
.FrequencyGHz(GridConstant.WIDTH_40))
.build();
SpectrumInformation spectrumInformation = GridUtils.initSpectrumInformationFromServicePathInput(input);
.setWaveNumber(Uint32.valueOf(1))
.setHigherSpectralSlotNumber(Uint32.valueOf(768))
.setLowerSpectralSlotNumber(Uint32.valueOf(761))
- .setWidth(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019
+ .setNmcWidth(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019
.FrequencyGHz(GridConstant.WIDTH_40))
.build();
SpectrumInformation spectrumInformation = GridUtils.initSpectrumInformationFromServicePathInput(input);
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.Link1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.TerminationPoint1;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.link.tp.LinkTp;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.link.tp.LinkTpBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.link.tp.LinkTp;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.link.tp.LinkTpBuilder;
import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev210511.OtnLinkType;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks;
package org.opendaylight.transportpce.olm.power;
import java.math.BigDecimal;
+import java.math.MathContext;
+import java.math.RoundingMode;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
BigDecimal powerValue = spanLossTx.subtract(BigDecimal.valueOf(9)).min(BigDecimal.valueOf(2));
// we work at constant power spectral density (50 GHz channel width @-20dBm=37.5GHz)
// 87.5 GHz channel width @-20dBm=75GHz
- if (input.getWidth() != null) {
- BigDecimal gridSize = input.getWidth().getValue();
- LOG.debug("Input Gridsize is {}",gridSize);
- if (gridSize.equals(GridConstant.WIDTH_80)) {
+ if (input.getMcWidth() != null) {
+ LOG.debug("Input Gridsize is {}",input.getMcWidth().getValue());
+ if (input.getMcWidth().getValue().equals(GridConstant.WIDTH_80)) {
powerValue = powerValue.add(BigDecimal.valueOf(3));
+ } else if (input.getMcWidth().getValue().equals(GridConstant.SLOT_WIDTH_87_5)) {
+ BigDecimal logVal = GridConstant.SLOT_WIDTH_87_5.divide(new BigDecimal(50));
+ double pdsVal = 10 * Math.log10(logVal.doubleValue());
+ powerValue = powerValue.add(new BigDecimal(pdsVal, new MathContext(3, RoundingMode.HALF_EVEN)));
}
- // TODO no default or warning for unsupported grid sizes ?
}
- // FIXME compliancy with OpenROADM MSA and approximations used
+ // FIXME compliancy with OpenROADM MSA and approximations used -- should be addressed with powermask update
// cf JIRA ticket https://jira.opendaylight.org/browse/TRNSPRTPCE-494
LOG.info("Power Value is {}", powerValue);
return powerValue;
import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.transport.interfaces.rev161014.ots.container.OtsBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmGranularity;
import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev161014.ResourceTypeEnum;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.PmNamesEnum;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.olm.get.pm.input.ResourceIdentifierBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.PmNamesEnum;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.olm.get.pm.input.ResourceIdentifierBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource.resource.resource.Shelf;
import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource.resource.resource.Srg;
import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev161014.ResourceTypeEnum;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.olm.get.pm.input.ResourceIdentifier;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.olm.get.pm.input.ResourceIdentifier;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
if (currentPmList.isPresent()) {
String pmExtension = null;
- org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.Location location = null;
- org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.Direction direction = null;
+ org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.Location location = null;
+ org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.Direction direction = null;
if (input.getPmExtension() != null) {
pmExtension = input.getPmExtension();
}
List<org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.get.pm.output.Measurements>
extractWantedMeasurements(CurrentPmlist currentPmList, ResourceTypeEnum resourceTypeEnum,
ResourceIdentifier wantedResourceIdentifier,PmGranularity pmGranularity, PmNamesEnum pmNamesEnum,
- String extension, org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.Location
- location, org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.Direction direction) {
+ String extension, org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.Location
+ location, org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.Direction direction) {
List<org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.get.pm.output.Measurements>
measurements = new ArrayList<>();
for (CurrentPm pm : currentPmList.nonnullCurrentPm().values()) {
private static
List<org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.get.pm.output.Measurements>
extractMeasurements(List<Measurements> measurementsFromDevice, PmNamesEnum pmNamesEnum, String extension,
- org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.Location location,
- org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.Direction direction) {
+ org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.Location location,
+ org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.Direction direction) {
List<org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.get.pm.output.Measurements>
extractedMeasurements = new ArrayList<>();
List<Measurements> pmMeasurements = measurementsFromDevice;
import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev181019.current.pm.list.CurrentPmEntryKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev181019.current.pm.val.group.Measurement;
import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev161014.ResourceTypeEnum;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.Direction;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.Location;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.PmNamesEnum;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.olm.get.pm.input.ResourceIdentifier;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.Direction;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.Location;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.PmNamesEnum;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.olm.get.pm.input.ResourceIdentifier;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.Uint16;
import org.slf4j.Logger;
}
private static List<Measurements> extractWantedMeasurements(List<CurrentPm> currentPmList,
- org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmGranularity wantedGranularity) {
+ org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmGranularity wantedGranularity) {
List<Measurements> olmMeasurements = new ArrayList<>();
for (CurrentPm pm : currentPmList) {
for (Measurement measurements: pm.nonnullMeasurement().values()) {
if (measurements.getGranularity().getIntValue()
== org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev171215.PmGranularity.forValue(
- wantedGranularity.getIntValue()).getIntValue()) {
+ wantedGranularity.getIntValue()).getIntValue()) {
MeasurementsBuilder pmMeasureBuilder = new MeasurementsBuilder();
pmMeasureBuilder.setPmparameterName(pm.getType().name());
pmMeasureBuilder.setPmparameterValue(measurements.getPmParameterValue().stringValue());
import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev200529.current.pm.list.CurrentPmEntryKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev200529.current.pm.val.group.Measurement;
import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev161014.ResourceTypeEnum;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.Direction;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.Location;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.PmNamesEnum;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.olm.get.pm.input.ResourceIdentifier;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.Direction;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.Location;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.PmNamesEnum;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.olm.get.pm.input.ResourceIdentifier;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.Uint16;
import org.slf4j.Logger;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.Link1Builder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmGranularity;
import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev161014.ResourceTypeEnum;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.olm.get.pm.input.ResourceIdentifierBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.olm.get.pm.input.ResourceIdentifierBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.NodesBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.LinkId;
import org.opendaylight.yangtools.yang.common.Uint32;
}
}
-}
+}
\ No newline at end of file
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.Resource;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.Link;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.TerminationPoint;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.NodesKey;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
import org.opendaylight.yangtools.yang.common.Uint32;
.setServiceName(serviceName)
.setOperation(operation)
.setNodes(nodeLists.getRendererNodeList())
- .setWidth(new FrequencyGHz(GridConstant.WIDTH_40));
+ .setNmcWidth(new FrequencyGHz(GridConstant.WIDTH_40))
+ .setMcWidth(new FrequencyGHz(pathDescription.getAToZDirection().getAToZMaxFrequency().getValue()
+ .subtract(pathDescription.getAToZDirection().getAToZMinFrequency().getValue())));
if (atoZDirection.getAToZWavelengthNumber() != null) {
servicePathInputBuilder
.setWaveNumber(atoZDirection.getAToZWavelengthNumber());
&& GridConstant.FREQUENCY_WIDTH_TABLE
.contains(atoZDirection.getRate(), optionalModulationFormat.get())) {
servicePathInputBuilder
- .setWidth(FrequencyGHz
+ .setNmcWidth(FrequencyGHz
.getDefaultInstance(GridConstant.FREQUENCY_WIDTH_TABLE.get(atoZDirection.getRate(),
optionalModulationFormat.get())));
}
.setOperation(operation)
.setServiceName(serviceName)
.setNodes(nodeLists.getRendererNodeList())
- .setWidth(new FrequencyGHz(GridConstant.WIDTH_40));
+ .setNmcWidth(new FrequencyGHz(GridConstant.WIDTH_40))
+ .setMcWidth(new FrequencyGHz(pathDescription.getAToZDirection().getAToZMaxFrequency().getValue()
+ .subtract(pathDescription.getAToZDirection().getAToZMinFrequency().getValue())));
if (ztoADirection.getZToAWavelengthNumber() != null) {
servicePathInputBuilder
.setWaveNumber(ztoADirection.getZToAWavelengthNumber());
if (optionalModulationFormat.isPresent()
&& GridConstant.FREQUENCY_WIDTH_TABLE
.contains(ztoADirection.getRate(), optionalModulationFormat.get())) {
- servicePathInputBuilder.setWidth(FrequencyGHz
+ servicePathInputBuilder.setNmcWidth(FrequencyGHz
.getDefaultInstance(GridConstant.FREQUENCY_WIDTH_TABLE.get(ztoADirection.getRate(),
optionalModulationFormat.get())));
}
public static OtnServicePathInput rendererCreateOtnServiceInput(String serviceName, Action operation,
String serviceFormat, Uint32 serviceRate, PathDescription pathDescription, boolean asideToZside) {
// If atoZ is set true use A-to-Z direction otherwise use Z-to-A
- List<org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.otn.renderer.nodes.Nodes> nodes =
+ List<org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.otn.renderer.nodes.Nodes> nodes =
new ArrayList<>();
NodeLists nodeLists =
(asideToZside)
: getNodesListZtoA(pathDescription.getZToADirection().nonnullZToA().values().iterator());
LOG.info("These are node-lists {}, {}", nodeLists.getRendererNodeList(), nodeLists.getOlmNodeList());
for (Nodes node: nodeLists.getRendererNodeList()) {
- org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.otn.renderer.nodes.NodesBuilder nb
- = new org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.otn.renderer.nodes
+ org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.otn.renderer.nodes.NodesBuilder nb
+ = new org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.otn.renderer.nodes
.NodesBuilder().setNodeId(node.getNodeId()).setNetworkTp(node.getDestTp());
if (node.getSrcTp() != null && node.getSrcTp().contains("NETWORK")) {
nb.setNetwork2Tp(node.getSrcTp());
package org.opendaylight.transportpce.renderer;
import java.util.List;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.Nodes;
public class NodeLists {
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.Services;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.ServicesBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.ServicesKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.link.tp.LinkTp;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.link.tp.LinkTpBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.node.interfaces.NodeInterface;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.node.interfaces.NodeInterfaceBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.node.interfaces.NodeInterfaceKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.link.tp.LinkTp;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.link.tp.LinkTpBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.node.interfaces.NodeInterface;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.node.interfaces.NodeInterfaceBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.node.interfaces.NodeInterfaceKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.Nodes;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Collections;
import java.util.List;
import org.opendaylight.transportpce.common.OperationResult;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.link.tp.LinkTp;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.node.interfaces.NodeInterface;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.link.tp.LinkTp;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.node.interfaces.NodeInterface;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.Nodes;
public final class DeviceRenderingResult extends OperationResult {
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.AEndApiInfo;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.az.api.info.ZEndApiInfo;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.OpucnTribSlotDef;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.link.tp.LinkTp;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.link.tp.LinkTpBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.node.interfaces.NodeInterface;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.node.interfaces.NodeInterfaceBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.node.interfaces.NodeInterfaceKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.otn.renderer.nodes.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.link.tp.LinkTp;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.link.tp.LinkTpBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.node.interfaces.NodeInterface;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.node.interfaces.NodeInterfaceBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.node.interfaces.NodeInterfaceKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.otn.renderer.nodes.Nodes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Collections;
import java.util.List;
import org.opendaylight.transportpce.common.OperationResult;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.link.tp.LinkTp;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.node.interfaces.NodeInterface;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.link.tp.LinkTp;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.node.interfaces.NodeInterface;
public final class OtnDeviceRenderingResult extends OperationResult {
private final List<NodeInterface> renderedNodeInterfaces;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.ServicePathList;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePaths;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePathsKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.link.tp.LinkTp;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.olm.get.pm.input.ResourceIdentifierBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.link.tp.LinkTp;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.olm.get.pm.input.ResourceIdentifierBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.Nodes;
import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev210511.OtnLinkType;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.Notification;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackInputBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackOutput;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.renderer.rollback.output.FailedToRollback;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.node.interfaces.NodeInterface;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.node.interfaces.NodeInterfaceKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.node.interfaces.NodeInterface;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.node.interfaces.NodeInterfaceKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.opendaylight.transportpce.renderer.provisiondevice.DeviceRenderingResult;
import org.opendaylight.transportpce.renderer.provisiondevice.servicepath.ServicePathDirection;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathOutput;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.Nodes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.util.concurrent.ListenableFuture;
import java.util.Collections;
import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeoutException;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.mdsal.binding.api.MountPoint;
import org.opendaylight.mdsal.binding.api.MountPointService;
import org.opendaylight.mdsal.binding.api.NotificationPublishService;
+import org.opendaylight.mdsal.binding.api.ReadTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.ResponseCodes;
import org.opendaylight.transportpce.common.StringConstants;
private final OtnDeviceRendererService otnDeviceRendererService = Mockito.mock(OtnDeviceRendererService.class);
private final PortMapping portMapping = Mockito.mock(PortMapping.class);
private final CrossConnect crossConnect = Mockito.mock(CrossConnect.class);
+ private final ReadTransaction readTransaction = Mockito.mock(ReadTransaction.class);
private TransportpceOlmService olmService;
private void setMountPoint(MountPoint mountPoint) {
@Test
- public void serviceDeleteOperationPp() throws ExecutionException, InterruptedException {
+ public void serviceDeleteOperationPp() throws ExecutionException, InterruptedException, TimeoutException {
writePathDescription();
ServiceDeleteInputBuilder serviceDeleteInputBuilder = new ServiceDeleteInputBuilder();
serviceDeleteInputBuilder.setServiceName("service 1");
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestOutput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmGranularity;
import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev161014.ResourceTypeEnum;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.olm.get.pm.input.ResourceIdentifierBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.olm.get.pm.input.ResourceIdentifierBuilder;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
public class RendererServiceOperationsImplTest extends AbstractTest {
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.service.implementation.request.input.PathDescriptionBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.service.implementation.request.input.ServiceAEndBuilder;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.service.implementation.request.input.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyTHz;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ConnectionType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.port.PortBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder;
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.handler.header.ServiceHandlerHeaderBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.optical.renderer.nodes.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.NodesKey;
import org.opendaylight.yangtools.yang.common.Uint32;
atoZMap.put(atoZ.key(),atoZ);
}
}
+ FrequencyTHz value;
AToZDirection atozDirection = new AToZDirectionBuilder()
.setRate(Uint32.valueOf(20))
.setAToZWavelengthNumber(Uint32.valueOf(20))
+ .setAToZMinFrequency(FrequencyTHz.getDefaultInstance("196.125"))
+ .setAToZMaxFrequency(FrequencyTHz.getDefaultInstance("196.075"))
.setAToZ(atoZMap)
.build();
ZToADirection ztoaDirection = new ZToADirectionBuilder()
.setRate(Uint32.valueOf(20))
.setZToAWavelengthNumber(Uint32.valueOf(20))
+ .setZToAMinFrequency(FrequencyTHz.getDefaultInstance("196.125"))
+ .setZToAMaxFrequency(FrequencyTHz.getDefaultInstance("196.075"))
.setZToA(ztoAMap)
.build();
PathDescriptionBuilder builder = new PathDescriptionBuilder()
import java.util.HashMap;
import java.util.Map;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyTHz;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.port.PortBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
AToZDirection atozDirection = new AToZDirectionBuilder()
.setRate(Uint32.valueOf(20))
.setAToZWavelengthNumber(Uint32.valueOf(20))
+ .setAToZMinFrequency(FrequencyTHz.getDefaultInstance("196.125"))
+ .setAToZMaxFrequency(FrequencyTHz.getDefaultInstance("196.075"))
.setAToZ(atoZMap)
.setModulationFormat("OC")
.build();
ZToADirection ztoaDirection = new ZToADirectionBuilder()
.setRate(Uint32.valueOf(20))
.setZToAWavelengthNumber(Uint32.valueOf(20))
+ .setZToAMinFrequency(FrequencyTHz.getDefaultInstance("196.125"))
+ .setZToAMaxFrequency(FrequencyTHz.getDefaultInstance("196.075"))
.setZToA(ztoAMap)
.setModulationFormat("OC")
.build();
}
],
"center-freq": 196.1,
- "width": 40,
+ "nmc-width": 40,
"min-freq": 196.075,
"max-freq": 196.125,
"lower-spectral-slot-number": 761,
}
],
"center-freq": 196.1,
- "width": 40,
+ "nmc-width": 40,
"min-freq": 196.075,
"max-freq": 196.125,
"lower-spectral-slot-number": 761,
}
],
"center-freq": 196.1,
- "width": 40,
+ "nmc-width": 40,
"min-freq": 196.075,
"max-freq": 196.125,
"lower-spectral-slot-number": 761,
"transportpce-device-renderer:service-name": "testNMC-MC",
"transportpce-device-renderer:wave-number": "0",
"transportpce-device-renderer:center-freq": "196.05",
- "transportpce-device-renderer:width": "80",
+ "transportpce-device-renderer:nmc-width": "80",
"transportpce-device-renderer:nodes": [
{
"transportpce-device-renderer:node-id": "ROADM-D1",
"renderer:operation": operation,
"renderer:nodes": nodes,
"renderer:center-freq": centerfreq,
- "renderer:width": slotwidth,
+ "renderer:nmc-width": slotwidth,
"renderer:min-freq": minfreq,
"renderer:max-freq": maxfreq,
"renderer:lower-spectral-slot-number": lowerslotnumber,