import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengthsBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev181130.xpdr.port.connection.attributes.Wavelength;
import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev181130.xpdr.port.connection.attributes.WavelengthBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.PathDescription;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.atoz.direction.AToZ;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.ztoa.direction.ZToA;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.pce.resource.resource.resource.TerminationPoint;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.ztoa.direction.ZToA;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.pce.resource.resource.resource.TerminationPoint;
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.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder;
+import org.opendaylight.yangtools.yang.common.Uint32;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public void useWavelengths(PathDescription pathDescription) {
List<NodeIdPair> atozTpIds = getAToZTpList(pathDescription);
- List<NodeIdPair> ztoaTpIds = getZToATpList(pathDescription);
-
+ atozTpIds.removeIf(Objects::isNull);
deleteAvailableWL(atozTpIds.stream().map(NodeIdPair::getNodeID).distinct().collect(Collectors.toList()),
- pathDescription.getAToZDirection().getAToZWavelengthNumber());
+ pathDescription.getAToZDirection().getAToZWavelengthNumber().toJava());
+ List<NodeIdPair> ztoaTpIds = getZToATpList(pathDescription);
+ ztoaTpIds.removeIf(Objects::isNull);
deleteAvailableWL(ztoaTpIds.stream().map(NodeIdPair::getNodeID).distinct().collect(Collectors.toList()),
- pathDescription.getZToADirection().getZToAWavelengthNumber());
-
- addUsedWL(pathDescription.getAToZDirection().getAToZWavelengthNumber(), atozTpIds);
- addUsedWL(pathDescription.getZToADirection().getZToAWavelengthNumber(), ztoaTpIds);
+ pathDescription.getZToADirection().getZToAWavelengthNumber().toJava());
+ addUsedWL(pathDescription.getAToZDirection().getAToZWavelengthNumber().toJava(), atozTpIds);
+ addUsedWL(pathDescription.getZToADirection().getZToAWavelengthNumber().toJava(), ztoaTpIds);
}
@Override
public void freeWavelengths(PathDescription pathDescription) {
List<NodeIdPair> atozTpIds = getAToZTpList(pathDescription);
List<NodeIdPair> ztoaTpIds = getZToATpList(pathDescription);
-
- deleteUsedWL(pathDescription.getAToZDirection().getAToZWavelengthNumber(), atozTpIds);
- deleteUsedWL(pathDescription.getZToADirection().getZToAWavelengthNumber(), ztoaTpIds);
-
+ atozTpIds.removeIf(Objects::isNull);
+ ztoaTpIds.removeIf(Objects::isNull);
+ deleteUsedWL(pathDescription.getAToZDirection().getAToZWavelengthNumber().toJava(), atozTpIds);
+ deleteUsedWL(pathDescription.getZToADirection().getZToAWavelengthNumber().toJava(), ztoaTpIds);
addAvailableWL(atozTpIds.stream().map(NodeIdPair::getNodeID).distinct().collect(Collectors.toList()),
- pathDescription.getAToZDirection().getAToZWavelengthNumber());
+ pathDescription.getAToZDirection().getAToZWavelengthNumber().toJava());
addAvailableWL(ztoaTpIds.stream().map(NodeIdPair::getNodeID).distinct().collect(Collectors.toList()),
- pathDescription.getZToADirection().getZToAWavelengthNumber());
+ pathDescription.getZToADirection().getZToAWavelengthNumber().toJava());
}
private List<NodeIdPair> getAToZTpList(PathDescription pathDescription) {
return aToZ.getResource().getResource() instanceof TerminationPoint;
}).map(aToZ -> {
TerminationPoint tp = (TerminationPoint) aToZ.getResource().getResource();
- if ((tp == null) || (tp.getTpNodeId() == null) || (tp.getTpId() == null)) {
+ if ((tp == null) || (tp.getTpNodeId() == null) || (tp.getTpId() == null)
+ || tp.getTpId().isEmpty()) {
LOG.warn("Termination point in AToZ node {} contains nulls! Skipping this node!", aToZ.getId());
return null;
}
return zToA.getResource().getResource() instanceof TerminationPoint;
}).map(zToA -> {
TerminationPoint tp = (TerminationPoint) zToA.getResource().getResource();
- if ((tp == null) || (tp.getTpNodeId() == null) || (tp.getTpId() == null)) {
+ if ((tp == null) || (tp.getTpNodeId() == null) || (tp.getTpId() == null)
+ || tp.getTpId().isEmpty()) {
LOG.warn("Termination point in ZToA node {} contains nulls! Skipping this node!", zToA.getId());
return null;
}
}
Node1Builder node1Builder = new Node1Builder(node1);
-
switch (node2.getNodeType()) {
case DEGREE:
DegreeAttributes degreeAttributes = node1.getDegreeAttributes();
degreeAttributesBuilder = new DegreeAttributesBuilder(degreeAttributes);
}
List<org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev181130.degree.node.attributes
- .AvailableWavelengths> availableDegreeWLs =
- degreeAttributesBuilder.getAvailableWavelengths();
- if (availableDegreeWLs == null) {
- availableDegreeWLs = new ArrayList<>();
- degreeAttributesBuilder.setAvailableWavelengths(availableDegreeWLs);
- }
+ .AvailableWavelengths> availableDegreeWLs = new ArrayList<>(degreeAttributesBuilder
+ .getAvailableWavelengths());
availableDegreeWLs.add(new org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev181130.degree
- .node.attributes.AvailableWavelengthsBuilder().setIndex(wavelengthNumber).build());
+ .node.attributes.AvailableWavelengthsBuilder().setIndex(Uint32.valueOf(wavelengthNumber))
+ .build());
+ degreeAttributesBuilder.setAvailableWavelengths(availableDegreeWLs);
node1Builder.setDegreeAttributes(degreeAttributesBuilder.build());
break;
case SRG:
srgAttributesBuilder = new SrgAttributesBuilder(srgAttributes);
}
List<org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes
- .AvailableWavelengths> availableSrgWLs = srgAttributesBuilder.getAvailableWavelengths();
- if (availableSrgWLs == null) {
- availableSrgWLs = new ArrayList<>();
- srgAttributesBuilder.setAvailableWavelengths(availableSrgWLs);
- }
- availableSrgWLs.add(new AvailableWavelengthsBuilder().setIndex(wavelengthNumber).build());
+ .AvailableWavelengths> availableSrgWLs = new ArrayList<>(srgAttributesBuilder
+ .getAvailableWavelengths());
+ availableSrgWLs.add(new AvailableWavelengthsBuilder().setIndex(Uint32.valueOf(wavelengthNumber))
+ .build());
+ srgAttributesBuilder.setAvailableWavelengths(availableSrgWLs);
node1Builder.setSrgAttributes(srgAttributesBuilder.build());
break;
availableWlIID = nodeIIDBuilder.child(DegreeAttributes.class)
.child(org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev181130.degree.node
.attributes.AvailableWavelengths.class,
- new AvailableWavelengthsKey(wavelengthNumber))
+ new AvailableWavelengthsKey(Uint32.valueOf(wavelengthNumber)))
.build();
break;
case SRG:
.child(org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes
.AvailableWavelengths.class,
new org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node
- .attributes.AvailableWavelengthsKey(wavelengthNumber))
+ .attributes.AvailableWavelengthsKey(Uint32.valueOf(wavelengthNumber)))
.build();
break;
case DEGREETXTTP:
case DEGREETXRXTTP:
usedWlIID = usedWlIIDBuilder.child(TxTtpAttributes.class).child(UsedWavelengths.class,
- new UsedWavelengthsKey(wavelengthIndex)).build();
+ new UsedWavelengthsKey(Uint32.valueOf(wavelengthIndex))).build();
break;
case DEGREERXTTP:
usedWlIID = usedWlIIDBuilder.child(RxTtpAttributes.class).child(UsedWavelengths.class,
- new UsedWavelengthsKey(wavelengthIndex)).build();
+ new UsedWavelengthsKey(Uint32.valueOf(wavelengthIndex))).build();
break;
case DEGREETXCTP:
case DEGREERXCTP:
case DEGREETXRXCTP:
usedWlIID = usedWlIIDBuilder.child(CtpAttributes.class).child(UsedWavelengths.class,
- new UsedWavelengthsKey(wavelengthIndex)).build();
+ new UsedWavelengthsKey(Uint32.valueOf(wavelengthIndex))).build();
break;
case SRGTXCP:
.openroadm.network.topology.rev181130.networks.network.node.termination.point.cp.attributes
.UsedWavelengths.class, new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology
.rev181130.networks.network.node.termination.point.cp.attributes
- .UsedWavelengthsKey(wavelengthIndex)).build();
+ .UsedWavelengthsKey(Uint32.valueOf(wavelengthIndex))).build();
break;
case SRGTXRXPP:
case SRGRXPP:
case SRGTXPP:
usedWlIID = usedWlIIDBuilder.child(PpAttributes.class).child(UsedWavelength.class,
- new UsedWavelengthKey(wavelengthIndex)).build();
+ new UsedWavelengthKey(Uint32.valueOf(wavelengthIndex))).build();
break;
case XPONDERNETWORK:
case DEGREETXTTP:
case DEGREETXRXTTP:
TxTtpAttributes txTtpAttributes = null;
+ List<UsedWavelengths> usedDegreeTxTtpWls;
if (tp1 != null) {
txTtpAttributes = tp1.getTxTtpAttributes();
}
TxTtpAttributesBuilder txTtpAttributesBuilder;
if (txTtpAttributes == null) {
txTtpAttributesBuilder = new TxTtpAttributesBuilder();
+ usedDegreeTxTtpWls = new ArrayList<>();
} else {
txTtpAttributesBuilder = new TxTtpAttributesBuilder(txTtpAttributes);
+ usedDegreeTxTtpWls = new ArrayList<>(txTtpAttributesBuilder.getUsedWavelengths());
}
- List<UsedWavelengths> usedDegreeTxTtpWls = txTtpAttributesBuilder.getUsedWavelengths();
- if (usedDegreeTxTtpWls == null) {
- usedDegreeTxTtpWls = new ArrayList<>();
- txTtpAttributesBuilder.setUsedWavelengths(usedDegreeTxTtpWls);
- }
- usedDegreeTxTtpWls.add(new UsedWavelengthsBuilder().setIndex(wavelengthIndex)
+ usedDegreeTxTtpWls.add(new UsedWavelengthsBuilder().setIndex(Uint32.valueOf(wavelengthIndex))
.setFrequency(centralTHz).setWidth(FrequencyGHz.getDefaultInstance("40")).build());
+ txTtpAttributesBuilder.setUsedWavelengths(usedDegreeTxTtpWls);
tp1Builder.setTxTtpAttributes(txTtpAttributesBuilder.build());
break;
case DEGREERXTTP:
RxTtpAttributes rxTtpAttributes = null;
+ List<UsedWavelengths> usedDegreeRxTtpWls;
if (tp1 != null) {
rxTtpAttributes = tp1.getRxTtpAttributes();
}
RxTtpAttributesBuilder rxTtpAttributesBuilder;
if (rxTtpAttributes == null) {
rxTtpAttributesBuilder = new RxTtpAttributesBuilder();
+ usedDegreeRxTtpWls = new ArrayList<>();
} else {
rxTtpAttributesBuilder = new RxTtpAttributesBuilder(rxTtpAttributes);
+ usedDegreeRxTtpWls = new ArrayList<>(rxTtpAttributesBuilder.getUsedWavelengths());
}
- List<UsedWavelengths> usedDegreeRxTtpWls = rxTtpAttributesBuilder.getUsedWavelengths();
- if (usedDegreeRxTtpWls == null) {
- usedDegreeRxTtpWls = new ArrayList<>();
- rxTtpAttributesBuilder.setUsedWavelengths(usedDegreeRxTtpWls);
- }
- usedDegreeRxTtpWls.add(new UsedWavelengthsBuilder().setIndex(wavelengthIndex)
+ usedDegreeRxTtpWls.add(new UsedWavelengthsBuilder().setIndex(Uint32.valueOf(wavelengthIndex))
.setFrequency(centralTHz).setWidth(FrequencyGHz.getDefaultInstance("40")).build());
+ rxTtpAttributesBuilder.setUsedWavelengths(usedDegreeRxTtpWls);
tp1Builder.setRxTtpAttributes(rxTtpAttributesBuilder.build());
break;
case DEGREERXCTP:
case DEGREETXRXCTP:
CtpAttributes ctpAttributes = null;
+ List<UsedWavelengths> usedDegreeCtpWls;
if (tp1 != null) {
ctpAttributes = tp1.getCtpAttributes();
}
CtpAttributesBuilder ctpAttributesBuilder;
if (ctpAttributes == null) {
ctpAttributesBuilder = new CtpAttributesBuilder();
+ usedDegreeCtpWls = new ArrayList<>();
} else {
ctpAttributesBuilder = new CtpAttributesBuilder(ctpAttributes);
+ usedDegreeCtpWls = new ArrayList<>(ctpAttributesBuilder.getUsedWavelengths());
}
- List<UsedWavelengths> usedDegreeCtpWls = ctpAttributesBuilder.getUsedWavelengths();
- if (usedDegreeCtpWls == null) {
- usedDegreeCtpWls = new ArrayList<>();
- ctpAttributesBuilder.setUsedWavelengths(usedDegreeCtpWls);
- }
- usedDegreeCtpWls.add(new UsedWavelengthsBuilder().setIndex(wavelengthIndex)
+ usedDegreeCtpWls.add(new UsedWavelengthsBuilder().setIndex(Uint32.valueOf(wavelengthIndex))
.setFrequency(centralTHz).setWidth(FrequencyGHz.getDefaultInstance("40")).build());
+ ctpAttributesBuilder.setUsedWavelengths(usedDegreeCtpWls);
tp1Builder.setCtpAttributes(ctpAttributesBuilder.build());
break;
case SRGRXCP:
case SRGTXRXCP:
CpAttributes cpAttributes = null;
+ List<org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network
+ .node.termination.point.cp.attributes.UsedWavelengths> usedDegreeCpWls;
if (tp1 != null) {
cpAttributes = tp1.getCpAttributes();
}
CpAttributesBuilder cpAttributesBuilder;
if (cpAttributes == null) {
cpAttributesBuilder = new CpAttributesBuilder();
+ usedDegreeCpWls = new ArrayList<>();
} else {
cpAttributesBuilder = new CpAttributesBuilder(cpAttributes);
- }
- List<org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network
- .node.termination.point.cp.attributes.UsedWavelengths> usedDegreeCpWls = cpAttributesBuilder
- .getUsedWavelengths();
- if (usedDegreeCpWls == null) {
- usedDegreeCpWls = new ArrayList<>();
- cpAttributesBuilder.setUsedWavelengths(usedDegreeCpWls);
+ usedDegreeCpWls = new ArrayList<>(cpAttributesBuilder.getUsedWavelengths());
}
usedDegreeCpWls.add(new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130
- .networks.network.node.termination.point.cp.attributes.UsedWavelengthsBuilder()
- .setIndex(wavelengthIndex)
- .setFrequency(centralTHz).setWidth(FrequencyGHz.getDefaultInstance("40")).build());
+ .networks.network.node.termination.point.cp.attributes.UsedWavelengthsBuilder()
+ .setIndex(Uint32.valueOf(wavelengthIndex))
+ .setFrequency(centralTHz).setWidth(FrequencyGHz.getDefaultInstance("40")).build());
+ cpAttributesBuilder.setUsedWavelengths(usedDegreeCpWls);
tp1Builder.setCpAttributes(cpAttributesBuilder.build());
break;
case SRGRXPP:
case SRGTXPP:
PpAttributes ppAttributes = null;
+ List<UsedWavelength> usedDegreePpWls;
if (tp1 != null) {
ppAttributes = tp1.getPpAttributes();
}
PpAttributesBuilder ppAttributesBuilder;
if (ppAttributes == null) {
ppAttributesBuilder = new PpAttributesBuilder();
+ usedDegreePpWls = new ArrayList<>();
} else {
ppAttributesBuilder = new PpAttributesBuilder(ppAttributes);
+ usedDegreePpWls = new ArrayList<>(ppAttributesBuilder.getUsedWavelength());
}
- List<UsedWavelength> usedDegreePpWls = ppAttributesBuilder.getUsedWavelength();
- if (usedDegreePpWls == null) {
- usedDegreePpWls = new ArrayList<>();
- ppAttributesBuilder.setUsedWavelength(usedDegreePpWls);
- }
- usedDegreePpWls.add(new UsedWavelengthBuilder().setIndex(wavelengthIndex)
+ usedDegreePpWls.add(new UsedWavelengthBuilder().setIndex(Uint32.valueOf(wavelengthIndex))
.setFrequency(centralTHz).setWidth(FrequencyGHz.getDefaultInstance("40")).build());
+ ppAttributesBuilder.setUsedWavelength(usedDegreePpWls);
tp1Builder.setPpAttributes(ppAttributesBuilder.build());
break;