X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=pce%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fpce%2Fnetworkanalyzer%2FPceCalculation.java;h=4c5688439f04545dbdf1c5a7ddbd1b9f48d0a923;hb=34cbca4ad81fbd29e833197f0e4b09128daa8b95;hp=b0fe7c08ab9761240cedd5f63b759d949ee469c2;hpb=45de2604acea011072a5478eaead6ffb96e1e6ea;p=transportpce.git diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculation.java b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculation.java index b0fe7c08a..4c5688439 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculation.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculation.java @@ -17,13 +17,15 @@ import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.concurrent.ExecutionException; +import java.util.stream.Collectors; + import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.NetworkUtils; import org.opendaylight.transportpce.common.ResponseCodes; import org.opendaylight.transportpce.common.network.NetworkTransactionService; import org.opendaylight.transportpce.pce.constraints.PceConstraints; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev190624.PathComputationRequestInput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmLinkType; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId; @@ -64,7 +66,7 @@ public class PceCalculation { // this List serves graph calculation private Map allPceNodes = new HashMap(); - // this List serves calculation of ZtoA path descritopn + // this List serves calculation of ZtoA path description // TODO maybe better solution is possible private Map allPceLinks = new HashMap(); private Set linksToExclude = new HashSet(); @@ -92,14 +94,12 @@ public class PceCalculation { returnStructure.setRC(ResponseCodes.RESPONSE_FAILED); return; } - MapUtils.mapDiversityConstraints(allNodes, allLinks, pceHardConstraints); if (!analyzeNw()) { returnStructure.setRC(ResponseCodes.RESPONSE_FAILED); return; } - printNodesInfo(allPceNodes); returnStructure.setRC(ResponseCodes.RESPONSE_OK); @@ -139,10 +139,12 @@ public class PceCalculation { LOG.error("readMdSal: network is null: {}", nwInstanceIdentifier); return false; } - allNodes = nw.getNode(); + allNodes = nw.getNode().stream().sorted((n1, n2) -> n1.getNodeId().getValue().compareTo(n2.getNodeId() + .getValue())).collect(Collectors.toList()); Network1 nw1 = nw.augmentation(Network1.class); - allLinks = nw1.getLink(); + allLinks = nw1.getLink().stream().sorted((l1, l2) -> l1.getSource().getSourceTp().toString().compareTo(l2 + .getSource().getSourceTp().toString())).collect(Collectors.toList()); if (allNodes == null || allNodes.isEmpty()) { LOG.error("readMdSal: no nodes "); return false; @@ -368,11 +370,21 @@ public class PceCalculation { break; } - if ((pceNode.getSupNodeIdPceNode().equals(anodeId)) && (endPceNode(nodeType,pceNode.getNodeId(), pceNode))) { - this.aendPceNode = pceNode; + if (pceNode.getSupNodeIdPceNode().equals(this.anodeId)) { + if (this.aendPceNode != null) { + LOG.debug("aendPceNode already gets: {}", this.aendPceNode); + } else if (endPceNode(nodeType,pceNode.getNodeId(), pceNode)) { + this.aendPceNode = pceNode; + } + // returning false otherwise would break E2E test } - if ((pceNode.getSupNodeIdPceNode().equals(znodeId)) && (endPceNode(nodeType,pceNode.getNodeId(), pceNode))) { - this.zendPceNode = pceNode; + if (pceNode.getSupNodeIdPceNode().equals(this.znodeId)) { + if (this.zendPceNode != null) { + LOG.debug("zendPceNode already gets: {}", this.zendPceNode); + } else if (endPceNode(nodeType,pceNode.getNodeId(), pceNode)) { + this.zendPceNode = pceNode; + } + // returning false otherwise would break E2E test } allPceNodes.put(pceNode.getNodeId(), pceNode); @@ -382,7 +394,7 @@ public class PceCalculation { private ConstraintTypes validateNodeConstraints(PceNode pcenode) { - if (pceHardConstraints.getExcludeSupNodes().isEmpty() && pceHardConstraints.getExcludeCLLI().isEmpty()) { + if (pceHardConstraints.getExcludeSupNodes().isEmpty() && pceHardConstraints.getExcludeCLLI().isEmpty()) { return ConstraintTypes.NONE; } @@ -430,7 +442,6 @@ public class PceCalculation { } private Boolean endPceNode(OpenroadmNodeType openroadmNodeType, NodeId nodeId, PceNode pceNode) { - Boolean add = true; switch (openroadmNodeType) { case SRG : pceNode.initSrgTps(); @@ -440,11 +451,15 @@ public class PceCalculation { pceNode.initXndrTps(); break; default: - add = false; LOG.warn("endPceNode: Node {} is not SRG or XPONDER !", nodeId); - break; + return false; + } + + if (!pceNode.isValid()) { + LOG.error("validateNode : there are no availaible wavelengths in node {}", pceNode.getNodeId().getValue()); + return false; } - return add; + return true; } public PceNode getaendPceNode() {