Refactor PCE network analyzer PceOtnNode step 6
[transportpce.git] / pce / src / main / java / org / opendaylight / transportpce / pce / networkanalyzer / PceOtnNode.java
index 65132ce352e015ceafbef72abd47b39af6226a60..2e61eb4bcb01596ec23ad5d7a10daca03fe0b77c 100644 (file)
@@ -131,6 +131,11 @@ public class PceOtnNode implements PceNode {
             LOG.error("PceOtnNode: one of parameters is not populated : nodeId, node type");
             this.valid = false;
         }
+        if (!SERVICE_TYPE_ETH_CLASS_MAP.containsKey(serviceType)
+                && !SERVICE_TYPE_ODU_LIST.contains(serviceType)) {
+            LOG.error("PceOtnNode: unsupported OTN Service Type {}", serviceType);
+            this.valid = false;
+        }
     }
 
     public void initXndrTps(String mode) {
@@ -235,39 +240,14 @@ public class PceOtnNode implements PceNode {
         switch (modeType) {
 
             case "intermediate":
-                for (NonBlockingList nbl: nblList) {
-                    for (TpId nwTp : netwTps) {
-                        if (nbl.getTpList().contains(nwTp)) {
-                            usableXpdrNWTps.add(nwTp);
-                        }
-                        if (usableXpdrNWTps.size() >= 2) {
-                            return true;
-                        }
-                    }
-                }
-                return false;
+                return checkIntermediateSwPool(nblList, netwTps);
 
             case "AZ":
                 if (clientTps == null) {
                     return false;
                 }
                 clientTps.sort(Comparator.comparing(TpId::getValue));
-                for (NonBlockingList nbl: nblList) {
-                    for (TpId nwTp : netwTps) {
-                        for (TpId clTp : clientTps) {
-                            if (nbl.getTpList().contains(clTp) && nbl.getTpList().contains(nwTp)) {
-                                usableXpdrClientTps.add(clTp);
-                                usableXpdrNWTps.add(nwTp);
-                            }
-                            if (usableXpdrClientTps.size() >= 1 && usableXpdrNWTps.size() >= 1
-                                    && (this.clientPort == null || this.clientPort.equals(clTp.getValue()))) {
-                                clientPerNwTp.put(nwTp.getValue(), clTp.getValue());
-                                return true;
-                            }
-                        }
-                    }
-                }
-                return false;
+                return checkAzSwPool(nblList, netwTps, clientTps);
 
             default:
                 LOG.error("Unsupported mode type {}", modeType);
@@ -275,6 +255,41 @@ public class PceOtnNode implements PceNode {
         }
     }
 
+
+    private boolean checkIntermediateSwPool(List<NonBlockingList> nblList, List<TpId> netwTps) {
+        for (NonBlockingList nbl: nblList) {
+            for (TpId nwTp : netwTps) {
+                if (nbl.getTpList().contains(nwTp)) {
+                    usableXpdrNWTps.add(nwTp);
+                }
+                if (usableXpdrNWTps.size() >= 2) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+
+    private boolean checkAzSwPool(List<NonBlockingList> nblList, List<TpId> netwTps, List<TpId> clientTps) {
+        for (NonBlockingList nbl: nblList) {
+            for (TpId nwTp : netwTps) {
+                for (TpId clTp : clientTps) {
+                    if (nbl.getTpList().contains(clTp) && nbl.getTpList().contains(nwTp)) {
+                        usableXpdrClientTps.add(clTp);
+                        usableXpdrNWTps.add(nwTp);
+                    }
+                    if (usableXpdrClientTps.size() >= 1 && usableXpdrNWTps.size() >= 1
+                            && (this.clientPort == null || this.clientPort.equals(clTp.getValue()))) {
+                        clientPerNwTp.put(nwTp.getValue(), clTp.getValue());
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
     private boolean checkTpForOdtuTermination(TerminationPoint1 ontTp1) {
         for (SupportedInterfaceCapability sic : ontTp1.getTpSupportedInterfaces().getSupportedInterfaceCapability()
                 .values()) {