import org.opendaylight.transportpce.common.service.ServiceTypes;
import org.opendaylight.transportpce.pce.PceComplianceCheck;
import org.opendaylight.transportpce.pce.constraints.PceConstraints;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220615.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mc.capabilities.McCapabilities;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Link1;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Node1;
-//import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1;
-//import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.path.computation.reroute.request.input.Endpoints;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mc.capabilities.McCapabilities;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Link1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.OpenroadmLinkType;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.OpenroadmNodeType;
-//import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmLinkType;
-//import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmNodeType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmLinkType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmNodeType;
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;
private List<LinkId> linksToExclude = new ArrayList<>();
private PceResult returnStructure;
private PortMapping portMapping;
+ // Define the termination points whose reservation status is not taken into account during the pruning process
+ private Endpoints endpoints;
private enum ConstraintTypes {
NONE, HARD_EXCLUDE, HARD_INCLUDE, HARD_DIVERSITY, SOFT_EXCLUDE, SOFT_INCLUDE, SOFT_DIVERSITY;
private MappingUtils mappingUtils;
public PceCalculation(PathComputationRequestInput input, NetworkTransactionService networkTransactionService,
- PceConstraints pceHardConstraints, PceConstraints pceSoftConstraints, PceResult rc,
- PortMapping portMapping) {
+ PceConstraints pceHardConstraints, PceConstraints pceSoftConstraints, PceResult rc,
+ PortMapping portMapping) {
this.input = input;
this.networkTransactionService = networkTransactionService;
this.returnStructure = rc;
+ this.pceHardConstraints = pceHardConstraints;
+ this.mappingUtils = new MappingUtilsImpl(networkTransactionService.getDataBroker());
+ this.portMapping = portMapping;
+ this.endpoints = null;
+ parseInput();
+ }
+ public PceCalculation(PathComputationRequestInput input, NetworkTransactionService networkTransactionService,
+ PceConstraints pceHardConstraints, PceConstraints pceSoftConstraints, PceResult rc,
+ PortMapping portMapping, Endpoints endpoints) {
+ this.input = input;
+ this.networkTransactionService = networkTransactionService;
+ this.returnStructure = rc;
this.pceHardConstraints = pceHardConstraints;
this.mappingUtils = new MappingUtilsImpl(networkTransactionService.getDataBroker());
this.portMapping = portMapping;
+ this.endpoints = endpoints;
parseInput();
}
Optional<Network> nwOptional =
networkTransactionService.read(LogicalDatastoreType.CONFIGURATION, nwInstanceIdentifier).get();
if (nwOptional.isPresent()) {
- nw = nwOptional.get();
+ nw = nwOptional.orElseThrow();
LOG.debug("readMdSal: network nodes: nwOptional.isPresent = true {}", nw);
- networkTransactionService.close();
}
} catch (InterruptedException | ExecutionException e) {
LOG.error("readMdSal: Error reading topology {}", nwInstanceIdentifier);
- networkTransactionService.close();
returnStructure.setRC(ResponseCodes.RESPONSE_FAILED);
- throw new RuntimeException(
- "readMdSal: Error reading from operational store, topology : " + nwInstanceIdentifier + " :" + e);
}
return nw;
}
PceOpticalNode pceNode = new PceOpticalNode(deviceNodeId, this.serviceType, portMapping, node, nodeType,
mappingUtils.getOpenRoadmVersion(deviceNodeId), getSlotWidthGranularity(deviceNodeId, node.getNodeId()),
getCentralFreqGranularity(deviceNodeId, node.getNodeId()));
+ if (endpoints != null) {
+ pceNode.setEndpoints(endpoints);
+ }
pceNode.validateAZxponder(anodeId, znodeId, input.getServiceAEnd().getServiceFormat());
pceNode.initFrequenciesBitSet();
pcelink.getlinkType(), pcelink);
break;
case ADDLINK:
- pcelink.setClient(
+ pcelink.setClientA(
source.getRdmSrgClient(pcelink.getSourceTP().getValue(), StringConstants.SERVICE_DIRECTION_AZ));
addLinks.add(pcelink);
LOG.debug("validateLink: ADD-LINK saved {}", pcelink);
break;
case DROPLINK:
- pcelink.setClient(
+ pcelink.setClientZ(
dest.getRdmSrgClient(pcelink.getDestTP().getValue(), StringConstants.SERVICE_DIRECTION_ZA));
dropLinks.add(pcelink);
LOG.debug("validateLink: DROP-LINK saved {}", pcelink);
return false;
}
if (dest.getXpdrClient(pcelink.getDestTP().getValue()) != null) {
- pcelink.setClient(dest.getXpdrClient(pcelink.getDestTP().getValue()));
+ pcelink.setClientZ(dest.getXpdrClient(pcelink.getDestTP().getValue()));
}
allPceLinks.put(linkId, pcelink);
source.addOutgoingLink(pcelink);
return false;
}
if (source.getXpdrClient(pcelink.getSourceTP().getValue()) != null) {
- pcelink.setClient(source.getXpdrClient(pcelink.getSourceTP().getValue()));
+ pcelink.setClientA(source.getXpdrClient(pcelink.getSourceTP().getValue()));
}
allPceLinks.put(linkId, pcelink);
source.addOutgoingLink(pcelink);
switch (pceOtnLink.getlinkType()) {
case OTNLINK:
if (source.getXpdrClient(pceOtnLink.getSourceTP().getValue()) != null) {
- pceOtnLink.setClient(source.getXpdrClient(pceOtnLink.getSourceTP().getValue()));
+ pceOtnLink.setClientA(source.getXpdrClient(pceOtnLink.getSourceTP().getValue()));
}
if (dest.getXpdrClient(pceOtnLink.getDestTP().getValue()) != null) {
- pceOtnLink.setClient(dest.getXpdrClient(pceOtnLink.getDestTP().getValue()));
+ pceOtnLink.setClientZ(dest.getXpdrClient(pceOtnLink.getDestTP().getValue()));
}
allPceLinks.put(linkId, pceOtnLink);
source.addOutgoingLink(pceOtnLink);