OpenConfig BGP ODL extensions - new revision 24/40424/2
authorMilos Fabian <milfabia@cisco.com>
Thu, 16 Jun 2016 07:14:42 +0000 (09:14 +0200)
committerRobert Varga <nite@hq.sk>
Thu, 16 Jun 2016 14:57:25 +0000 (14:57 +0000)
Introduces new revision of ODL extension for
OpenConfig BGP:
-renamed AFI/SAFI identities to follow naming convention of
buil-in types.
-added augmentations to support add-path in BGP and Neighbor
AFI/SAFI configuration

Change-Id: I5c074d4e1d671c5982d331d6dffa99f92e64444b
Signed-off-by: Milos Fabian <milfabia@cisco.com>
bgp/openconfig-api/src/main/yang/bgp-openconfig-extensions.yang
bgp/openconfig-impl/src/main/java/org/opendaylight/protocol/bgp/openconfig/impl/util/OpenConfigUtil.java
bgp/openconfig-impl/src/test/java/org/opendaylight/protocol/bgp/openconfig/impl/openconfig/BGPGlobalProviderImplTest.java
bgp/openconfig-impl/src/test/java/org/opendaylight/protocol/bgp/openconfig/impl/openconfig/BGPNeighborProviderImplTest.java

index e45185404578e2ea9ff503c786994bbde89349b9..6b6390d358c6854a610f0ef0570db1f4fd72c733 100644 (file)
@@ -3,7 +3,7 @@ module bgp-openconfig-extensions {
     namespace "urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions";
     prefix "odl-oc-ext";
 
-    import openconfig-bgp-types { prefix bgp-types; revision-date 2015-10-09; }
+    import openconfig-bgp-types { prefix bgp-types; }
     import openconfig-network-instance { prefix netinst; }
     import openconfig-bgp { prefix openconfig-bgp; }
 
@@ -21,33 +21,59 @@ module bgp-openconfig-extensions {
         accompanies this distribution, and is available at
         http://www.eclipse.org/legal/epl-v10.html";
 
+    revision 2016-06-14 {
+        description
+            "Update to follow naming conventions.";
+    }
+
     revision 2015-09-30 {
         description "Initial revision";
     }
 
-    identity ipv4-flow {
+    identity IPV4-FLOW {
         base bgp-types:afi-safi-type;
         description
           "IPv4 Flow specification (AFI,SAFI = 1,133)";
         reference "https://tools.ietf.org/html/rfc5575";
     }
 
-    identity ipv6-flow {
+    identity IPV6-FLOW {
         base bgp-types:afi-safi-type;
         description
           "IPv6 Flow specification (AFI,SAFI = 2,133)";
         reference "https://tools.ietf.org/html/draft-ietf-idr-flow-spec-v6-06";
     }
 
-    identity linkstate {
+    identity IPV6-L3VPN-FLOW {
+        base bgp-types:afi-safi-type;
+        description
+          "IPv6 Flow specification (AFI,SAFI = 2,133)";
+        reference "https://tools.ietf.org/html/draft-ietf-idr-flow-spec-v6-06";
+    }
+
+    identity IPV4-L3VPN-FLOW {
+        base bgp-types:afi-safi-type;
+        description
+          "IPv6 Flow specification (AFI,SAFI = 2,133)";
+        reference "https://tools.ietf.org/html/rfc5575";
+    }
+
+    identity LINKSTATE {
         base bgp-types:afi-safi-type;
         description
           "Link-State (AFI,SAFI = 16388,71)";
-        reference "https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-03";
+        reference "https://tools.ietf.org/html/rfc7752";
     }
 
     augment /netinst:network-instances/netinst:network-instance/netinst:protocols/netinst:protocol {
-        uses openconfig-bgp:bgp-top;
+        uses openconfig-bgp:bgp-top {
+            augment bgp/neighbors/neighbor/afi-safis/afi-safi {
+                uses openconfig-bgp:bgp-neighbor-add-paths_config;
+            }
+            augment bgp/global/afi-safis/afi-safi {
+                uses openconfig-bgp:bgp-neighbor-add-paths_config;
+            }
+        }
     }
 
 }
index 7050a4ba28dec5cc8b6fc5e29b9032c70400d911..9b8ddfac582ee90a3793a95b8d4f54b40f38f0fc 100644 (file)
@@ -37,17 +37,21 @@ import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.IPV6UNICAST;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.L2VPNEVPN;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.L3VPNIPV4UNICAST;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.L3VPNIPV6UNICAST;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev160321.EvpnSubsequentAddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev160321.L2vpnAddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev150807.FlowspecL3vpnSubsequentAddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev150807.FlowspecSubsequentAddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev150525.LabeledUnicastSubsequentAddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.LinkstateAddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.LinkstateSubsequentAddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.BgpTableType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.mp.capabilities.add.path.capability.AddressFamilies;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev150930.Ipv4Flow;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev150930.Ipv6Flow;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev150930.Linkstate;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev160614.IPV4FLOW;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev160614.IPV4L3VPNFLOW;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev160614.IPV6FLOW;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev160614.IPV6L3VPNFLOW;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev160614.LINKSTATE;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv6AddressFamily;
@@ -70,9 +74,12 @@ public final class OpenConfigUtil {
         b.put(new BgpTableTypeImpl(Ipv4AddressFamily.class, LabeledUnicastSubsequentAddressFamily.class), IPV4LABELLEDUNICAST.class);
         b.put(new BgpTableTypeImpl(Ipv6AddressFamily.class, LabeledUnicastSubsequentAddressFamily.class), IPV6LABELLEDUNICAST.class);
         b.put(new BgpTableTypeImpl(Ipv4AddressFamily.class, MplsLabeledVpnSubsequentAddressFamily.class), L3VPNIPV4UNICAST.class);
-        b.put(new BgpTableTypeImpl(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class), Linkstate.class);
-        b.put(new BgpTableTypeImpl(Ipv4AddressFamily.class, FlowspecSubsequentAddressFamily.class), Ipv4Flow.class);
-        b.put(new BgpTableTypeImpl(Ipv6AddressFamily.class, FlowspecSubsequentAddressFamily.class), Ipv6Flow.class);
+        b.put(new BgpTableTypeImpl(Ipv6AddressFamily.class, MplsLabeledVpnSubsequentAddressFamily.class), L3VPNIPV6UNICAST.class);
+        b.put(new BgpTableTypeImpl(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class), LINKSTATE.class);
+        b.put(new BgpTableTypeImpl(Ipv4AddressFamily.class, FlowspecSubsequentAddressFamily.class), IPV4FLOW.class);
+        b.put(new BgpTableTypeImpl(Ipv6AddressFamily.class, FlowspecSubsequentAddressFamily.class), IPV6FLOW.class);
+        b.put(new BgpTableTypeImpl(Ipv4AddressFamily.class, FlowspecL3vpnSubsequentAddressFamily.class), IPV4L3VPNFLOW.class);
+        b.put(new BgpTableTypeImpl(Ipv6AddressFamily.class, FlowspecL3vpnSubsequentAddressFamily.class), IPV6L3VPNFLOW.class);
         b.put(new BgpTableTypeImpl(L2vpnAddressFamily.class, EvpnSubsequentAddressFamily.class), L2VPNEVPN.class);
         TABLETYPE_TO_AFISAFI = b.build();
     }
index 3bc50cf243e9e4a2782868f882241cc834de5872..4c5ba13e05d319ee4c6252004f10a091d78261c1 100644 (file)
@@ -37,7 +37,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.LinkstateAddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev150210.LinkstateSubsequentAddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.BgpTableType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev150930.Linkstate;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev160614.LINKSTATE;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.bgp.rib.impl.rev160330.RibImpl;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.modules.ModuleKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -72,7 +72,7 @@ public class BGPGlobalProviderImplTest {
                 Collections.singletonList(new PeerGroupBuilder().setPeerGroupName("application-peers").build())).build());
         final Global global = new GlobalBuilder()
             .setAfiSafis(
-                    new AfiSafisBuilder().setAfiSafi(Collections.singletonList(new AfiSafiBuilder().setAfiSafiName(Linkstate.class).build())).build())
+                    new AfiSafisBuilder().setAfiSafi(Collections.singletonList(new AfiSafiBuilder().setAfiSafiName(LINKSTATE.class).build())).build())
             .setConfig(new ConfigBuilder().setRouterId(new Ipv4Address("1.2.3.4")).setAs(new AsNumber(1L)).build())
             .build();
         bgpBuilder.setGlobal(global);
index 506b7c93da992fababb9532e697dfefeaa81e7d7..41cb3bd6806b45436b0f938b707ee8e6dc2f7f53 100644 (file)
@@ -41,8 +41,8 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 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.bgp.flowspec.rev150807.FlowspecSubsequentAddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.BgpTableType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev150930.Ipv4Flow;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev150930.Ipv6Flow;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev160614.IPV4FLOW;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev160614.IPV6FLOW;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.PeerRole;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv6AddressFamily;
@@ -87,7 +87,7 @@ public class BGPNeighborProviderImplTest {
             IP, PORT, TIMER, role, active,
             Lists.<BgpTableType>newArrayList(new BgpTableTypeImpl(Ipv6AddressFamily.class, FlowspecSubsequentAddressFamily.class)),
             AS, Optional.<Rfc2385Key>absent()));
-        final Neighbor expectedNeighbor = createNeighbor(Lists.<AfiSafi>newArrayList(new AfiSafiBuilder().setAfiSafiName(Ipv6Flow.class).build()),
+        final Neighbor expectedNeighbor = createNeighbor(Lists.<AfiSafi>newArrayList(new AfiSafiBuilder().setAfiSafiName(IPV6FLOW.class).build()),
             IP, null, AS, PeerType.INTERNAL, role, TIMER, !active);
         assertEquals(expectedNeighbor, neighbor);
     }
@@ -100,7 +100,7 @@ public class BGPNeighborProviderImplTest {
             IP, PORT, TIMER, role, active,
             Lists.<BgpTableType>newArrayList(new BgpTableTypeImpl(Ipv6AddressFamily.class, FlowspecSubsequentAddressFamily.class)),
             AS, Optional.of(new Rfc2385Key(PASSWORD)) ));
