HC2VPP-349: use fib-table-list-ref in the proxy-arp model 13/13313/2
authorMarek Gradzki <[email protected]>
Mon, 2 Jul 2018 06:36:39 +0000 (08:36 +0200)
committerMarek Gradzki <[email protected]>
Mon, 2 Jul 2018 07:31:01 +0000 (09:31 +0200)
User is now required to explicitly configure FIB tables
using vpp-fib-management module.

The patch also adds non-default vrf configuration example
to the proxy-arp postman collection.

Change-Id: I8cbdf0add8992bfb0a6a8fe0a38d6a466d5951f0
Signed-off-by: Marek Gradzki <[email protected]>
l3/api/pom.xml
l3/api/src/main/yang/[email protected] [moved from l3/api/src/main/yang/[email protected] with 84% similarity]
l3/impl/proxy_arp_postman_collection.json
l3/impl/src/main/java/io/fd/hc2vpp/l3/write/factory/ProxyArpWriterFactory.java
l3/impl/src/main/java/io/fd/hc2vpp/l3/write/ipv4/ProxyArpCustomizer.java
l3/impl/src/main/java/io/fd/hc2vpp/l3/write/ipv4/ProxyRangeCustomizer.java
l3/impl/src/test/java/io/fd/hc2vpp/l3/write/ProxyArpCustomizerTest.java
l3/impl/src/test/java/io/fd/hc2vpp/l3/write/ProxyRangeCustomizerTest.java

index 3388ec6..188e8ba 100644 (file)
             <groupId>org.opendaylight.mdsal.model</groupId>
             <artifactId>yang-ext</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.fd.hc2vpp.fib.management</groupId>
+            <artifactId>fib-management-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
     </dependencies>
 </project>
