Graph: add Multi-Topology support 61/101861/8
authorOlivier Dugeon <olivier.dugeon@orange.com>
Wed, 20 Jul 2022 16:28:47 +0000 (18:28 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 29 Jul 2022 18:21:06 +0000 (20:21 +0200)
Graph supports IPv4 or IPv6 topology but with IS-IS Multi-Topology
it is possible to advertise both IPv4 and IPv6 topologies. Recent
versions of BGP-LS speaker also support this Multi-Topology.
This patch changes the Graph yang model (including the revision date)
to handle IPv4 and IPv6 simultaneously on Edges and Vertices for
IS-IS Multi-Topology.

JIRA: BGPCEP-1010
Change-Id: Icfcf9e8a27f5f9d3fd9a928dba8d3adffaf8de50
Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
31 files changed:
algo/algo-api/src/main/java/org/opendaylight/algo/PathComputationAlgorithm.java
algo/algo-api/src/main/yang/path-computation.yang
algo/algo-impl/src/main/java/org/opendaylight/algo/impl/AbstractPathComputation.java
algo/algo-impl/src/main/java/org/opendaylight/algo/impl/ConstrainedShortestPathFirst.java
algo/algo-impl/src/main/java/org/opendaylight/algo/impl/PathComputationServer.java
algo/algo-impl/src/main/java/org/opendaylight/algo/impl/Samcra.java
algo/algo-impl/src/main/java/org/opendaylight/algo/impl/ShortestPathFirst.java
bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/LinkstateGraphBuilder.java
docs/graph/graph-user-guide-graph-model.rst
graph/graph-api/src/main/java/org/opendaylight/graph/ConnectedEdge.java
graph/graph-api/src/main/java/org/opendaylight/graph/ConnectedEdgeTrigger.java
graph/graph-api/src/main/java/org/opendaylight/graph/ConnectedGraph.java
graph/graph-api/src/main/java/org/opendaylight/graph/ConnectedGraphProvider.java
graph/graph-api/src/main/java/org/opendaylight/graph/ConnectedGraphTrigger.java
graph/graph-api/src/main/java/org/opendaylight/graph/ConnectedVertex.java
graph/graph-api/src/main/java/org/opendaylight/graph/ConnectedVertexTrigger.java
graph/graph-api/src/main/yang/graph.yang
graph/graph-impl/src/main/java/org/opendaylight/graph/impl/ConnectedEdgeImpl.java
graph/graph-impl/src/main/java/org/opendaylight/graph/impl/ConnectedGraphImpl.java
graph/graph-impl/src/main/java/org/opendaylight/graph/impl/ConnectedGraphServer.java
graph/graph-impl/src/main/java/org/opendaylight/graph/impl/ConnectedVertexImpl.java
graph/graph-impl/src/main/java/org/opendaylight/graph/impl/GraphListener.java
pcep/server/server-api/src/main/java/org/opendaylight/bgpcep/pcep/server/PceServerProvider.java
pcep/server/server-provider/src/main/java/org/opendaylight/bgpcep/pcep/server/provider/DefaultPceServerProvider.java
pcep/server/server-provider/src/main/java/org/opendaylight/bgpcep/pcep/server/provider/ManagedTePath.java
pcep/server/server-provider/src/main/java/org/opendaylight/bgpcep/pcep/server/provider/PathComputationImpl.java
pcep/server/server-provider/src/main/java/org/opendaylight/bgpcep/pcep/server/provider/PathManagerProvider.java
pcep/server/server-provider/src/main/java/org/opendaylight/bgpcep/pcep/server/provider/PcepTopologyListener.java
pcep/topology/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/PCEPTopologyConfiguration.java
pcep/topology/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/ServerSessionManager.java
pcep/topology/topology-provider/src/test/java/org/opendaylight/bgpcep/pcep/topology/provider/AbstractPCEPSessionTest.java

index 97ac2b55b3d3c03ce483530e75fd96fc45e90c53..eeed03fc2a53e20074f66bf17c7e2d76eeca57ef 100644 (file)
@@ -9,7 +9,7 @@
 package org.opendaylight.algo;
 
 import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.VertexKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.VertexKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.ConstrainedPath;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.PathConstraints;
 
index 36ea34b02ec711de1ca51f7d4b0811c77def0cc9..59f031d8169744238d2d2cea65336c5587c2ed0b 100644 (file)
@@ -4,7 +4,7 @@ module path-computation {
     prefix "algo";
 
     import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
-    import graph { prefix gr; revision-date 2019-11-25; }
+    import graph { prefix gr; revision-date 2022-07-20; }
 
     organization "Orange";
     contact "Olivier Dugeon <olivier.dugeon@orange.com>";
index 21dad91773988179120c9d067a222f787a708466..cffbc7cbdccbc34c0ea03426a85ac266b00de099 100644 (file)
@@ -19,10 +19,10 @@ import org.opendaylight.graph.ConnectedVertex;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.edge.EdgeAttributes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.edge.attributes.UnreservedBandwidth;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Prefix;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.VertexKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.edge.EdgeAttributes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.edge.attributes.UnreservedBandwidth;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Prefix;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.VertexKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.concepts.rev131125.MplsLabel;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.AddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.ComputationStatus;
@@ -119,13 +119,13 @@ public abstract class AbstractPathComputation implements PathComputationAlgorith
         /* Check that Edge belongs to the Address Family of the requested path */
         switch (constraints.getAddressFamily()) {
             case Ipv4:
-                if (attributes.getRemoteAddress() == null || attributes.getRemoteAddress().getIpv4Address() == null) {
+                if (attributes.getRemoteAddress() == null) {
                     LOG.debug("No Ipv4 address");
                     return true;
                 }
                 break;
             case Ipv6:
-                if (attributes.getRemoteAddress() == null || attributes.getRemoteAddress().getIpv6Address() == null) {
+                if (attributes.getRemoteAddress6() == null) {
                     LOG.debug("No Ipv6 address");
                     return true;
                 }
@@ -136,7 +136,7 @@ public abstract class AbstractPathComputation implements PathComputationAlgorith
                     return true;
                 }
                 if (attributes.getAdjSid() == null) {
-                    LOG.debug("No Adjacency-SID");
+                    LOG.debug("No SR Adjacency-SID for IPv4");
                     return true;
                 }
                 break;
@@ -145,8 +145,8 @@ public abstract class AbstractPathComputation implements PathComputationAlgorith
                     LOG.debug("No Node-SID for IPv6");
                     return true;
                 }
-                if (attributes.getAdjSid() == null) {
-                    LOG.debug("No SR Adjacency-SID");
+                if (attributes.getAdjSid6() == null) {
+                    LOG.debug("No SR Adjacency-SID for IPv6");
                     return true;
                 }
                 break;
@@ -243,10 +243,10 @@ public abstract class AbstractPathComputation implements PathComputationAlgorith
             case SrIpv4:
                 for (int i = 0; i < xro.size(); i++) {
                     final Ipv4Address address = xro.get(i).getIpv4();
-                    if (address.equals(attributes.getRemoteAddress().getIpv4Address())
-                            || address.equals(attributes.getLocalAddress().getIpv4Address())
-                            || address.equals(edge.getSource().getVertex().getRouterId().getIpv4Address())
-                            || address.equals(edge.getDestination().getVertex().getRouterId().getIpv4Address())) {
+                    if (address.equals(attributes.getRemoteAddress())
+                            || address.equals(attributes.getLocalAddress())
+                            || address.equals(edge.getSource().getVertex().getRouterId())
+                            || address.equals(edge.getDestination().getVertex().getRouterId())) {
                         return true;
                     }
                 }
@@ -255,10 +255,10 @@ public abstract class AbstractPathComputation implements PathComputationAlgorith
             case SrIpv6:
                 for (int i = 0; i < xro.size(); i++) {
                     final Ipv6Address address = xro.get(i).getIpv6();
-                    if (address.equals(attributes.getRemoteAddress().getIpv6Address())
-                            || address.equals(attributes.getLocalAddress().getIpv6Address())
-                            || address.equals(edge.getSource().getVertex().getRouterId().getIpv6Address())
-                            || address.equals(edge.getDestination().getVertex().getRouterId().getIpv6Address())) {
+                    if (address.equals(attributes.getRemoteAddress6())
+                            || address.equals(attributes.getLocalAddress6())
+                            || address.equals(edge.getSource().getVertex().getRouterId6())
+                            || address.equals(edge.getDestination().getVertex().getRouterId6())) {
                         return true;
                     }
                 }
@@ -427,28 +427,28 @@ public abstract class AbstractPathComputation implements PathComputationAlgorith
             switch (constraints.getAddressFamily()) {
                 case Ipv4:
                     pathDesc = new PathDescriptionBuilder()
-                            .setIpv4(edge.getEdge().getEdgeAttributes().getLocalAddress().getIpv4Address())
-                            .setRemoteIpv4(edge.getEdge().getEdgeAttributes().getRemoteAddress().getIpv4Address())
+                            .setIpv4(edge.getEdge().getEdgeAttributes().getLocalAddress())
+                            .setRemoteIpv4(edge.getEdge().getEdgeAttributes().getRemoteAddress())
                             .build();
                     break;
                 case Ipv6:
                     pathDesc = new PathDescriptionBuilder()
-                            .setIpv6(edge.getEdge().getEdgeAttributes().getLocalAddress().getIpv6Address())
-                            .setRemoteIpv6(edge.getEdge().getEdgeAttributes().getRemoteAddress().getIpv6Address())
+                            .setIpv6(edge.getEdge().getEdgeAttributes().getLocalAddress6())
+                            .setRemoteIpv6(edge.getEdge().getEdgeAttributes().getRemoteAddress6())
                             .build();
                     break;
                 case SrIpv4:
                     pathDesc = new PathDescriptionBuilder()
-                            .setIpv4(edge.getEdge().getEdgeAttributes().getLocalAddress().getIpv4Address())
-                            .setRemoteIpv4(edge.getEdge().getEdgeAttributes().getRemoteAddress().getIpv4Address())
+                            .setIpv4(edge.getEdge().getEdgeAttributes().getLocalAddress())
+                            .setRemoteIpv4(edge.getEdge().getEdgeAttributes().getRemoteAddress())
                             .setSid(edge.getEdge().getEdgeAttributes().getAdjSid())
                             .build();
                     break;
                 case SrIpv6:
                     pathDesc = new PathDescriptionBuilder()
-                            .setIpv6(edge.getEdge().getEdgeAttributes().getLocalAddress().getIpv6Address())
-                            .setRemoteIpv6(edge.getEdge().getEdgeAttributes().getRemoteAddress().getIpv6Address())
-                            .setSid(edge.getEdge().getEdgeAttributes().getAdjSid())
+                            .setIpv6(edge.getEdge().getEdgeAttributes().getLocalAddress6())
+                            .setRemoteIpv6(edge.getEdge().getEdgeAttributes().getRemoteAddress6())
+                            .setSid(edge.getEdge().getEdgeAttributes().getAdjSid6())
                             .build();
                     break;
                 default:
index 3615aeb32c4bf5feed183267836990ecaaa24a0e..5905a3ed233532931b085674443fe879e7986153 100644 (file)
@@ -11,7 +11,7 @@ import java.util.HashMap;
 import java.util.List;
 import org.opendaylight.graph.ConnectedEdge;
 import org.opendaylight.graph.ConnectedGraph;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.VertexKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.VertexKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.ComputationStatus;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.ConstrainedPath;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.ConstrainedPathBuilder;
index f54fc9b9ff2872f44b3cd5f1e66b52607012fd77..f5707883ebad641eac5f45021d415de3d922e557 100644 (file)
@@ -18,7 +18,7 @@ import org.opendaylight.algo.PathComputationProvider;
 import org.opendaylight.graph.ConnectedGraph;
 import org.opendaylight.graph.ConnectedGraphProvider;
 import org.opendaylight.mdsal.binding.api.RpcProviderService;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.VertexKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.VertexKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.AlgorithmType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.ComputationStatus;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.ConstrainedPath;
index 35ed348b45f938eed7cd503ab5d491c239d24037..26fac22f40776cfea2c58cf36f6109d699871821 100644 (file)
@@ -13,8 +13,8 @@ import java.util.List;
 import org.opendaylight.graph.ConnectedEdge;
 import org.opendaylight.graph.ConnectedGraph;
 import org.opendaylight.graph.ConnectedVertex;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.Delay;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.VertexKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.Delay;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.VertexKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.ComputationStatus;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.ConstrainedPath;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.ConstrainedPathBuilder;
index 7a389883c9c884f70418eed9b8a008f03e0807f3..0e8b3ffb0be898e75d4628782db59f55fe7e09c8 100644 (file)
@@ -11,7 +11,7 @@ import java.util.HashMap;
 import java.util.List;
 import org.opendaylight.graph.ConnectedEdge;
 import org.opendaylight.graph.ConnectedGraph;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.VertexKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.VertexKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.ComputationStatus;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.ConstrainedPath;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.ConstrainedPathBuilder;
index 1cbd7be2290752226a01f910695f72f3b56cf925..31546701704f6a3b05099baf548f988edd6d1678 100644 (file)
@@ -23,7 +23,6 @@ import org.opendaylight.mdsal.binding.api.DataTreeModification;
 import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
 import org.opendaylight.protocol.bgp.rib.RibReference;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.Ipv4InterfaceIdentifier;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.Ipv6InterfaceIdentifier;
@@ -51,33 +50,33 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.link
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.node.identifier.c.router.identifier.OspfNodeCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.Attributes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.Tables;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev200120.adj.flags.flags.isis.adj.flags._case.IsisAdjFlags;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev200120.adj.flags.flags.ospf.adj.flags._case.OspfAdjFlags;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev200120.adj.flags.flags.IsisAdjFlagsCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev200120.adj.flags.flags.OspfAdjFlagsCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev200120.prefix.sid.tlv.flags.IsisPrefixFlagsCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev200120.sid.label.index.SidLabelIndex;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev200120.sid.label.index.sid.label.index.LocalLabelCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev200120.sid.label.index.sid.label.index.SidCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.DecimalBandwidth;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.Delay;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.Loss;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.Vertex.VertexType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.edge.EdgeAttributes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.edge.EdgeAttributesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.edge.attributes.MinMaxDelay;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.edge.attributes.MinMaxDelayBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.edge.attributes.UnreservedBandwidth;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.edge.attributes.UnreservedBandwidthBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.edge.attributes.UnreservedBandwidthKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.Graph.DomainScope;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Edge;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.EdgeBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.EdgeKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Prefix;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.PrefixBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Vertex;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.VertexBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.VertexKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.vertex.SrgbBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.DecimalBandwidth;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.Delay;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.Loss;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.Vertex.VertexType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.edge.EdgeAttributes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.edge.EdgeAttributesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.edge.attributes.MinMaxDelay;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.edge.attributes.MinMaxDelayBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.edge.attributes.UnreservedBandwidth;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.edge.attributes.UnreservedBandwidthBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.edge.attributes.UnreservedBandwidthKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.Graph.DomainScope;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Edge;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.EdgeBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.EdgeKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Prefix;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.PrefixBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Vertex;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.VertexBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.VertexKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.vertex.SrgbBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.concepts.rev131125.Bandwidth;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.types.rev160524.TopologyTypes1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.types.rev160524.bgp.linkstate.topology.type.BgpLinkstateTopologyBuilder;
@@ -209,24 +208,24 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
     /**
      * Determine the Source Edge Key from the link descriptor.
      * There is several case: IPv4, IPv6 address or Unnumbered Interface.
+     * For Multi-Topology i.e. IPv4 + IPv6, Edge Key is build from IPv4 address.
      *
      * @param linkCase The Link part of the Linkstate route
      *
      * @return Unique key
      */
     private static Uint64 getEdgeId(final LinkCase linkCase) {
-        Uint64 key = Uint64.ZERO;
         final LinkDescriptors linkDescriptors = linkCase.getLinkDescriptors();
         if (linkDescriptors.getIpv4InterfaceAddress() != null) {
-            key = ipv4ToKey(linkDescriptors.getIpv4InterfaceAddress());
+            return ipv4ToKey(linkDescriptors.getIpv4InterfaceAddress());
         }
         if (linkDescriptors.getIpv6InterfaceAddress() != null) {
-            key = ipv6ToKey(linkDescriptors.getIpv6InterfaceAddress());
+            return ipv6ToKey(linkDescriptors.getIpv6InterfaceAddress());
         }
         if (linkDescriptors.getLinkLocalIdentifier() != null) {
-            key = linkDescriptors.getLinkLocalIdentifier().toUint64();
+            return linkDescriptors.getLinkLocalIdentifier().toUint64();
         }
-        return key;
+        return Uint64.ZERO;
     }
 
     /**
@@ -268,13 +267,13 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
 
         /*
          * Add corresponding Prefix for the Local Address. Remote address will be added with the remote Edge */
-        final var localAddress = edge.getEdgeAttributes().getLocalAddress();
+        final var attr = edge.getEdgeAttributes();
         PrefixBuilder prefBuilder = new PrefixBuilder().setVertexId(srcId);
-        if (localAddress.getIpv4Address() != null) {
-            prefBuilder.setPrefix(new IpPrefix(IetfInetUtil.INSTANCE.ipv4PrefixFor(localAddress.getIpv4Address())));
+        if (attr.getLocalAddress() != null) {
+            prefBuilder.setPrefix(new IpPrefix(IetfInetUtil.INSTANCE.ipv4PrefixFor(attr.getLocalAddress())));
         }
-        if (localAddress.getIpv6Address() != null) {
-            prefBuilder.setPrefix(new IpPrefix(IetfInetUtil.INSTANCE.ipv6PrefixFor(localAddress.getIpv6Address())));
+        if (attr.getLocalAddress6() != null) {
+            prefBuilder.setPrefix(new IpPrefix(IetfInetUtil.INSTANCE.ipv6PrefixFor(attr.getLocalAddress6())));
         }
         Prefix prefix = prefBuilder.build();
 
@@ -296,16 +295,16 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
         EdgeAttributesBuilder builder = new EdgeAttributesBuilder();
 
         if (linkDesc.getIpv4InterfaceAddress() != null) {
-            builder.setLocalAddress(new IpAddress(linkDesc.getIpv4InterfaceAddress()));
+            builder.setLocalAddress(linkDesc.getIpv4InterfaceAddress());
         }
         if (linkDesc.getIpv6InterfaceAddress() != null) {
-            builder.setLocalAddress(new IpAddress(linkDesc.getIpv6InterfaceAddress()));
+            builder.setLocalAddress6(linkDesc.getIpv6InterfaceAddress());
         }
         if (linkDesc.getIpv4NeighborAddress() != null) {
-            builder.setRemoteAddress(new IpAddress(linkDesc.getIpv4NeighborAddress()));
+            builder.setRemoteAddress(linkDesc.getIpv4NeighborAddress());
         }
         if (linkDesc.getIpv6NeighborAddress() != null) {
-            builder.setRemoteAddress(new IpAddress(linkDesc.getIpv6NeighborAddress()));
+            builder.setRemoteAddress6(linkDesc.getIpv6NeighborAddress());
         }
         if (linkDesc.getLinkLocalIdentifier() != null) {
             builder.setLocalIdentifier(linkDesc.getLinkLocalIdentifier());
@@ -374,16 +373,27 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
         for (SrAdjIds adj : la.nonnullSrAdjIds()) {
             if (adj.getSidLabelIndex() instanceof LocalLabelCase) {
                 boolean backup = false;
-                if (adj.getFlags() instanceof OspfAdjFlags) {
-                    backup = ((OspfAdjFlags) adj.getFlags()).getBackup();
+                boolean ipv6 = false;
+                if (adj.getFlags() instanceof OspfAdjFlagsCase) {
+                    backup = ((OspfAdjFlagsCase) adj.getFlags()).getOspfAdjFlags().getBackup();
                 }
-                if (adj.getFlags() instanceof IsisAdjFlags) {
-                    backup = ((IsisAdjFlags) adj.getFlags()).getBackup();
+                if (adj.getFlags() instanceof IsisAdjFlagsCase) {
+                    backup = ((IsisAdjFlagsCase) adj.getFlags()).getIsisAdjFlags().getBackup();
+                    ipv6 = ((IsisAdjFlagsCase) adj.getFlags()).getIsisAdjFlags().getAddressFamily();
                 }
+                final Uint32 adjSid = ((LocalLabelCase) adj.getSidLabelIndex()).getLocalLabel().getValue();
                 if (!backup) {
-                    builder.setAdjSid(((LocalLabelCase) adj.getSidLabelIndex()).getLocalLabel().getValue());
+                    if (!ipv6) {
+                        builder.setAdjSid(adjSid);
+                    } else {
+                        builder.setAdjSid6(adjSid);
+                    }
                 } else {
-                    builder.setBackupAdjSid(((LocalLabelCase) adj.getSidLabelIndex()).getLocalLabel().getValue());
+                    if (!ipv6) {
+                        builder.setBackupAdjSid(adjSid);
+                    } else {
+                        builder.setBackupAdjSid6(adjSid);
+                    }
                 }
             }
         }
@@ -425,10 +435,10 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
     private static Vertex getVertex(final NodeAttributes na, final Uint64 id, final Uint32 as) {
         VertexBuilder builder = new VertexBuilder().setVertexId(id).setAsn(as);
         if (na.getIpv4RouterId() != null) {
-            builder.setRouterId(new IpAddress(na.getIpv4RouterId()));
+            builder.setRouterId(na.getIpv4RouterId());
         }
         if (na.getIpv6RouterId() != null) {
-            builder.setRouterId(new IpAddress(na.getIpv6RouterId()));
+            builder.setRouterId6(na.getIpv6RouterId());
         }
         /*
          * Set Router Name with dynamic hostname (IS-IS) or IPv4 address in dot decimal format (OSPF)
index 8930d9bd8fe2a671e987b3f88ec88e6d9f5a32fa..55980f63f4fff69867ca6b39b8690ff8284b3f3a 100644 (file)
@@ -96,7 +96,8 @@ The yand model for the Graph is as follow:
                 +--rw vertex* [vertex-id]
                 |  +--rw vertex-id      uint64
                 |  +--rw name?          string
-                |  +--rw router-id?     inet:ip-address
+                |  +--rw router-id?     inet:ipv4-address
+                |  +--rw router-id6?    inet:ipv6-address
                 |  +--rw vertex-type?   enumeration
                 |  +--rw srgb
                 |  |  +--rw lower-bound?   uint32
@@ -111,8 +112,10 @@ The yand model for the Graph is as follow:
                 |     +--rw metric?                    uint32
                 |     +--rw te-metric?                 uint32
                 |     +--rw admin-group?               uint32
-                |     +--rw local-address?             inet:ip-address
-                |     +--rw remote-address?            inet:ip-address
+                |     +--rw local-address?             inet:ipv4-address
+                |     +--rw remote-address?            inet:ipv4-address
+                |     +--rw local-address6?            inet:ipv6-address
+                |     +--rw remote-address6?           inet:ipv6-address
                 |     +--rw local-identifier?          uint32
                 |     +--rw remote-identifier?         uint32
                 |     +--rw max-link-bandwidth?        decimal-bandwidth
@@ -131,6 +134,8 @@ The yand model for the Graph is as follow:
                 |     +--rw utilized-bandwidth?        decimal-bandwidth
                 |     +--rw adj-sid?                   uint32
                 |     +--rw backup-adj-sid?            uint32
+                |     +--rw adj-sid6?                  uint32
+                |     +--rw backup-adj-sid6?           uint32
                 |     +--rw srlgs*                     uint32
                 +--rw prefix* [prefix]
                 +--rw prefix        inet:ip-prefix
index 14276e3dba586f43943eba1fed6bfb4995b0cc92..b4d5cbc5d40d164f12aad7983335c4531bb653b2 100644 (file)
@@ -9,7 +9,7 @@ package org.opendaylight.graph;
 
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Edge;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Edge;
 
 /**
  * Connected Edge class is the connected version of the Edge class from the graph yang model.
index aecb82434f5d01b19bbbd66c2a7c6cadd078d686..acc3dab58a2f1ff1a5ecce44540049de22110f31 100644 (file)
@@ -8,7 +8,7 @@
 package org.opendaylight.graph;
 
 import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.Edge;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.Edge;
 
 /**
  * Connected Edge Trigger class aims to trigger action when major modification(s) take place on an Edge.
index 64375b979c6af72b80aa406c40daae0c47d01d80..8eb7ff76503d2abf04ad46df8eab41782136aa79 100644 (file)
@@ -11,12 +11,14 @@ import java.util.List;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.Graph;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Edge;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.EdgeKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Prefix;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Vertex;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.VertexKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.Graph;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Edge;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.EdgeKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Prefix;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Vertex;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.VertexKey;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
 
 /**
@@ -115,6 +117,24 @@ public interface ConnectedGraph {
      */
     ConnectedEdge getConnectedEdge(@NonNull Long key);
 
+    /**
+     * Returns the Edge associated to the given IPv4 address.
+     *
+     * @param address IPv4 address of the Edge
+     *
+     * @return Edge or null if there is no Edge associated to the given IP address in this graph
+     */
+    ConnectedEdge getConnectedEdge(Ipv4Address address);
+
+    /**
+     * Returns the Edge associated to the given IPv6 address.
+     *
+     * @param address IPv6 address of the Edge
+     *
+     * @return Edge or null if there is no Edge associated to the given IP address in this graph
+     */
+    ConnectedEdge getConnectedEdge(Ipv6Address address);
+
     /**
      * Returns the Edge associated to the given IP address.
      *
index 8f21828c40fa7d6619ee4a536687f7c58d187017..37604a1b80eae4e903f21a1ea315ba6bec23696d 100644 (file)
@@ -9,9 +9,9 @@
 package org.opendaylight.graph;
 
 import java.util.List;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.Graph;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.Graph.DomainScope;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.GraphKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.Graph;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.Graph.DomainScope;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.GraphKey;
 
 /**
  * Connected Graph Provider is a new service provided by the Graph feature to manage the Connected Graph.
index 9f3269d5d3cc9c2cbf0a5f4462a115d13e56e6c3..999fd6d6969678edf13f39f85e911bad2bda037e 100644 (file)
@@ -9,8 +9,8 @@ package org.opendaylight.graph;
 
 import java.util.Collection;
 import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.Edge;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.Vertex;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.Edge;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.Vertex;
 
 /**
  * Connected Graph Trigger class aims to trigger action when major modification(s) takes place on a Vertex or a Edge.
index 41f0ae2b1d480578d8990e061acd65e9f6735c8c..c6e1673ae5ee13d24a8ed0d0da923af06e3e2a5e 100644 (file)
@@ -9,9 +9,9 @@ package org.opendaylight.graph;
 
 import java.util.List;
 import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Edge;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Prefix;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Vertex;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Edge;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Prefix;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Vertex;
 
 /**
  * Connected Vertex class is the connected version of the Vertex class from the graph yang model.
index 56dee9b69aefeb11d18c21b0c9f26c3840d6aeb5..977fbd2d6d85d71871ead4ded6653027428202c0 100644 (file)
@@ -8,7 +8,7 @@
 package org.opendaylight.graph;
 
 import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.Vertex;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.Vertex;
 
 /**
  * Connected Vertex Trigger class aims to trigger action when major modification(s) takes place on a Vertex.
index 3b66d2620c7b46aacd69202c56d8f3a8a89ae919..70ca0e941ffae2f7b8c0b7028d1e1805681c1f39 100644 (file)
@@ -20,9 +20,15 @@ module graph {
         accompanies this distribution, and is available at
         http://www.eclipse.org/legal/epl-v10.html";
 
+    revision "2022-07-20" {
+        description
+            "Multi-Topology (IPv4 + IPv6) support";
+        reference "";
+    }
+
     revision "2019-11-25" {
         description
-             "Initial revision.";
+            "Initial revision.";
         reference "";
     }
 
@@ -63,10 +69,16 @@ module graph {
             type uint32;
         }
         leaf local-address {
-            type inet:ip-address;
+            type inet:ipv4-address;
         }
         leaf remote-address {
-            type inet:ip-address;
+            type inet:ipv4-address;
+        }
+        leaf local-address6 {
+            type inet:ipv6-address;
+        }
+        leaf remote-address6 {
+            type inet:ipv6-address;
         }
         leaf local-identifier {
             type uint32;
@@ -131,12 +143,22 @@ module graph {
             type decimal-bandwidth;
         }
         leaf adj-sid {
-            description "Segment Routing Adjacency Identifier";
+            description "Segment Routing Adjacency Identifier for IPv4";
             units "MPLS label";
             type uint32;
         }
         leaf backup-adj-sid {
-            description "Segment Routing Backup Adjacency Identifier";
+            description "Segment Routing Backup Adjacency Identifier for IPv4";
+            units "MPLS label";
+            type uint32;
+        }
+        leaf adj-sid6 {
+            description "Segment Routing Adjacency Identifier for IPv6";
+            units "MPLS label";
+            type uint32;
+        }
+        leaf backup-adj-sid6 {
+            description "Segment Routing Backup Adjacency Identifier for IPv6";
             units "MPLS label";
             type uint32;
         }
@@ -194,8 +216,12 @@ module graph {
             type string;
         }
         leaf router-id {
-            description "Global unique IP Trafic Engineering Router ID";
-            type inet:ip-address;
+            description "Global unique IPv4 Trafic Engineering Router ID";
+            type inet:ipv4-address;
+        }
+        leaf router-id6 {
+            description "Global unique IPv6 Trafic Engineering Router ID";
+            type inet:ipv6-address;
         }
         leaf vertex-type {
             type enumeration {
index 420efc7059c1d73d6ec2f542876440e38f0abd7f..f216c589bdc20433e0902af68ee486ba6300a003 100644 (file)
@@ -18,7 +18,7 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.graph.ConnectedEdge;
 import org.opendaylight.graph.ConnectedEdgeTrigger;
 import org.opendaylight.graph.ConnectedVertex;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Edge;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Edge;
 
 /**
  * This Class implements the Connected Edge used by the Connected Graph for path computation algorithms.
index 8c27a414a36db2f373f46b6168ec05224732a21d..9604591b31afa3580cf3dc1d8d3d552f10785082 100644 (file)
@@ -27,14 +27,16 @@ import org.opendaylight.graph.ConnectedVertexTrigger;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.Graph;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Edge;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.EdgeKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Prefix;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Vertex;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.VertexKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.Graph;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Edge;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.EdgeKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Prefix;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Vertex;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.VertexKey;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.common.Uint64;
@@ -212,19 +214,34 @@ public class ConnectedGraphImpl implements ConnectedGraph {
         if (address == null) {
             return null;
         }
-        Uint64 key;
         if (address.getIpv4Address() != null) {
-            key = Uint32.fromIntBits(IetfInetUtil.INSTANCE.ipv4AddressBits(address.getIpv4Address())).toUint64();
-            return getConnectedEdge(key.longValue());
+            return getConnectedEdge(address.getIpv4Address());
         }
         if (address.getIpv6Address() != null) {
-            final byte[] ip = IetfInetUtil.INSTANCE.ipv6AddressBytes(address.getIpv6Address());
-            key = Uint64.fromLongBits(ByteBuffer.wrap(ip, Long.BYTES, Long.BYTES).getLong());
-            return getConnectedEdge(key.longValue());
+            return getConnectedEdge(address.getIpv6Address());
         }
         return null;
     }
 
+    @Override
+    public ConnectedEdge getConnectedEdge(final Ipv4Address address) {
+        if (address == null) {
+            return null;
+        }
+        final Uint64 key = Uint32.fromIntBits(IetfInetUtil.INSTANCE.ipv4AddressBits(address)).toUint64();
+        return getConnectedEdge(key.longValue());
+    }
+
+    @Override
+    public ConnectedEdge getConnectedEdge(final Ipv6Address address) {
+        if (address == null) {
+            return null;
+        }
+        final byte[] ip = IetfInetUtil.INSTANCE.ipv6AddressBytes(address);
+        final Uint64 key = Uint64.fromLongBits(ByteBuffer.wrap(ip, Long.BYTES, Long.BYTES).getLong());
+        return getConnectedEdge(key.longValue());
+    }
+
     @Override
     public int getEdgesSize() {
         return edges.size();
index 2be0d247a8dc777fa4122396edf09940188d87c9..c441c151950b7fa751b2005ed718a15c161f9f71 100644 (file)
@@ -31,15 +31,15 @@ import org.opendaylight.mdsal.binding.api.TransactionChainListener;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.GraphTopology;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.GraphTopologyBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.Graph;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.Graph.DomainScope;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.GraphBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.GraphKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Edge;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Prefix;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Vertex;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.GraphTopology;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.GraphTopologyBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.Graph;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.Graph.DomainScope;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.GraphBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.GraphKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Edge;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Prefix;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Vertex;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.osgi.service.component.annotations.Activate;
index 6ee35360efa284325c482411a9e78008eaab1258..83ff258de9cc06aa2ff229097f1556ef6654b94e 100644 (file)
@@ -18,9 +18,9 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.graph.ConnectedEdge;
 import org.opendaylight.graph.ConnectedVertex;
 import org.opendaylight.graph.ConnectedVertexTrigger;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Edge;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Prefix;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Vertex;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Edge;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Prefix;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Vertex;
 
 /**
  * This Class implements the Connected Vertex used by the Connected Graph for path computation algorithms.
index f7c9d61c47f7de59242e08d146873ad16d9b700e..448b6fe81e4d915e64399e6074c290f01c6d74b9 100644 (file)
@@ -21,12 +21,12 @@ import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
 import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
 import org.opendaylight.mdsal.binding.api.DataTreeModification;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.GraphTopology;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.Graph;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.GraphKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Edge;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Prefix;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.Vertex;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.GraphTopology;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.Graph;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.GraphKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Edge;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Prefix;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.Vertex;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
index 72bcad1f3bf8c7d5140133638299b7fc8c5621f0..0a7842314a1ce32c41ceb04dc5a47f103e6dd146 100644 (file)
@@ -8,7 +8,7 @@
 
 package org.opendaylight.bgpcep.pcep.server;
 
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.GraphKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.GraphKey;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
 import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
index 2220cbdf49658afabf03f0d9f05822fd52761340..a8edc8217d69cf7c555c71fab8e021dfcb8df8a4 100644 (file)
@@ -22,7 +22,7 @@ import org.opendaylight.graph.ConnectedGraph;
 import org.opendaylight.graph.ConnectedGraphProvider;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.RpcConsumerRegistry;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.GraphKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.GraphKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.NetworkTopologyPcepService;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
index 68e0465b55e3826b8bc8779105ba395c8a528e21..1c0e10e3fa936c6453f3d2894c4dd3b499057455 100644 (file)
@@ -30,9 +30,9 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6AddressNoZone;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.Edge;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.Vertex;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.edge.attributes.UnreservedBandwidth;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.Edge;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.Vertex;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.edge.attributes.UnreservedBandwidth;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ieee754.rev130819.Float32;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.concepts.rev131125.Bandwidth;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.topology.rev140113.NetworkTopologyRef;
@@ -276,7 +276,7 @@ public class ManagedTePath implements ConnectedEdgeTrigger, ConnectedVertexTrigg
                         if (edgeAttrNotNull(edge)) {
                             /* Need to force using IPv6 address as Connected Edge is searched first on IPv4 address */
                             edge = graph.getConnectedEdge(new IpAddress(
-                                    edge.getEdge().getEdgeAttributes().getRemoteAddress().getIpv6Address()));
+                                    edge.getEdge().getEdgeAttributes().getRemoteAddress6()));
                         }
                     }
                     break;
index b60136f468a7ba30fcf138f8fad49c51705d1d2f..cffac39ac0eebafb5e39443e7a1db8de4d8fc735 100644 (file)
@@ -22,9 +22,9 @@ import org.opendaylight.protocol.pcep.spi.PSTUtil;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.DecimalBandwidth;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.Delay;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.graph.VertexKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.DecimalBandwidth;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.Delay;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.VertexKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.AddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.AlgorithmType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.ComputationStatus;
index 876b9c8a8a72f9c705d88155139ff1132e38c4dc..a6da0164876918a93facf87dc5d929ba491d061b 100644 (file)
@@ -26,8 +26,8 @@ import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.Transaction;
 import org.opendaylight.mdsal.binding.api.TransactionChain;
 import org.opendaylight.mdsal.binding.api.TransactionChainListener;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.Edge;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.Vertex;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.Edge;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.Vertex;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.ComputationStatus;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.server.rev220321.PathStatus;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.server.rev220321.PathType;
index 37c4deb684aa7fec49dceda868ca0e1d8e43d101..865e570d4752b967eb3e9198bd0ba5a6ce7d22dc 100644 (file)
@@ -24,8 +24,8 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.DecimalBandwidth;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.Delay;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.DecimalBandwidth;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.Delay;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.AddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.ComputationStatus;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.path.computation.rev220324.path.descriptions.PathDescription;
index 7f29e723d5de2f5b53877f0c8d2cd508d603ddd0..408b6503668d99899ee8f107213bb50f705809d3 100644 (file)
@@ -20,7 +20,7 @@ import org.opendaylight.protocol.concepts.KeyMapping;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressNoZone;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.GraphKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.GraphKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.config.rev181109.PcepNodeConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.config.rev181109.PcepTopologyTypeConfig;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
index 15869d1b4f77e85dfeec99f3aad730210620f66e..b3c5468725d46ee3a54c78db7f26a547eccdb5eb 100644 (file)
@@ -30,7 +30,7 @@ import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.protocol.pcep.PCEPSessionListenerFactory;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.GraphKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.GraphKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.PcepSessionState;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.AddLspArgs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.EnsureLspOperationalInput;
index 4d622626c084abd815a8fcb597476d500cdd9888..47853e530a33f7e73872ce5720478e2bef18462b 100644 (file)
@@ -35,7 +35,7 @@ import org.opendaylight.protocol.pcep.impl.PCEPSessionImpl;
 import org.opendaylight.protocol.util.InetSocketAddressUtil;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.GraphKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.GraphKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.explicit.route.object.Ero;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.explicit.route.object.EroBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.explicit.route.object.ero.Subobject;