-        final Neighbor expectedNeighbor = createNeighbor(Lists.<AfiSafi>newArrayList(new AfiSafiBuilder().setAfiSafiName(Ipv6Flow.class).build()),
+        final Neighbor expectedNeighbor = createNeighbor(Lists.<AfiSafi>newArrayList(new AfiSafiBuilder().setAfiSafiName(IPV6FLOW.class).build()),
             IP, PASSWORD, AS, PeerType.EXTERNAL, role, TIMER, !active);
         assertEquals(expectedNeighbor, neighbor);
     }
@@ -113,7 +113,7 @@ public class BGPNeighborProviderImplTest {
             IP, PORT, TIMER, role, active,
             Lists.<BgpTableType>newArrayList(new BgpTableTypeImpl(Ipv4AddressFamily.class, FlowspecSubsequentAddressFamily.class)),
             AS, Optional.of(new Rfc2385Key(PASSWORD)) ));
-        final Neighbor expectedNeighbor = createNeighbor(Lists.<AfiSafi>newArrayList(new AfiSafiBuilder().setAfiSafiName(Ipv4Flow.class).build()),
+        final Neighbor expectedNeighbor = createNeighbor(Lists.<AfiSafi>newArrayList(new AfiSafiBuilder().setAfiSafiName(IPV4FLOW.class).build()),
             IP, PASSWORD, AS, null, role, TIMER, !active);
         assertEquals(expectedNeighbor, neighbor);
     }