\ No newline at end of file
similarity index 84%
rename from l3/api/src/main/yang/[email protected]
rename to l3/api/src/main/yang/[email protected]
index 3fa1595..dc4caf2 100644 (file)
@@ -12,6 +12,10 @@ module proxy-arp {
   import yang-ext {
     prefix "ext";
   }
+  import vpp-fib-table-management {
+    prefix fib-management;
+    revision-date 2018-05-21;
+  }
 
   organization
     "FD.io - The Fast Data Project";
@@ -38,6 +42,13 @@ module proxy-arp {
      See the License for the specific language governing permissions and
      limitations under the License.";
 
+  revision "2018-07-02" {
+    description
+      "Uses references to vrf-management module insted of table identifiers.";
+    reference
+      "https://jira.fd.io/browse/HC2VPP-317";
+  }
+
   revision "2017-03-15" {
     description "Initial revision of proxy ARP model for VPP";
   }
@@ -46,7 +57,7 @@ module proxy-arp {
     list proxy-range {
       key "vrf-id low-addr high-addr";
       leaf vrf-id {
-        type uint32;
+        type fib-management:fib-table-list-ref;
       }
       leaf low-addr {
         type inet:ipv4-address;
index 4b14799..be64b11 100644 (file)
@@ -1,7 +1,7 @@
 {
        "info": {
-               "_postman_id": "1a5e64fa-9e35-4696-b268-8b96a294d7e4",
-               "name": "Hc2vpp: proxy Arp",
+               "_postman_id": "e4d8a86d-b9ff-4d85-b620-c59b513b8b04",
+               "name": "Hc2vpp: Proxy Arp",
                "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
        },
        "item": [
                                                "1.1.1.10"
                                        ]
                                },
-                               "description": "Equivalent of\n\nvppctl set ip arp proxy 1.1.1.1 - 1.1.1.10\n\nCan be verified with\n\nvppctl show ip arp"
+                               "description": "Equivalent of\n\nvppctl set ip arp proxy 1.1.1.1 - 1.1.1.10 fib-id 1\n\nCan be verified with\n\nvppctl show ip arp"
+                       },
+                       "response": []
+               },
+               {
+                       "name": "Create IPv4 Table (id=1)",
+                       "request": {
+                               "method": "PUT",
+                               "header": [
+                                       {
+                                               "key": "Content-Type",
+                                               "value": "application/json"
+                                       },
+                                       {
+                                               "key": "Authorization",
+                                               "value": "Basic YWRtaW46YWRtaW4="
+                                       }
+                               ],
+                               "body": {
+                                       "mode": "raw",
+                                       "raw": "{\n    \"vpp-fib-table-management:table\": [\n        {\n            \"table-id\": 1,\n            \"address-family\": \"vpp-fib-table-management:ipv4\"\n        }\n    ]\n}"
+                               },
+                               "url": {
+                                       "raw": "http://localhost:8183/restconf/config/vpp-fib-table-management:fib-table-management/vpp-fib-table-management:fib-tables/table/1/vpp-fib-table-management:ipv4",
+                                       "protocol": "http",
+                                       "host": [
+                                               "localhost"
+                                       ],
+                                       "port": "8183",
+                                       "path": [
+                                               "restconf",
+                                               "config",
+                                               "vpp-fib-table-management:fib-table-management",
+                                               "vpp-fib-table-management:fib-tables",
+                                               "table",
+                                               "1",
+                                               "vpp-fib-table-management:ipv4"
+                                       ]
+                               },
+                               "description": "Equivalent of\n\nvppctl ip table add 1\n\nCan be verified with\n\nvppctl show ip fib"
                        },
                        "response": []
                },
                                ],
                                "body": {
                                        "mode": "raw",
-                                       "raw": "{\r\n    \"proxy-range\":{\r\n    \t\"vrf-id\":\"0\",\r\n    \t\"low-addr\":\"2.2.2.2\",\r\n    \t\"high-addr\":\"2.2.2.42\"\r\n    }\r\n}"
+                                       "raw": "{\r\n    \"proxy-range\":{\r\n    \t\"vrf-id\":\"1\",\r\n    \t\"low-addr\":\"2.2.2.2\",\r\n    \t\"high-addr\":\"2.2.2.42\"\r\n    }\r\n}"
                                },
                                "url": {
-                                       "raw": "http://localhost:8183/restconf/config/proxy-arp:proxy-ranges/proxy-range/0/2.2.2.2/2.2.2.42",
+                                       "raw": "http://localhost:8183/restconf/config/proxy-arp:proxy-ranges/proxy-range/1/2.2.2.2/2.2.2.42",
                                        "protocol": "http",
                                        "host": [
                                                "localhost"
                                                "config",
                                                "proxy-arp:proxy-ranges",
                                                "proxy-range",
-                                               "0",
+                                               "1",
                                                "2.2.2.2",
                                                "2.2.2.42"
                                        ]
index 14999f8..dd1b514 100644 (file)
@@ -29,10 +29,10 @@ import io.fd.honeycomb.translate.write.registry.ModifiableWriterRegistryBuilder;
 import io.fd.vpp.jvpp.core.future.FutureJVppCore;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev170315.ProxyArpInterfaceAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev170315.ProxyRanges;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev170315.interfaces._interface.ProxyArp;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev170315.proxy.ranges.ProxyRange;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev180702.ProxyArpInterfaceAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev180702.ProxyRanges;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev180702.interfaces._interface.ProxyArp;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev180702.proxy.ranges.ProxyRange;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 public final class ProxyArpWriterFactory implements WriterFactory {
index 7c506e9..cb1e244 100644 (file)
@@ -26,7 +26,7 @@ import io.fd.vpp.jvpp.core.dto.ProxyArpIntfcEnableDisable;
 import io.fd.vpp.jvpp.core.future.FutureJVppCore;
 import javax.annotation.Nonnull;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev170315.interfaces._interface.ProxyArp;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev180702.interfaces._interface.ProxyArp;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
index 942dc20..c26f2ab 100644 (file)
@@ -29,8 +29,8 @@ import io.fd.vpp.jvpp.core.types.ProxyArp;
 import java.net.InetAddress;
 import java.util.concurrent.Future;
 import javax.annotation.Nonnull;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev170315.proxy.ranges.ProxyRange;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev170315.proxy.ranges.ProxyRangeKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev180702.proxy.ranges.ProxyRange;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev180702.proxy.ranges.ProxyRangeKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -64,7 +64,7 @@ public class ProxyRangeCustomizer extends FutureJVppCustomizer
         throws WriteFailedException {
         final InetAddress srcAddress = InetAddresses.forString(proxyArp.getLowAddr().getValue());
         final InetAddress dstAddress = InetAddresses.forString(proxyArp.getHighAddr().getValue());
-        final int vrfId = proxyArp.getVrfId().intValue();
+        final int vrfId = proxyArp.getVrfId().getValue().intValue();
         return getFutureJVpp().proxyArpAddDel(
             getProxyArpConfRequest(operation, srcAddress.getAddress(), dstAddress.getAddress(), vrfId))
             .toCompletableFuture();
index 366d181..1ad360f 100644 (file)
@@ -32,8 +32,8 @@ import org.junit.Test;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev170315.ProxyArpInterfaceAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev170315.interfaces._interface.ProxyArp;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev180702.ProxyArpInterfaceAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev180702.interfaces._interface.ProxyArp;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 public class ProxyArpCustomizerTest extends WriterCustomizerTest implements ByteDataTranslator {
index 307e938..9e8fd6d 100644 (file)
@@ -30,10 +30,11 @@ import io.fd.vpp.jvpp.core.types.ProxyArp;
 import org.junit.Test;
 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.Ipv4AddressNoZone;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev170315.ProxyRanges;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev170315.proxy.ranges.ProxyRange;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev170315.proxy.ranges.ProxyRangeBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev170315.proxy.ranges.ProxyRangeKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.fib.table.management.rev180521.VniReference;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev180702.ProxyRanges;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev180702.proxy.ranges.ProxyRange;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev180702.proxy.ranges.ProxyRangeBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev180702.proxy.ranges.ProxyRangeKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
 
@@ -47,7 +48,7 @@ public class ProxyRangeCustomizerTest extends WriterCustomizerTest implements By
     public void setUpTest() throws Exception {
         final Ipv4Address highAddr = new Ipv4AddressNoZone("10.1.1.2");
         final Ipv4Address lowAddr = new Ipv4AddressNoZone("10.1.1.1");
-        final long vrfId = 123;
+        final VniReference vrfId = new VniReference(123L);
         IID = InstanceIdentifier.create(ProxyRanges.class)
             .child(ProxyRange.class, new ProxyRangeKey(highAddr, lowAddr, vrfId));
         RANGE = new ProxyRangeBuilder().setVrfId(vrfId).setHighAddr(highAddr).setLowAddr(new Ipv4AddressNoZone(lowAddr))