Fix CI Cent OS 8 configuration issue (workaround)
[transportpce.git] / pce / src / main / java / org / opendaylight / transportpce / pce / graph / PostAlgoPathValidator.java
index 56186777dce03378ff5167ec5273091a8de82ed0..3d3f1b692c657ea47b044b3ec22aeeca241e2615 100644 (file)
@@ -61,9 +61,11 @@ public class PostAlgoPathValidator {
 
     private Double tpceCalculatedMargin = 0.0;
     private final NetworkTransactionService networkTransactionService;
 
     private Double tpceCalculatedMargin = 0.0;
     private final NetworkTransactionService networkTransactionService;
+    private final BitSet spectrumConstraint;
 
 
-    public PostAlgoPathValidator(NetworkTransactionService networkTransactionService) {
+    public PostAlgoPathValidator(NetworkTransactionService networkTransactionService, BitSet spectrumConstraint) {
         this.networkTransactionService = networkTransactionService;
         this.networkTransactionService = networkTransactionService;
+        this.spectrumConstraint = spectrumConstraint;
     }
 
     @SuppressWarnings("fallthrough")
     }
 
     @SuppressWarnings("fallthrough")
@@ -345,7 +347,6 @@ public class PostAlgoPathValidator {
                     .getAvailableTribSlots()
                     .get(edge.link().getDestTP().getValue());
             List<Uint16> commonEdgeTsPoolList = new ArrayList<>();
                     .getAvailableTribSlots()
                     .get(edge.link().getDestTP().getValue());
             List<Uint16> commonEdgeTsPoolList = new ArrayList<>();
-            List<Uint16> tribSlotList = new ArrayList<>();
             for (Uint16 integer : srcTsPool) {
                 if (destTsPool.contains(integer)) {
                     commonEdgeTsPoolList.add(integer);
             for (Uint16 integer : srcTsPool) {
                 if (destTsPool.contains(integer)) {
                     commonEdgeTsPoolList.add(integer);
@@ -360,6 +361,7 @@ public class PostAlgoPathValidator {
             }
             Collections.sort(commonGoodStartEdgeTsPoolList);
             boolean goodTsList = false;
             }
             Collections.sort(commonGoodStartEdgeTsPoolList);
             boolean goodTsList = false;
+            List<Uint16> tribSlotList = new ArrayList<>();
             for (Uint16 goodStartTsPool : commonGoodStartEdgeTsPoolList) {
                 int goodStartIndex = commonEdgeTsPoolList.indexOf(Uint16.valueOf(goodStartTsPool.intValue()));
                 if (!goodTsList && commonEdgeTsPoolList.size() - goodStartIndex >= nbSlot) {
             for (Uint16 goodStartTsPool : commonGoodStartEdgeTsPoolList) {
                 int goodStartIndex = commonEdgeTsPoolList.indexOf(Uint16.valueOf(goodStartTsPool.intValue()));
                 if (!goodTsList && commonEdgeTsPoolList.size() - goodStartIndex >= nbSlot) {
@@ -424,7 +426,6 @@ public class PostAlgoPathValidator {
                 "pwrIn", Double.valueOf(-60.0),
                 "pwrOut", Double.valueOf(-60.0)));
         double calcOnsrdB = 0;
                 "pwrIn", Double.valueOf(-60.0),
                 "pwrOut", Double.valueOf(-60.0)));
         double calcOnsrdB = 0;
-        double margin = 0;
         boolean transponderPresent = false;
         List<String> vertices = path.getVertexList();
         List<PceGraphEdge> edges = path.getEdgeList();
         boolean transponderPresent = false;
         List<String> vertices = path.getVertexList();
         List<PceGraphEdge> edges = path.getEdgeList();
@@ -541,6 +542,7 @@ public class PostAlgoPathValidator {
                     LOG.error("PostAlgoPathValidator.CheckOSNR : unsupported resource type in the path chain");
             }
         }
                     LOG.error("PostAlgoPathValidator.CheckOSNR : unsupported resource type in the path chain");
             }
         }
+        double margin = 0;
         PceNode currentNode = allPceNodes.get(new NodeId(vertices.get(vertices.size() - 1)));
         LOG.debug("loop of check OSNR, Path Element = {}", vertices.size() - 1);
         switch (currentNode.getORNodeType()) {
         PceNode currentNode = allPceNodes.get(new NodeId(vertices.get(vertices.size() - 1)));
         LOG.debug("loop of check OSNR, Path Element = {}", vertices.size() - 1);
         switch (currentNode.getORNodeType()) {
@@ -628,7 +630,6 @@ public class PostAlgoPathValidator {
                 "pwrIn", Double.valueOf(-60.0),
                 "pwrOut", Double.valueOf(-60.0)));
         double calcOnsrdB = 0;
                 "pwrIn", Double.valueOf(-60.0),
                 "pwrOut", Double.valueOf(-60.0)));
         double calcOnsrdB = 0;
-        double margin = 0;
         boolean transponderPresent = false;
         List<String> vertices = path.getVertexList();
         List<PceGraphEdge> edges = path.getEdgeList();
         boolean transponderPresent = false;
         List<String> vertices = path.getVertexList();
         List<PceGraphEdge> edges = path.getEdgeList();
@@ -743,6 +744,7 @@ public class PostAlgoPathValidator {
                     LOG.error("PostAlgoPathValidator.CheckOSNR : unsupported resource type in the path chain");
             }
         }
                     LOG.error("PostAlgoPathValidator.CheckOSNR : unsupported resource type in the path chain");
             }
         }
+        double margin = 0;
         PceNode currentNode = allPceNodes.get(new NodeId(vertices.get(0)));
         LOG.debug("loop of check OSNR direction ZA: Path Element = 0");
         switch (currentNode.getORNodeType()) {
         PceNode currentNode = allPceNodes.get(new NodeId(vertices.get(0)));
         LOG.debug("loop of check OSNR direction ZA: Path Element = 0");
         switch (currentNode.getORNodeType()) {
@@ -1048,6 +1050,10 @@ public class PostAlgoPathValidator {
                 pceNode.getNodeId(), pceNodeVersion, sltWdthGran, ctralFreqGran);
             isFlexGrid = false;
         }
                 pceNode.getNodeId(), pceNodeVersion, sltWdthGran, ctralFreqGran);
             isFlexGrid = false;
         }
+        if (spectrumConstraint != null) {
+            result.and(spectrumConstraint);
+        }
+
         LOG.debug("Bitset result {}", result);
         return computeBestSpectrumAssignment(result, spectralWidthSlotNumber, isFlexGrid);
     }
         LOG.debug("Bitset result {}", result);
         return computeBestSpectrumAssignment(result, spectralWidthSlotNumber, isFlexGrid);
     }