[sli/core/sliPlutinUtils] Adding Extra Constraint Filtering on ShortestPathCompute 03/130003/1
authordecheng zhang <decheng.zhang@huawei.com>
Thu, 21 Jul 2022 21:16:58 +0000 (17:16 -0400)
committerdecheng zhang <decheng.zhang@huawei.com>
Thu, 21 Jul 2022 21:16:58 +0000 (17:16 -0400)
Issue-ID: CCSDK-3730
Signed-off-by: decheng zhang <decheng.zhang@huawei.com>
Change-Id: I9a9899b235903c5a306edfdc155dd730a580e11d

core/sliPluginUtils/provider/src/main/java/org/onap/ccsdk/sli/core/slipluginutils/slitopologyutils/graph/DijkstraGraphSearch.java
core/sliPluginUtils/provider/src/main/java/org/onap/ccsdk/sli/core/slipluginutils/slitopologyutils/graph/Edge.java
core/sliPluginUtils/provider/src/main/java/org/onap/ccsdk/sli/core/slipluginutils/slitopologyutils/topology/Link.java
core/sliPluginUtils/provider/src/main/java/org/onap/ccsdk/sli/core/slipluginutils/slitopologyutils/topology/LogicalLink.java
core/sliPluginUtils/provider/src/main/java/org/onap/ccsdk/sli/core/slipluginutils/slitopologyutils/topology/OtnLink.java
core/sliPluginUtils/provider/src/main/java/org/onap/ccsdk/sli/core/slipluginutils/slitopologyutils/topology/PInterface.java
core/sliPluginUtils/provider/src/test/java/org/onap/ccsdk/sli/core/slipluginutils/SliTopologyUtilsTest.java

index 1161134..23b34f8 100644 (file)
@@ -332,6 +332,7 @@ public class DijkstraGraphSearch<V extends Vertex, E extends Edge<V>> {
 
                 // If the vertex is reachable, relax all its egress edges.
                 for (E e : graph.getEdgesFrom(nearest)) {
+                    if (!e.isPermitted(src, dst)) continue;
                     result.relaxEdge(e, cost, weigher, true);
                 }
             }
index b178072..cf96e7d 100644 (file)
@@ -16,4 +16,10 @@ public interface Edge<V extends Vertex> {
      */
     V dst();
 
+    /**
+     * Returns true if edge is permissable
+     */
+    default boolean isPermitted(V src, V dst){
+        return true;
+    }
 }
index 47b43e8..9a9c957 100644 (file)
@@ -32,6 +32,15 @@ public class LogicalLink implements Edge<Pnf> {
         return dst;
     }
 
+    @Override
+    public boolean isPermitted(Pnf src, Pnf dst) {
+        String curSrcName = src().toString();
+        String curDstName = dst().toString();
+        return link.isInnerDomain()
+                || !curSrcName.equals(src.toString()) && !curDstName.equals(dst.toString())
+                && !curSrcName.equals(dst.toString()) && !curDstName.equals(src.toString());
+    }
+
     @Override
     public int hashCode() {
         return link.hashCode();
index 553a9bd..6a0fe3c 100644 (file)
@@ -29,6 +29,7 @@ public class OtnLink implements Link{
         return linkName;
     }
 
+    @Override
     public boolean isInnerDomain(){
         if (src != null && dst != null){
             if (src.pInterfaceName() != null && dst.pInterfaceName() != null){
index 6b11187..20aee11 100644 (file)
@@ -16,6 +16,10 @@ public class PInterface {
         return pInterfaceName;
     }
 
+    public String pnfName() {
+        return pnfName;
+    }
+
     @Override
     public int hashCode(){
         return Objects.hash(pnfName, pInterfaceName);
index 5937e23..2a009fe 100644 (file)
@@ -56,10 +56,10 @@ public class SliTopologyUtilsTest {
         param.put("pnfs-pfx", "ccsdkTopopnfs");
         param.put("links-pfx", "ccsdkTopologicalLinks");
         param.put("response-pfx", "prefix");
-        param.put("output-end-to-end-path", "false");
+        param.put("output-end-to-end-path", "true");
 
-        param.put("src-node","networkId-providerId-30-clientId-0-topologyId-1-nodeId-10.3.1.1" );
-        param.put("dst-node", "networkId-providerId-50-clientId-0-topologyId-1-nodeId-10.5.1.4");
+        param.put("src-node","networkId-providerId-30-clientId-0-topologyId-1-nodeId-10.3.1.3" );
+        param.put("dst-node", "networkId-providerId-50-clientId-0-topologyId-1-nodeId-10.5.1.2");
 
         SliTopologyUtils.computePath(param, ctx);
         //SliPluginUtils.logContextMemory(ctx, LOG, SliPluginUtils.LogLevel.INFO);