X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=pce%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fpce%2FPceSendingPceRPCs.java;h=452b711708f1f471b03f62ecbed5932d989546d0;hb=refs%2Fchanges%2F15%2F103515%2F1;hp=c0da36d19750160fe9d52a8b8092d174faef445f;hpb=56ad6406faba3227e19a6f609325c8b9dbaca3fb;p=transportpce.git diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/PceSendingPceRPCs.java b/pce/src/main/java/org/opendaylight/transportpce/pce/PceSendingPceRPCs.java index c0da36d19..452b71170 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/PceSendingPceRPCs.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/PceSendingPceRPCs.java @@ -20,13 +20,14 @@ import org.opendaylight.transportpce.pce.gnpy.consumer.GnpyConsumer; import org.opendaylight.transportpce.pce.graph.PceGraph; import org.opendaylight.transportpce.pce.networkanalyzer.PceCalculation; import org.opendaylight.transportpce.pce.networkanalyzer.PceResult; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInputBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.service.path.rpc.result.PathDescriptionBuilder; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.AToZDirection; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.ZToADirection; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.RoutingConstraintsSp.PceMetric; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.HardConstraints; +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.PathComputationRequestInputBuilder; +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.pce.rev220808.service.path.rpc.result.PathDescriptionBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constraints.rev211210.routing.constraints.HardConstraints; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.AToZDirection; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ZToADirection; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.PceMetric; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,6 +35,7 @@ import org.slf4j.LoggerFactory; * Class for Sending * PCE requests : * - path-computation-request + * - path-computation-reroute * - cancel-resource-reserve. * @author Martial Coulibaly ( martial.coulibaly@gfi.com ) on behalf of Orange * @@ -61,6 +63,8 @@ public class PceSendingPceRPCs { private String responseCode; private final GnpyConsumer gnpyConsumer; private PortMapping portMapping; + // Define the termination points whose reservation status is not taken into account during the pruning process + private Endpoints endpoints; public PceSendingPceRPCs(GnpyConsumer gnpyConsumer) { setPathDescription(null); @@ -69,15 +73,26 @@ public class PceSendingPceRPCs { this.gnpyConsumer = gnpyConsumer; } - public PceSendingPceRPCs(PathComputationRequestInput input, - NetworkTransactionService networkTransaction, GnpyConsumer gnpyConsumer, PortMapping portMapping) { + public PceSendingPceRPCs(PathComputationRequestInput input, NetworkTransactionService networkTransaction, + GnpyConsumer gnpyConsumer, PortMapping portMapping) { this.gnpyConsumer = gnpyConsumer; setPathDescription(null); - // TODO compliance check to check that input is not empty this.input = input; this.networkTransaction = networkTransaction; this.portMapping = portMapping; + this.endpoints = null; + } + + public PceSendingPceRPCs(PathComputationRequestInput input, NetworkTransactionService networkTransaction, + GnpyConsumer gnpyConsumer, PortMapping portMapping, + Endpoints endpoints) { + this.gnpyConsumer = gnpyConsumer; + setPathDescription(null); + this.input = input; + this.networkTransaction = networkTransaction; + this.portMapping = portMapping; + this.endpoints = endpoints; } public void cancelResourceReserve() { @@ -95,8 +110,8 @@ public class PceSendingPceRPCs { public void pathComputationWithConstraints(PceConstraints hardConstraints, PceConstraints softConstraints) { - PceCalculation nwAnalizer = - new PceCalculation(input, networkTransaction, hardConstraints, softConstraints, rc, portMapping); + PceCalculation nwAnalizer = new PceCalculation(input, networkTransaction, hardConstraints, softConstraints, rc, + portMapping, endpoints); nwAnalizer.retrievePceNetwork(); rc = nwAnalizer.getReturnStructure(); String serviceType = nwAnalizer.getServiceType(); @@ -105,9 +120,8 @@ public class PceSendingPceRPCs { return; } LOG.info("PceGraph ..."); - PceGraph graph = new PceGraph(nwAnalizer.getaendPceNode(), - nwAnalizer.getzendPceNode(), nwAnalizer.getAllPceNodes(), - hardConstraints, softConstraints, rc, serviceType); + PceGraph graph = new PceGraph(nwAnalizer.getaendPceNode(), nwAnalizer.getzendPceNode(), + nwAnalizer.getAllPceNodes(), hardConstraints, softConstraints, rc, serviceType); graph.calcPath(); rc = graph.getReturnStructure(); if (!rc.getStatus()) { @@ -208,9 +222,13 @@ public class PceSendingPceRPCs { LOG.info("In pceSendingPceRPC: GNPy succeed to find another path"); // Compute the path PathComputationRequestInput inputFromGnpy = new PathComputationRequestInputBuilder() - .setServiceName(input.getServiceName()).setHardConstraints(gnpyPathAsHC) - .setSoftConstraints(input.getSoftConstraints()).setPceMetric(PceMetric.HopCount) - .setServiceAEnd(input.getServiceAEnd()).setServiceZEnd(input.getServiceZEnd()).build(); + .setServiceName(input.getServiceName()) + .setHardConstraints(gnpyPathAsHC) + .setSoftConstraints(input.getSoftConstraints()) + .setPceRoutingMetric(PceMetric.HopCount) + .setServiceAEnd(input.getServiceAEnd()) + .setServiceZEnd(input.getServiceZEnd()) + .build(); PceConstraintsCalc constraintsGnpy = new PceConstraintsCalc(inputFromGnpy, networkTransaction); PceConstraints gnpyHardConstraints = constraintsGnpy.getPceHardConstraints(); PceConstraints gnpySoftConstraints = constraintsGnpy.getPceSoftConstraints();