X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=pce%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fpce%2FPceCalculation.java;h=67e9b02cf21efa9a571fdea79a4899c7ae0300fd;hb=9bb763c7e4481c410db29c9b08d05b7206597130;hp=8cb8c418f3c8dc02d2e01ff5bbd3339e95ef6e0e;hpb=52ba318b9bff4d33d1d4665c94dfd2b923ceb328;p=transportpce.git diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/PceCalculation.java b/pce/src/main/java/org/opendaylight/transportpce/pce/PceCalculation.java index 8cb8c418f..67e9b02cf 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/PceCalculation.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/PceCalculation.java @@ -15,13 +15,14 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; +import java.util.stream.Collectors; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.transportpce.common.NetworkUtils; import org.opendaylight.transportpce.common.ResponseCodes; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.PathComputationRequestInput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.PathComputationRequestInput; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.Node1; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev170929.OpenroadmNodeType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.Network; @@ -128,7 +129,9 @@ public class PceCalculation { LOG.error("readMdSal: network is null: {}", nwInstanceIdentifier); return false; } - this.allNodes = nw.getNode(); + this.allNodes = nw.getNode().stream() + .sorted((node1, node2) -> node1.getNodeId().getValue().compareTo(node2.getNodeId().getValue())) + .collect(Collectors.toList()); Network1 nw1 = nw.augmentation(Network1.class); this.allLinks = nw1.getLink(); if ((this.allNodes == null) || this.allNodes.isEmpty()) { @@ -237,12 +240,12 @@ public class PceCalculation { LOG.info("validateLink: EXPRESS-LINK added to allPceLinks {}", pcelink.toString()); break; case ADDLINK : - pcelink.setClient(source.getRdmSrgClient(pcelink.getSourceTP().toString())); + pcelink.setClient(source.getRdmSrgClient(pcelink.getSourceTP().toString(), true)); this.addLinks.add(pcelink); - LOG.debug("validateLink: ADD-LINK saved {}", pcelink.toString()); + LOG.info("validateLink: ADD-LINK saved {}", pcelink.toString()); break; case DROPLINK : - pcelink.setClient(dest.getRdmSrgClient(pcelink.getDestTP().toString())); + pcelink.setClient(dest.getRdmSrgClient(pcelink.getDestTP().toString(), false)); this.dropLinks.add(pcelink); LOG.info("validateLink: DROP-LINK saved {}", pcelink.toString()); break; @@ -328,21 +331,29 @@ public class PceCalculation { return false; } if (supNodeId.equals(this.anodeId)) { - if (endPceNode(nodeType, nodeId, pceNode)) { - if (!pceNode.isValid()) { - LOG.error("validateNode: There are no available wavelengths in node {}", nodeId.getValue()); - return false; + if (this.aendPceNode == null) { + if (endPceNode(nodeType, nodeId, pceNode, true)) { + if (!pceNode.isValid()) { + LOG.error("validateNode: There are no available wavelengths in node {}", nodeId.getValue()); + return false; + } + this.aendPceNode = pceNode; } - this.aendPceNode = pceNode; + } else { + LOG.warn("aendPceNode already gets: {}", this.aendPceNode); } } if (supNodeId.equals(this.znodeId)) { - if (endPceNode(nodeType, nodeId, pceNode)) { - if (!pceNode.isValid()) { - LOG.error("validateNode: There are no available wavelengths in node {}", nodeId.getValue()); - return false; + if (this.zendPceNode == null) { + if (endPceNode(nodeType, nodeId, pceNode, false)) { + if (!pceNode.isValid()) { + LOG.error("validateNode: There are no available wavelengths in node {}", nodeId.getValue()); + return false; + } + this.zendPceNode = pceNode; } - this.zendPceNode = pceNode; + } else { + LOG.warn("zendPceNode already gets: {}", this.zendPceNode); } } pceNode.initWLlist(); @@ -355,11 +366,11 @@ public class PceCalculation { return true; } - private Boolean endPceNode(OpenroadmNodeType openroadmNodeType, NodeId nodeId, PceNode pceNode) { + private Boolean endPceNode(OpenroadmNodeType openroadmNodeType, NodeId nodeId, PceNode pceNode, Boolean aend) { Boolean add = true; switch (openroadmNodeType) { case SRG : - pceNode.initRdmSrgTps(); + pceNode.initSrgTps(); this.azSrgs.add(nodeId); break; case XPONDER :