import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
-
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.common.Timeouts;
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.mapping.PortMapping;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210315.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.PowerDBm;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.RoadmConnectionsKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev161014.AdminStates;
import org.opendaylight.yang.gen.v1.http.org.openroadm.ethernet.interfaces.rev161014.EthAttributes;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.ethernet.interfaces.rev161014.Interface1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.ethernet.interfaces.rev161014.Interface1Builder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.ethernet.interfaces.rev161014.ethernet.container.EthernetBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.EthernetCsmacd;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev161014.OtuAttributes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev161014.otu.container.OtuBuilder;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Uint32;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
.setAutoNegotiation(EthAttributes.AutoNegotiation.Enabled)
.setDuplex(EthAttributes.Duplex.Full)
.setFec(EthAttributes.Fec.Off)
- .setSpeed(100000L)
- .setMtu(9000L);
+ .setSpeed(Uint32.valueOf(100000))
+ .setMtu(Uint32.valueOf(9000));
InterfaceBuilder ethInterfaceBldr = createGenericInterfaceBuilder(portMap, EthernetCsmacd.class,
logicalConnPoint + "-ETHERNET");
// Create Interface1 type object required for adding as augmentation
Interface1Builder ethIf1Builder = new Interface1Builder();
- ethInterfaceBldr.addAugmentation(Interface1.class, ethIf1Builder.setEthernet(ethIfBuilder.build()).build());
+ ethInterfaceBldr.addAugmentation(ethIf1Builder.setEthernet(ethIfBuilder.build()).build());
// Post interface on the device
this.openRoadmInterfaces.postInterface(nodeId, ethInterfaceBldr);
private InterfaceBuilder createGenericInterfaceBuilder(Mapping portMap, Class<? extends InterfaceType> type,
String key) {
- InterfaceBuilder interfaceBuilder = new InterfaceBuilder()
+ return new InterfaceBuilder()
.setDescription(" TBD ")
.setCircuitId(" TBD ")
.setSupportingCircuitPackName(portMap.getSupportingCircuitPackName())
.setType(type)
.setName(key)
.withKey(new InterfaceKey(key));
- return interfaceBuilder;
}
/**
* This methods creates an OTU interface on the given termination point.
// TODO look at imports of different versions of class
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev161014.Interface1Builder otuIf1Builder =
new org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev161014.Interface1Builder();
- otuInterfaceBldr.addAugmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev161014.Interface1.class,
- otuIf1Builder.setOtu(otuIfBuilder.build()).build());
+ otuInterfaceBldr.addAugmentation(otuIf1Builder.setOtu(otuIfBuilder.build()).build());
// Post interface on the device
this.openRoadmInterfaces.postInterface(nodeId, otuInterfaceBldr);
// TODO look at imports of different versions of class
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev161014.Interface1Builder oduIf1Builder =
new org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev161014.Interface1Builder();
- oduInterfaceBldr.addAugmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev161014.Interface1.class,
- oduIf1Builder.setOdu(oduIfBuilder.build()).build());
+ oduInterfaceBldr.addAugmentation(oduIf1Builder.setOdu(oduIfBuilder.build()).build());
// Post interface on the device
this.openRoadmInterfaces.postInterface(nodeId, oduInterfaceBldr);
return oduInterfaceBldr.getName();
}
/**
- * This methods creates an OCH interface on the given termination point on
+ * This methods creates a list of OCH interface on the given termination point on
* Roadm.
*
* @param nodeId node ID
* @param logicalConnPoint logical connection point
- * @param waveNumber wavelength number of the OCH interface.
- *
- * @return Name of the interface if successful, otherwise return null.
+ * @param spectrumInformation SpectrumInformation
+ * @return List containing name of the interface if successful, otherwise return empty list.
*
* @throws OpenRoadmInterfaceException OpenRoadm interface exception
*/
- public List<String> createOpenRoadmOchInterface(String nodeId, String logicalConnPoint, Long waveNumber)
+ public List<String> createOpenRoadmOchInterfaces(String nodeId, String logicalConnPoint,
+ SpectrumInformation spectrumInformation)
throws OpenRoadmInterfaceException {
-
Mapping portMap = portMapping.getMapping(nodeId, logicalConnPoint);
if (portMap == null) {
throw new OpenRoadmInterfaceException(String.format(
}
// Create generic interface
InterfaceBuilder ochInterfaceBldr = createGenericInterfaceBuilder(portMap, OpticalChannel.class,
- createOpenRoadmOchInterfaceName(logicalConnPoint, waveNumber));
+ spectrumInformation.getIdentifierFromParams(logicalConnPoint));
// OCH interface specific data
- OchBuilder ocIfBuilder = new OchBuilder().setWavelengthNumber(waveNumber);
+ OchBuilder ocIfBuilder = new OchBuilder().setWavelengthNumber(spectrumInformation.getWaveLength());
// Add supporting OMS interface
if (portMap.getSupportingOms() != null) {
org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014.Interface1Builder
ochIf1Builder = new org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces
.rev161014.Interface1Builder();
- ochInterfaceBldr.addAugmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014.Interface1.class,
- ochIf1Builder.setOch(ocIfBuilder.build()).build());
+ ochInterfaceBldr.addAugmentation(ochIf1Builder.setOch(ocIfBuilder.build()).build());
List<String> interfacesCreated = new ArrayList<>();
// Post interface on the device
return interfacesCreated;
}
- public String createOpenRoadmOchInterface(String nodeId, String logicalConnPoint, Long waveNumber,
- OchAttributes.ModulationFormat format) throws OpenRoadmInterfaceException {
+ public String createOpenRoadmOchInterface(String nodeId, String logicalConnPoint,
+ SpectrumInformation spectrumInformation) throws OpenRoadmInterfaceException {
Mapping portMap = this.portMapping.getMapping(nodeId, logicalConnPoint);
if (portMap == null) {
throw new OpenRoadmInterfaceException(String.format(
"Unable to get mapping from PortMapping for node %s and logical connection port %s",
nodeId, logicalConnPoint));
}
-
+ OchAttributes.ModulationFormat modulationFormat = OchAttributes.ModulationFormat.DpQpsk;
+ Optional<OchAttributes.ModulationFormat> optionalModulationFormat = OchAttributes.ModulationFormat
+ .forName(spectrumInformation.getModulationFormat());
+ if (optionalModulationFormat.isPresent()) {
+ modulationFormat = optionalModulationFormat.get();
+ }
// OCH interface specific data
OchBuilder ocIfBuilder = new OchBuilder()
- .setWavelengthNumber(waveNumber)
- .setModulationFormat(format)
+ .setWavelengthNumber(spectrumInformation.getWaveLength())
+ .setModulationFormat(modulationFormat)
.setRate(R100G.class)
.setTransmitPower(new PowerDBm(new BigDecimal("-5")));
.interfaces.rev161014.Interface1Builder();
// Create generic interface
InterfaceBuilder ochInterfaceBldr = createGenericInterfaceBuilder(portMap, OpticalChannel.class,
- createOpenRoadmOchInterfaceName(logicalConnPoint, waveNumber));
- ochInterfaceBldr.addAugmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014.Interface1.class,
- ochIf1Builder.setOch(ocIfBuilder.build()).build());
+ spectrumInformation.getIdentifierFromParams(logicalConnPoint));
+ ochInterfaceBldr.addAugmentation(ochIf1Builder.setOch(ocIfBuilder.build()).build());
// Post interface on the device
this.openRoadmInterfaces.postInterface(nodeId, ochInterfaceBldr);
return ochInterfaceBldr.getName();
}
- public String createOpenRoadmOchInterfaceName(String logicalConnectionPoint, Long waveNumber) {
- return logicalConnectionPoint + "-" + waveNumber;
+ public String createOpenRoadmOchInterfaceName(String logicalConnectionPoint, String spectralSlotName) {
+ return String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,logicalConnectionPoint, spectralSlotName);
}
public String createOpenRoadmOmsInterface(String nodeId, Mapping mapping) throws OpenRoadmInterfaceException {
org.opendaylight.yang.gen.v1.http.org.openroadm.optical.transport.interfaces.rev161014
.Interface1Builder otsIf1Builder = new org.opendaylight.yang.gen.v1.http.org.openroadm
.optical.transport.interfaces.rev161014.Interface1Builder();
- otsInterfaceBldr.addAugmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.optical.transport.interfaces.rev161014
- .Interface1.class,
- otsIf1Builder.setOts(otsIfBuilder.build()).build());
+ otsInterfaceBldr.addAugmentation(otsIf1Builder.setOts(otsIfBuilder.build()).build());
this.openRoadmInterfaces.postInterface(nodeId, otsInterfaceBldr);
this.portMapping.updateMapping(nodeId, mapping);
return otsInterfaceBldr.build().getName();