X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=pce%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fpce%2Fnetworkanalyzer%2FPceOtnNode.java;h=a93d3839695d4130ebb00b68f05794169d101503;hb=be2226a093e3c10f84c686d9636376898eff7cd2;hp=5dbe3679db4e183e40a523a06ca29a66e3751049;hpb=93e2068ee8a54727284d2f19004c6a4a23899275;p=transportpce.git diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNode.java b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNode.java index 5dbe3679d..a93d38396 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNode.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNode.java @@ -52,6 +52,7 @@ public class PceOtnNode implements PceNode { private final OpenroadmNodeType nodeType; private final String pceNodeType; private final String otnServiceType; + private String modeType; private Map> tpAvailableTribPort = new TreeMap<>(); private Map> tpAvailableTribSlot = new TreeMap<>(); @@ -94,6 +95,8 @@ public class PceOtnNode implements PceNode { LOG.info("PceOtnNode: initXndrTps for node {}", this.nodeId.getValue()); this.availableXponderTp.clear(); + this.modeType = mode; + org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 nodeTp = this.node.augmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang .ietf.network.topology.rev180226.Node1.class); @@ -237,7 +240,7 @@ public class PceOtnNode implements PceNode { && ontTp1.getXpdrTpPortConnectionAttributes().getOdtuTpnPool() != null && ontTp1.getXpdrTpPortConnectionAttributes().getOdtuTpnPool().get(0).getOdtuType() .equals(ODTU4TsAllocated.class) - && ontTp1.getXpdrTpPortConnectionAttributes().getOdtuTpnPool().get(0).getTpnPool().isEmpty() + && !ontTp1.getXpdrTpPortConnectionAttributes().getOdtuTpnPool().get(0).getTpnPool().isEmpty() && (ontTp1.getXpdrTpPortConnectionAttributes().getTsPool().size() >= tsNb)) { return true; } @@ -387,6 +390,58 @@ public class PceOtnNode implements PceNode { return valid; } + public boolean isPceOtnNodeValid(final PceOtnNode pceOtnNode) { + if (pceOtnNode == null || pceOtnNode.node == null + || pceOtnNode.getNodeId() == null || pceOtnNode.nodeType == null || pceOtnNode.getSupNetworkNodeId() == null + || pceOtnNode.getSupClliNodeId() == null || pceOtnNode.otnServiceType == null) { + LOG.error( + "PceOtnNode: one of parameters is not populated : nodeId, node type, supporting nodeId, otnServiceType" + ); + return false; + } + + if (!isNodeTypeValid(pceOtnNode)) { + LOG.error("PceOtnNode node type: node type isn't one of MUXPDR or SWITCH or TPDR"); + return false; + } + + return isOtnServiceTypeValid(pceOtnNode); + } + + private boolean isOtnServiceTypeValid(PceOtnNode pceOtnNode) { + if (pceOtnNode.modeType == null) { + return false; + } + + //Todo refactor Strings (mode and otnServiceType ) to enums + if ((pceOtnNode.otnServiceType.equals("ODU4") && pceOtnNode.modeType.equals("AZ"))) { + return true; + } + + if ((pceOtnNode.otnServiceType.equals("10GE") || pceOtnNode.otnServiceType.equals("1GE")) + && (isAz(pceOtnNode) || isIntermediate(pceOtnNode))) { + return true; + } + + return false; + } + + private boolean isIntermediate(PceOtnNode pceOtnNode) { + return pceOtnNode.modeType.equals("intermediate") + && checkSwPool(null, pceOtnNode.availableXpdrNWTps, 0, 2); + } + + private boolean isAz(PceOtnNode pceOtnNode) { + return pceOtnNode.modeType.equals("AZ") + && checkSwPool(pceOtnNode.availableXpdrClientTps, pceOtnNode.availableXpdrNWTps, 1, 1); + } + + private boolean isNodeTypeValid(final PceOtnNode pceOtnNode) { + return (pceOtnNode.nodeType == OpenroadmNodeType.MUXPDR) + || (pceOtnNode.nodeType == OpenroadmNodeType.SWITCH) + || (pceOtnNode.nodeType == OpenroadmNodeType.TPDR); + } + @Override public void addOutgoingLink(PceLink outLink) { this.outgoingLinks.add(outLink);