Fix bug in PCE picking wrong client port
[transportpce.git] / pce / src / main / java / org / opendaylight / transportpce / pce / networkanalyzer / PceOtnNode.java
index 35276d5e0c2b4e86e60f0c00e2a1e3162817170f..2393f2f92b86d98827df089c28c8a659a871f8e1 100644 (file)
@@ -75,8 +75,10 @@ public class PceOtnNode implements PceNode {
 
     private List<PceLink> outgoingLinks = new ArrayList<>();
     private Map<String, String> clientPerNwTp = new HashMap<>();
+    private String clientPort;
 
-    public PceOtnNode(Node node, OpenroadmNodeType nodeType, NodeId nodeId, String pceNodeType, String serviceType) {
+    public PceOtnNode(Node node, OpenroadmNodeType nodeType, NodeId nodeId, String pceNodeType, String serviceType,
+            String clientPort) {
         this.node = node;
         this.nodeId = nodeId;
         this.nodeType = nodeType;
@@ -99,6 +101,7 @@ public class PceOtnNode implements PceNode {
         checkAvailableTribPort();
         this.tpAvailableTribSlot.clear();
         checkAvailableTribSlot();
+        this.clientPort = clientPort;
         if (node == null || nodeId == null || nodeType != OpenroadmNodeType.MUXPDR
                 && nodeType != OpenroadmNodeType.SWITCH && nodeType != OpenroadmNodeType.TPDR) {
             LOG.error("PceOtnNode: one of parameters is not populated : nodeId, node type");
@@ -240,8 +243,10 @@ public class PceOtnNode implements PceNode {
                             usableXpdrNWTps.add(nwTp);
                         }
                         if (usableXpdrClientTps.size() >= nbClient && usableXpdrNWTps.size() >= nbNetw) {
-                            clientPerNwTp.put(nwTp.getValue(), clTp.getValue());
-                            return true;
+                            if (this.clientPort == null || this.clientPort.equals(clTp.getValue())) {
+                                clientPerNwTp.put(nwTp.getValue(), clTp.getValue());
+                                return true;
+                            }
                         }
                     }
                 }