Small improvement in PceGraph
[transportpce.git] / pce / src / main / java / org / opendaylight / transportpce / pce / graph / PceGraph.java
index b3dbae014e250d1bfaac3baea45cc046e5487a62..0c90ce290f3cd350867bf8006c122957a837d7d2 100644 (file)
@@ -13,17 +13,18 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-
 import org.jgrapht.GraphPath;
 import org.jgrapht.alg.shortestpath.KShortestSimplePaths;
 import org.jgrapht.alg.shortestpath.PathValidator;
 import org.jgrapht.graph.DefaultDirectedWeightedGraph;
 import org.opendaylight.transportpce.common.ResponseCodes;
+import org.opendaylight.transportpce.common.StringConstants;
 import org.opendaylight.transportpce.pce.constraints.PceConstraints;
 import org.opendaylight.transportpce.pce.networkanalyzer.PceLink;
 import org.opendaylight.transportpce.pce.networkanalyzer.PceNode;
 import org.opendaylight.transportpce.pce.networkanalyzer.PceResult;
 import org.opendaylight.transportpce.pce.networkanalyzer.PceResult.LocalCause;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -107,22 +108,31 @@ public class PceGraph {
             }
 
             shortestPathAtoZ = new ArrayList<>(pathAtoZ);
-            if (("100GE".equals(serviceType)) || ("OTU4".equals(serviceType))) {
-                LOG.info("In calcPath Path FOUND path for wl [{}], hops {}, distance per metrics {}, path AtoZ {}",
-                        pceResult.getResultWavelength(), pathAtoZ.size(), path.getWeight(), pathAtoZ);
-                break;
-            } else {
-                // Service is at OTN layer and is relying on a supporting wavelength service
-                LOG.info("In calcPath Path FOUND path for hops {}, distance per metrics {}, path AtoZ {}",
+            switch (serviceType) {
+
+                case StringConstants.SERVICE_TYPE_100GE:
+                case StringConstants.SERVICE_TYPE_OTU4:
+                    LOG.info(
+                        "In calcPath Path FOUND path for wl [{}], min Freq assignment {}, max Freq assignment {},"
+                        + " hops {}, distance per metrics {}, path AtoZ {}",
+                        pceResult.getResultWavelength(), pceResult.getMinFreq(), pceResult.getMaxFreq(),
                         pathAtoZ.size(), path.getWeight(), pathAtoZ);
-                break;
+                    break;
+
+                default:
+                    LOG.info(
+                        "In calcPath Path FOUND path for hops {}, distance per metrics {}, path AtoZ {}",
+                        pathAtoZ.size(), path.getWeight(), pathAtoZ);
+                    break;
             }
+            break;
 
         }
 
         if (shortestPathAtoZ != null) {
-            LOG.info("In calcPath CHOOSEN PATH for wl [{}], hops {}, path AtoZ {}",
-                    pceResult.getResultWavelength(), shortestPathAtoZ.size(), shortestPathAtoZ);
+            LOG.info("In calcPath CHOOSEN PATH for wl [{}], min freq {}, max freq {}, hops {}, path AtoZ {}",
+                    pceResult.getResultWavelength(), pceResult.getMinFreq(), pceResult.getMaxFreq(),
+                    shortestPathAtoZ.size(), shortestPathAtoZ);
         }
         LOG.info("In calcPath : pceResult {}", pceResult);
         return (pceResult.getStatus());
@@ -176,8 +186,10 @@ public class PceGraph {
         Iterator<Map.Entry<NodeId, PceNode>> nodes = allPceNodes.entrySet().iterator();
         while (nodes.hasNext()) {
             Map.Entry<NodeId, PceNode> node = nodes.next();
-            weightedGraph.addVertex(node.getValue().getNodeId().getValue());
-            LOG.debug("In populateWithNodes in node :  {}", node.getValue());
+            if (State.InService.equals(node.getValue().getState())) {
+                weightedGraph.addVertex(node.getValue().getNodeId().getValue());
+                LOG.debug("In populateWithNodes in node :  {}", node.getValue());
+            }
         }
     }
 
@@ -199,11 +211,12 @@ public class PceGraph {
                 if (!validateLinkforGraph(link)) {
                     continue;
                 }
+                if (State.InService.equals(link.getState())) {
+                    PceGraphEdge graphLink = new PceGraphEdge(link);
+                    weightedGraph.addEdge(link.getSourceId().getValue(), link.getDestId().getValue(), graphLink);
 
-                PceGraphEdge graphLink = new PceGraphEdge(link);
-                weightedGraph.addEdge(link.getSourceId().getValue(), link.getDestId().getValue(), graphLink);
-
-                weightedGraph.setEdgeWeight(graphLink, chooseWeight(link));
+                    weightedGraph.setEdgeWeight(graphLink, chooseWeight(link));
+                }
             }
         }
         return true;
@@ -220,8 +233,8 @@ public class PceGraph {
             case PropagationDelay :
                 weight = link.getLatency();
                 LOG.debug("In PceGraph PropagationDelay is used as a metrics. {}", link);
-                if ((("1GE".equals(serviceType)) || ("10GE".equals(serviceType)) || ("ODU4".equals(serviceType)))
-                        && (weight == 0)) {
+                if ((weight == 0)
+                        && ("1GE".equals(serviceType) || "10GE".equals(serviceType) || "ODU4".equals(serviceType))) {
                     LOG.warn("PropagationDelay set as metric, but latency is null: is latency set for OTN link {}?",
                         link);
                 }