summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHongjun Ni <hongjun.ni@intel.com>2016-06-01 01:23:46 +0800
committerHongjun Ni <hongjun.ni@intel.com>2016-06-02 00:56:11 +0800
commitf1da426ffcd61fc4b498dfa4192c0cde19b552e2 (patch)
tree7b4ff29f06d67e3fa91162aa10c4477cb46dfeff
parente78326418cc149f7c90827b3d0be49eaeca54dae (diff)
HONEYCOMB-71: Add VxLAN-GPE feature
Patchset 3: Add Vxlan-gpe requests in postman_rest_collection.json Patchset 2: Fix the indent issue. Change-Id: If42b667f60a3591efc4b79353d78935277f8fb4d Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
-rw-r--r--v3po/api/src/main/yang/v3po.yang55
-rw-r--r--v3po/postman_rest_collection.json493
-rw-r--r--v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/translate/v3po/initializers/InterfacesInitializer.java19
-rw-r--r--v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/VxlanGpeCustomizer.java191
-rw-r--r--v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/translate/v3po/interfacesstate/VxlanGpeCustomizer.java141
-rw-r--r--v3po/v3po2vpp/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/v3po2vpp/rev160406/InterfacesHoneycombWriterModule.java6
-rw-r--r--v3po/v3po2vpp/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/v3po2vpp/rev160406/InterfacesStateHoneycombReaderModule.java7
7 files changed, 690 insertions, 222 deletions
diff --git a/v3po/api/src/main/yang/v3po.yang b/v3po/api/src/main/yang/v3po.yang
index 2ebb24f9a..c1210a923 100644
--- a/v3po/api/src/main/yang/v3po.yang
+++ b/v3po/api/src/main/yang/v3po.yang
@@ -100,6 +100,26 @@ module v3po {
}
}
+ identity vxlan-gpe-tunnel {
+ base if:interface-type;
+ }
+
+ typedef vxlan-gpe-vni {
+ description "VNI used in a VXLAN-GPE tunnel";
+ type uint32 {
+ range "0..16777215";
+ }
+ }
+
+ typedef vxlan-gpe-next-protocol {
+ type enumeration {
+ enum ipv4;
+ enum ipv6;
+ enum ethernet;
+ enum nsh;
+ }
+ }
+
grouping bridge-domain-attributes {
leaf flood {
type boolean;
@@ -261,6 +281,30 @@ module v3po {
}
}
+ grouping vxlan-gpe-base-attributes {
+ leaf local {
+ /*mandatory true;*/
+ type inet:ip-address;
+ }
+ leaf remote {
+ /*mandatory true;*/
+ type inet:ip-address;
+ }
+ leaf vni {
+ /*mandatory true;*/
+ type vxlan-gpe-vni;
+ }
+ leaf next-protocol {
+ type vxlan-gpe-next-protocol;
+ }
+ leaf encap-vrf-id {
+ type uint32;
+ }
+ leaf decap-vrf-id {
+ type uint32;
+ }
+ }
+
grouping vlan-tag-rewrite-attributes {
leaf rewrite-operation {
type tag-rewrite-operation;
@@ -376,6 +420,12 @@ module v3po {
uses l2-attributes;
}
+
+ container vxlan-gpe {
+ when "../if:type = 'v3po:vxlan-gpe-tunnel'";
+
+ uses vxlan-gpe-base-attributes;
+ }
}
container vpp {
@@ -451,6 +501,11 @@ module v3po {
when "../if:type = 'v3po:vxlan-tunnel'";
uses vxlan-base-attributes;
}
+ container vxlan-gpe {
+ when "../if:type = 'v3po:vxlan-gpe-tunnel'";
+
+ uses vxlan-gpe-base-attributes;
+ }
container l2 {
must "(not (../if:ipv4[if:enabled = 'true']/if:address/if:ip) and " +
diff --git a/v3po/postman_rest_collection.json b/v3po/postman_rest_collection.json
index 39661ed13..6ad3a02de 100644
--- a/v3po/postman_rest_collection.json
+++ b/v3po/postman_rest_collection.json
@@ -1,97 +1,125 @@
{
- "id": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "id": "61475d83-1808-fa49-7ca6-32f701e38b19",
"name": "Honeycomb RESTCONF calls",
"description": "Common mgmt operations on VPP using Honeycomb REST interface",
"order": [
- "3db63169-6861-2620-c219-4c342a2bbcc7",
- "c8d329d3-1fc3-af2b-48f5-0cf385d809f7",
- "9d4e619c-6a09-5b83-5f9a-a753d83ab34a",
- "f3822b78-f031-d4db-5f9a-1a15e1b69e82",
- "6ffdf6e3-5ec5-ecf0-3da0-74c3969124f1",
- "e3f9de11-4c5b-bc82-ca10-e7aed4832831",
- "d40b0462-07ff-6a9b-4784-759d04d4bae3",
- "b33405c7-38c2-c3d8-72b5-02098d95e5f5",
- "d29faea5-ca20-7de0-b67b-f20bac4340a2",
- "98f82cf8-fd6d-67bd-3894-e435663b34c4"
+ "1ff26126-1cfe-898f-f068-cbeecd0c3366",
+ "c2b623b7-7110-3f81-1f73-482eca7bb41e",
+ "eeeb8b70-d222-6d9a-6521-1e16bf8db401",
+ "f19bf50c-b847-a7a0-cabe-31b2cf23b745",
+ "fce0239b-0d55-5578-e216-51a7a0f57cc4",
+ "0405ec33-82d8-4183-fcd7-6201d8eeb48f",
+ "7b848cbb-b41b-8855-8d8a-8438a415e5ad",
+ "bc3ade2a-51de-cb6d-f2c1-ee0598a8cb8a",
+ "be7a6dc3-144e-be00-76e5-34395f8eb76f",
+ "84f9c4e9-f5d9-7e73-a95d-b657c7c9b24f"
],
"folders": [
{
- "id": "a23b89ae-1545-01a6-519a-5705b001691f",
+ "id": "4ff8ebe4-bd44-681a-7093-9422424099b1",
"name": "TAP",
"description": "",
"order": [
- "b5f2de6a-458a-353f-ff06-b54a11dab564",
- "e0c0b5c9-dabd-3440-c402-037e99a9a292",
- "79bb5b9c-a369-1af2-3402-0a39f2e0f983",
- "56b1e071-4a09-3994-451f-5b9c8aab5400"
+ "7d71e781-31a9-3274-659d-474bdf74ed70",
+ "56f60295-995b-1ea3-9934-b81fe23545f7",
+ "77360902-d830-f4df-684a-c6c2f28111ec",
+ "d46e1911-cf84-3805-a085-2219a49a7557"
],
- "owner": "45557"
+ "owner": "652751"
},
{
- "id": "d188f806-127a-9383-5d63-49d7b79c6986",
+ "id": "0bca9dad-0798-f750-91ba-cc6ff8f277d5",
"name": "VHOST",
"description": "",
"order": [
- "a22ce9b1-777b-cbcf-4e42-55b850d7e5a1",
- "4be9909c-f2e1-a5f3-36e5-f98d34be86d3",
- "ca3fd773-8d38-7017-cee8-4688bc08f8ba"
+ "95a948ed-5345-939b-280c-74f97920343e",
+ "d14a1086-43f2-f595-5c20-cba8b8f6a992",
+ "2e8634e0-4272-9b06-e237-7748437be978"
],
- "owner": "45557"
+ "owner": "652751"
},
{
- "id": "c9d44561-8ad1-b987-31b5-5545a259ca14",
+ "id": "ba52e764-f1ec-b1cc-747f-54681ed93859",
"name": "VLAN",
"description": "",
"order": [
- "c546e0f5-e18f-f6b5-9dfc-de6bc0da785f",
- "5d423f40-847d-dc07-0c5b-6036fe190c85",
- "adc51817-69b3-5d40-6060-696b5ebda2a8",
- "ac9d34bc-b4fe-8cf3-a30c-3507e86d8b96",
- "3102a92d-4091-217e-31c9-868c905b6ec0"
+ "a4d647b9-b951-c775-2cf4-d193cd5f2c04",
+ "c543d2d7-6e40-e8a3-ee37-330a9335b002",
+ "2e550aeb-f33b-b947-f2e1-807062bd0271",
+ "65f944f8-e9a8-c418-7eaf-b5efa8923efe",
+ "4d88cf6f-8cfd-f101-9b98-0bec8f1531a1"
],
- "owner": "45557",
+ "owner": "652751",
"collectionId": "e9ba4e80-fb4d-1eae-07e7-97b323164130"
},
{
- "id": "fc251f0e-7d4a-83f5-7af2-95d21873e7cb",
+ "id": "e89467a0-a016-7da6-0adf-2fbc1f45687e",
+ "name": "VXLAN-GPE-TUNNEL",
+ "description": "",
+ "order": [
+ "a7a7c0f3-4dea-09f5-8c28-be3d7e084331",
+ "6cc428c7-72c2-35c5-5232-3d378d906557"
+ ],
+ "owner": "652751"
+ },
+ {
+ "id": "f8061658-c931-5f3c-c119-857c8b1508b1",
"name": "VXLAN-TUNNEL",
"description": "",
"order": [
- "2081bf9a-d623-f209-8984-6e11c0a57e85",
- "02debd5e-6603-edf3-9c95-f6bde5070ba8"
+ "2b2b62dc-5530-971e-c6d5-03afd3fcbf0a",
+ "f0faabc8-eab8-bb4d-1042-b45716ecb155"
],
- "owner": "45557"
+ "owner": "652751"
}
],
"timestamp": 1460119141419,
- "owner": "45557",
- "remoteLink": "https://www.getpostman.com/collections/2395f06a7925d901710a",
+ "owner": "652751",
+ "remoteLink": "",
"public": false,
"requests": [
{
- "id": "02debd5e-6603-edf3-9c95-f6bde5070ba8",
+ "id": "0405ec33-82d8-4183-fcd7-6201d8eeb48f",
"headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/vxlanTun1",
+ "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/local0",
"preRequestScript": "",
"pathVariables": {},
- "method": "DELETE",
+ "method": "PUT",
"data": [],
"dataMode": "raw",
"version": 2,
"tests": "",
"currentHelper": "normal",
- "helperAttributes": "{}",
- "time": 1462892071867,
- "name": "Delete virtual ifc - cfg",
+ "helperAttributes": {},
+ "time": 1460540047356,
+ "name": "Enable local0 interface - cfg",
"description": "",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "folder": "fc251f0e-7d4a-83f5-7af2-95d21873e7cb",
- "timestamp": null,
- "rawModeData": ""
+ "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"local0\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"v3po:ethernet\": {\r\n \"mtu\": 64\r\n }\r\n }\r\n ]\r\n \r\n}"
+ },
+ {
+ "id": "1ff26126-1cfe-898f-f068-cbeecd0c3366",
+ "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
+ "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/",
+ "preRequestScript": "",
+ "pathVariables": {},
+ "method": "GET",
+ "data": [],
+ "dataMode": "raw",
+ "version": 2,
+ "tests": "",
+ "currentHelper": "normal",
+ "helperAttributes": {},
+ "time": 1460539962712,
+ "name": "List ifcs - cfg",
+ "description": "List ifcs - cfg",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
+ "responses": [],
+ "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}"
},
{
- "id": "2081bf9a-d623-f209-8984-6e11c0a57e85",
+ "id": "2b2b62dc-5530-971e-c6d5-03afd3fcbf0a",
"headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
"url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/vxlanTun1",
"preRequestScript": "",
@@ -103,142 +131,141 @@
"tests": "",
"currentHelper": "normal",
"helperAttributes": {},
- "time": 1462891972310,
+ "time": 1464767860505,
"name": "Add virtual ifc - cfg",
"description": "",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"vxlanTun1\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"v3po:vxlan-tunnel\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"routing\" : {\r\n \"vrf-id\" : \"0\"\r\n },\r\n \"vxlan\" : {\r\n \"src\" : \"192.168.1.6\",\r\n \"dst\" : \"192.168.1.9\",\r\n \"vni\" : \"88\",\r\n \"encap-vrf-id\" : \"0\"\r\n }\r\n }\r\n ]\r\n \r\n}",
- "folder": "fc251f0e-7d4a-83f5-7af2-95d21873e7cb"
+ "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"vxlanTun1\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"v3po:vxlan-tunnel\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"routing\" : {\r\n \"vrf-id\" : \"0\"\r\n },\r\n \"vxlan\" : {\r\n \"src\" : \"192.168.1.6\",\r\n \"dst\" : \"192.168.1.9\",\r\n \"vni\" : \"88\",\r\n \"encap-vrf-id\" : \"0\"\r\n }\r\n }\r\n ]\r\n \r\n}"
},
{
- "id": "3102a92d-4091-217e-31c9-868c905b6ec0",
+ "id": "2e550aeb-f33b-b947-f2e1-807062bd0271",
"headers": "Content-Type: application/json\nAuthorization: Basic YWRtaW46YWRtaW4=\n",
- "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/GigabitEthernet0%2F9%2F0.10/v3po:l2/vlan-tag-rewrite",
+ "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/GigabitEthernet0%2F9%2F0.10",
"preRequestScript": "",
"pathVariables": {},
- "method": "DELETE",
+ "method": "PUT",
"data": [],
"dataMode": "raw",
"version": 2,
"tests": "",
"currentHelper": "normal",
"helperAttributes": {},
- "time": 1463400417797,
- "name": "Disable tag rewrite - cfg",
- "description": "Corresponds to invoking:\n\nvppctl set interface l2 tag-rewrite GigabitEthernet0/9/0.10 disable\n\nTo verify invoke:\n\nvppctl show bridge-domain [bd_id] detail",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "time": 1463140928036,
+ "name": "Add vlan to bridge domain eth - cfg",
+ "description": "Adds l2 interconnection of bridge-based type to GigabitEthernet0/9/0.10 interface\n\nTo verify invoke:\n\nvppctl show bridge-domain [bd_id] detail",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "rawModeData": "",
- "folder": "c9d44561-8ad1-b987-31b5-5545a259ca14"
+ "folder": "ba52e764-f1ec-b1cc-747f-54681ed93859",
+ "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"GigabitEthernet0/9/0.10\",\n \"description\": \"sub interface for testing purposes\",\n \"type\": \"v3po:sub-interface\",\n \"enabled\": \"false\",\n \"sub-interface\" : {\n \"super-interface\": \"GigabitEthernet0/9/0\",\n \"identifier\": \"10\",\n \"exact-match\": {}\n },\n \"v3po:l2\": {\n \"bridge-domain\": \"testBD\",\n \"split-horizon-group\": \"0\",\n \"bridged-virtual-interface\": \"false\"\n }\n }\n ]\n}"
},
{
- "id": "3db63169-6861-2620-c219-4c342a2bbcc7",
+ "id": "2e8634e0-4272-9b06-e237-7748437be978",
"headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/",
+ "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/vhost1",
"preRequestScript": "",
"pathVariables": {},
- "method": "GET",
+ "method": "DELETE",
"data": [],
"dataMode": "raw",
"version": 2,
"tests": "",
"currentHelper": "normal",
- "helperAttributes": {},
- "time": 1460539962712,
- "name": "List ifcs - cfg",
- "description": "List ifcs - cfg",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "helperAttributes": "{}",
+ "time": 1462891488523,
+ "name": "Delete vhost user ifc - cfg",
+ "description": "Deletes vhost user interface.\nCorresponding vpp CLI command:\n\nvppctl delete vhost-user sw_if_index [index]\n\nTo verify invoke:\n\nvppctl show vhost-user\n\nor\n\nvppctl show int",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}"
+ "folder": "0bca9dad-0798-f750-91ba-cc6ff8f277d5",
+ "rawModeData": "",
+ "descriptionFormat": null
},
{
- "id": "4be9909c-f2e1-a5f3-36e5-f98d34be86d3",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/vhost1",
+ "id": "4d88cf6f-8cfd-f101-9b98-0bec8f1531a1",
+ "headers": "Content-Type: application/json\nAuthorization: Basic YWRtaW46YWRtaW4=\n",
+ "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/GigabitEthernet0%2F9%2F0.10/v3po:l2/vlan-tag-rewrite",
"preRequestScript": "",
"pathVariables": {},
- "method": "PUT",
+ "method": "DELETE",
"data": [],
"dataMode": "raw",
"version": 2,
"tests": "",
"currentHelper": "normal",
"helperAttributes": {},
- "time": 1462891483790,
- "name": "Modify vhost user ifc - cfg",
- "description": "Modifies vhost-user interface socket.\nTo verify invoke:\n\nvppctl show vhost-user",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "time": 1463400417797,
+ "name": "Disable tag rewrite - cfg",
+ "description": "Corresponds to invoking:\n\nvppctl set interface l2 tag-rewrite GigabitEthernet0/9/0.10 disable\n\nTo verify invoke:\n\nvppctl show bridge-domain [bd_id] detail",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"vhost1\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"v3po:vhost-user\",\r\n \"enabled\": \"true\",\r\n \"vhost-user\" : {\r\n \"socket\": \"/tmp/soc2\",\r\n \"role\": \"server\"\r\n }\r\n }\r\n ]\r\n \r\n}",
- "folder": "d188f806-127a-9383-5d63-49d7b79c6986"
+ "rawModeData": "",
+ "folder": "ba52e764-f1ec-b1cc-747f-54681ed93859"
},
{
- "id": "56b1e071-4a09-3994-451f-5b9c8aab5400",
+ "id": "56f60295-995b-1ea3-9934-b81fe23545f7",
"headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
"url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/tapp2",
"preRequestScript": "",
"pathVariables": {},
- "method": "DELETE",
+ "method": "PUT",
"data": [],
"dataMode": "raw",
"version": 2,
"tests": "",
"currentHelper": "normal",
"helperAttributes": {},
- "time": 1462796994090,
- "name": "Delete complex tap ifc - cfg",
+ "time": 1462796722186,
+ "name": "Add complex tap ifc - cfg",
"description": "",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "rawModeData": "",
- "folder": "a23b89ae-1545-01a6-519a-5705b001691f"
+ "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"tapp2\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"v3po:tap\",\r\n \"tap\" :{\r\n \"tap-name\" : \"tapp2\",\r\n \"mac\" : \"00:ff:ff:ff:ff:ff\",\r\n \"device-instance\" : 55\r\n }\r\n }\r\n ]\r\n \r\n}",
+ "folder": "4ff8ebe4-bd44-681a-7093-9422424099b1"
},
{
- "id": "5d423f40-847d-dc07-0c5b-6036fe190c85",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
+ "id": "65f944f8-e9a8-c418-7eaf-b5efa8923efe",
+ "headers": "Content-Type: application/json\nAuthorization: Basic YWRtaW46YWRtaW4=\n",
"url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/GigabitEthernet0%2F9%2F0.10",
- "pathVariables": {},
"preRequestScript": "",
- "method": "GET",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "pathVariables": {},
+ "method": "PUT",
"data": [],
"dataMode": "raw",
- "name": "Get sub interface - cfg",
- "description": "",
- "descriptionFormat": "html",
- "time": 1463139741935,
"version": 2,
- "responses": [],
"tests": "",
"currentHelper": "normal",
"helperAttributes": {},
- "folder": "c9d44561-8ad1-b987-31b5-5545a259ca14",
- "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"GigabitEthernet0/9/0.10\",\r\n \"description\": \"sub interface for testing purposes\",\r\n \"type\": \"v3po:sub-interface\",\r\n \"enabled\": \"false\",\r\n \"sub-interface\" : {\r\n \"super-interface\": \"GigabitEthernet0/9/0\",\r\n \"identifier\": \"10\",\r\n \"exact-match\": {}\r\n }\r\n }\r\n ]\r\n \r\n}"
+ "time": 1463140942520,
+ "name": "Set tag rewrite pop 1 - cfg",
+ "description": "Corresponds to invoking:\n\nvppctl set interface l2 tag-rewrite GigabitEthernet0/9/0.10 pop 1\n\nTo verify invoke:\n\nvppctl show bridge-domain [bd_id] detail",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
+ "responses": [],
+ "folder": "ba52e764-f1ec-b1cc-747f-54681ed93859",
+ "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"GigabitEthernet0/9/0.10\",\n \"description\": \"sub interface for testing purposes\",\n \"type\": \"v3po:sub-interface\",\n \"enabled\": \"false\",\n \"sub-interface\" : {\n \"super-interface\": \"GigabitEthernet0/9/0\",\n \"identifier\": \"10\",\n \"exact-match\": {}\n },\n \"v3po:l2\": {\n \"bridge-domain\": \"testBD\",\n \"split-horizon-group\": \"0\",\n \"bridged-virtual-interface\": \"false\",\n \"vlan-tag-rewrite\" : {\n \"rewrite-operation\": \"pop-1\"\n }\n }\n }\n ]\n}"
},
{
- "id": "6ffdf6e3-5ec5-ecf0-3da0-74c3969124f1",
+ "id": "6cc428c7-72c2-35c5-5232-3d378d906557",
"headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8181/restconf/operational/naming-context:contexts",
- "pathVariables": {},
+ "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/vxlanGpeTun3",
"preRequestScript": "",
- "method": "GET",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "pathVariables": {},
+ "method": "DELETE",
"data": [],
"dataMode": "raw",
- "name": "List naming contexts - context",
- "description": "List mapping context stored in context datastore",
- "descriptionFormat": "html",
- "time": 1463556756647,
"version": 2,
- "responses": [],
"tests": "",
"currentHelper": "normal",
"helperAttributes": {},
- "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}"
+ "time": 1464764638498,
+ "name": "Delete vxlan-gpe - cfg",
+ "description": "",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
+ "responses": [],
+ "rawModeData": ""
},
{
- "id": "79bb5b9c-a369-1af2-3402-0a39f2e0f983",
+ "id": "77360902-d830-f4df-684a-c6c2f28111ec",
"headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
"url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/tapp2",
"preRequestScript": "",
@@ -253,15 +280,15 @@
"time": 1462796801468,
"name": "Modify complex tap ifc - cfg",
"description": "",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
"rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"tapp2\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"v3po:tap\",\r\n \"tap\" :{\r\n \"tap-name\" : \"tapp2\",\r\n \"mac\" : \"00:ff:ff:ff:ff:ae\",\r\n \"device-instance\" : 77\r\n }\r\n }\r\n ]\r\n \r\n}",
- "folder": "a23b89ae-1545-01a6-519a-5705b001691f"
+ "folder": "4ff8ebe4-bd44-681a-7093-9422424099b1"
},
{
- "id": "98f82cf8-fd6d-67bd-3894-e435663b34c4",
- "headers": "Content-Type: application/json\nAuthorization: Basic YWRtaW46YWRtaW4=\n",
- "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/local0",
+ "id": "7b848cbb-b41b-8855-8d8a-8438a415e5ad",
+ "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
+ "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces",
"preRequestScript": "",
"pathVariables": {},
"method": "PUT",
@@ -271,37 +298,38 @@
"tests": "",
"currentHelper": "normal",
"helperAttributes": {},
- "time": 1462534221488,
- "name": "Add local0 to bridge domain",
- "description": "Adds l2 interconnection of bridge-based type to local0 interface\n\nTo verify invoke:\n\nvppctl show bridge-domain [bd_id] detail",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "time": 1460636113690,
+ "name": "Set interfaces bulk edit - cfg",
+ "description": "",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"local0\",\n \"description\": \"for testing purposes\",\n \"type\": \"iana-if-type:ethernetCsmacd\",\n \"v3po:routing\": {\n \"vrf-id\": 7\n },\n \"v3po:ethernet\": {\n \"mtu\": 64\n },\n \"enabled\": true,\n \"v3po:l2\": {\n \"bridge-domain\": \"testBD\",\n \"split-horizon-group\": \"0\",\n \"bridged-virtual-interface\": \"false\"\n }\n }\n ]\n}"
+ "rawModeData": "{\n \"interfaces\": {\n \"interface\": [\n {\n \"name\": \"pg/stream-2\",\n \"enabled\": true,\n \"type\": \"iana-if-type:ethernetCsmacd\"\n },\n {\n \"name\": \"pg/stream-3\",\n \"enabled\": true,\n \"type\": \"iana-if-type:ethernetCsmacd\"\n },\n {\n \"name\": \"pg/stream-0\",\n \"enabled\": true,\n \"type\": \"iana-if-type:ethernetCsmacd\"\n },\n {\n \"name\": \"local0\",\n \"description\": \"for testing purposes\",\n \"type\": \"iana-if-type:ethernetCsmacd\",\n \"enabled\": true\n },\n {\n \"name\": \"pg/stream-1\",\n \"enabled\": true,\n \"type\": \"iana-if-type:ethernetCsmacd\"\n }\n ]\n }\n}"
},
{
- "id": "9d4e619c-6a09-5b83-5f9a-a753d83ab34a",
+ "id": "7d71e781-31a9-3274-659d-474bdf74ed70",
"headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8181/restconf/operational/v3po:vpp-state",
+ "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/tapp",
"preRequestScript": "",
"pathVariables": {},
- "method": "GET",
+ "method": "PUT",
"data": [],
"dataMode": "raw",
"version": 2,
"tests": "",
"currentHelper": "normal",
"helperAttributes": {},
- "time": 1460539994330,
- "name": "Read vpp-state - oper",
+ "time": 1462535811974,
+ "name": "Add simple tap ifc -cfg",
"description": "",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}"
+ "folder": "4ff8ebe4-bd44-681a-7093-9422424099b1",
+ "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"tapp\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"v3po:tap\",\r\n \"tap\" :{\r\n \"tap-name\" : \"tapp\"\r\n }\r\n }\r\n ]\r\n \r\n}"
},
{
- "id": "a22ce9b1-777b-cbcf-4e42-55b850d7e5a1",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/vhost1",
+ "id": "84f9c4e9-f5d9-7e73-a95d-b657c7c9b24f",
+ "headers": "Content-Type: application/json\nAuthorization: Basic YWRtaW46YWRtaW4=\n",
+ "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/local0",
"preRequestScript": "",
"pathVariables": {},
"method": "PUT",
@@ -311,18 +339,17 @@
"tests": "",
"currentHelper": "normal",
"helperAttributes": {},
- "time": 1462891472552,
- "name": "Add vhost user ifc - cfg",
- "description": "Adds vhost-user interface.\nCorresponsing vpp cli command:\n\ncreate vhost-user socket /tmp/soc1 server\n\nTo verify invoke:\n\nvppctl show vhost-user\n\nor\n\nvppctl show int",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "time": 1462534221488,
+ "name": "Add local0 to bridge domain",
+ "description": "Adds l2 interconnection of bridge-based type to local0 interface\n\nTo verify invoke:\n\nvppctl show bridge-domain [bd_id] detail",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"vhost1\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"v3po:vhost-user\",\r\n \"enabled\": \"true\",\r\n \"vhost-user\" : {\r\n \"socket\": \"/tmp/soc1\",\r\n \"role\": \"server\"\r\n }\r\n }\r\n ]\r\n \r\n}",
- "folder": "d188f806-127a-9383-5d63-49d7b79c6986"
+ "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"local0\",\n \"description\": \"for testing purposes\",\n \"type\": \"iana-if-type:ethernetCsmacd\",\n \"v3po:routing\": {\n \"vrf-id\": 7\n },\n \"v3po:ethernet\": {\n \"mtu\": 64\n },\n \"enabled\": true,\n \"v3po:l2\": {\n \"bridge-domain\": \"testBD\",\n \"split-horizon-group\": \"0\",\n \"bridged-virtual-interface\": \"false\"\n }\n }\n ]\n}"
},
{
- "id": "ac9d34bc-b4fe-8cf3-a30c-3507e86d8b96",
- "headers": "Content-Type: application/json\nAuthorization: Basic YWRtaW46YWRtaW4=\n",
- "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/GigabitEthernet0%2F9%2F0.10",
+ "id": "95a948ed-5345-939b-280c-74f97920343e",
+ "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
+ "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/vhost1",
"preRequestScript": "",
"pathVariables": {},
"method": "PUT",
@@ -332,17 +359,17 @@
"tests": "",
"currentHelper": "normal",
"helperAttributes": {},
- "time": 1463140942520,
- "name": "Set tag rewrite pop 1 - cfg",
- "description": "Corresponds to invoking:\n\nvppctl set interface l2 tag-rewrite GigabitEthernet0/9/0.10 pop 1\n\nTo verify invoke:\n\nvppctl show bridge-domain [bd_id] detail",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "time": 1462891472552,
+ "name": "Add vhost user ifc - cfg",
+ "description": "Adds vhost-user interface.\nCorresponsing vpp cli command:\n\ncreate vhost-user socket /tmp/soc1 server\n\nTo verify invoke:\n\nvppctl show vhost-user\n\nor\n\nvppctl show int",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "folder": "c9d44561-8ad1-b987-31b5-5545a259ca14",
- "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"GigabitEthernet0/9/0.10\",\n \"description\": \"sub interface for testing purposes\",\n \"type\": \"v3po:sub-interface\",\n \"enabled\": \"false\",\n \"sub-interface\" : {\n \"super-interface\": \"GigabitEthernet0/9/0\",\n \"identifier\": \"10\",\n \"exact-match\": {}\n },\n \"v3po:l2\": {\n \"bridge-domain\": \"testBD\",\n \"split-horizon-group\": \"0\",\n \"bridged-virtual-interface\": \"false\",\n \"vlan-tag-rewrite\" : {\n \"rewrite-operation\": \"pop-1\"\n }\n }\n }\n ]\n}"
+ "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"vhost1\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"v3po:vhost-user\",\r\n \"enabled\": \"true\",\r\n \"vhost-user\" : {\r\n \"socket\": \"/tmp/soc1\",\r\n \"role\": \"server\"\r\n }\r\n }\r\n ]\r\n \r\n}",
+ "folder": "0bca9dad-0798-f750-91ba-cc6ff8f277d5"
},
{
- "id": "adc51817-69b3-5d40-6060-696b5ebda2a8",
- "headers": "Content-Type: application/json\nAuthorization: Basic YWRtaW46YWRtaW4=\n",
+ "id": "a4d647b9-b951-c775-2cf4-d193cd5f2c04",
+ "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
"url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/GigabitEthernet0%2F9%2F0.10",
"preRequestScript": "",
"pathVariables": {},
@@ -353,18 +380,18 @@
"tests": "",
"currentHelper": "normal",
"helperAttributes": {},
- "time": 1463140928036,
- "name": "Add vlan to bridge domain eth - cfg",
- "description": "Adds l2 interconnection of bridge-based type to GigabitEthernet0/9/0.10 interface\n\nTo verify invoke:\n\nvppctl show bridge-domain [bd_id] detail",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "time": 1463139460244,
+ "name": "Add sub interface - cfg",
+ "description": "Adds sub interface\nCorresponsing vpp cli command:\n\ncreate sub GigabitEthernet0/9/0 10\n\nTo verify invoke:\n\nvppctl show int",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "folder": "c9d44561-8ad1-b987-31b5-5545a259ca14",
- "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"GigabitEthernet0/9/0.10\",\n \"description\": \"sub interface for testing purposes\",\n \"type\": \"v3po:sub-interface\",\n \"enabled\": \"false\",\n \"sub-interface\" : {\n \"super-interface\": \"GigabitEthernet0/9/0\",\n \"identifier\": \"10\",\n \"exact-match\": {}\n },\n \"v3po:l2\": {\n \"bridge-domain\": \"testBD\",\n \"split-horizon-group\": \"0\",\n \"bridged-virtual-interface\": \"false\"\n }\n }\n ]\n}"
+ "folder": "ba52e764-f1ec-b1cc-747f-54681ed93859",
+ "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"GigabitEthernet0/9/0.10\",\r\n \"description\": \"sub interface for testing purposes\",\r\n \"type\": \"v3po:sub-interface\",\r\n \"enabled\": \"false\",\r\n \"sub-interface\" : {\r\n \"super-interface\": \"GigabitEthernet0/9/0\",\r\n \"identifier\": \"10\",\r\n \"exact-match\": {}\r\n }\r\n }\r\n ]\r\n \r\n}"
},
{
- "id": "b33405c7-38c2-c3d8-72b5-02098d95e5f5",
+ "id": "a7a7c0f3-4dea-09f5-8c28-be3d7e084331",
"headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/local0",
+ "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/vxlanGpeTun3",
"preRequestScript": "",
"pathVariables": {},
"method": "PUT",
@@ -374,17 +401,17 @@
"tests": "",
"currentHelper": "normal",
"helperAttributes": {},
- "time": 1460640004531,
- "name": "Set vrf id for local0 - cfg",
+ "time": 1464768006369,
+ "name": "Add vxlan-gpe - cfg",
"description": "",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"local0\",\r\n \"description\": \"for testing purposes only\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"routing\" : {\r\n \"vrf-id\" : \"7\"\r\n },\r\n \"v3po:ethernet\": {\r\n \"mtu\": 64\r\n }\r\n }\r\n ]\r\n \r\n}"
+ "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"vxlanGpeTun3\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"v3po:vxlan-gpe-tunnel\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"routing\" : {\r\n \"vrf-id\" : \"0\"\r\n },\r\n \"vxlan-gpe\" : {\r\n \"local\" : \"192.168.50.76\",\r\n \"remote\" : \"192.168.50.71\",\r\n \"vni\" : \"9\",\r\n \"next-protocol\" : \"ethernet\",\r\n \"encap-vrf-id\" : \"0\",\r\n \"decap-vrf-id\" : \"0\"\r\n }\r\n }\r\n ]\r\n \r\n}"
},
{
- "id": "b5f2de6a-458a-353f-ff06-b54a11dab564",
+ "id": "bc3ade2a-51de-cb6d-f2c1-ee0598a8cb8a",
"headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/tapp",
+ "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/local0",
"preRequestScript": "",
"pathVariables": {},
"method": "PUT",
@@ -394,18 +421,17 @@
"tests": "",
"currentHelper": "normal",
"helperAttributes": {},
- "time": 1462535811974,
- "name": "Add simple tap ifc -cfg",
+ "time": 1460640004531,
+ "name": "Set vrf id for local0 - cfg",
"description": "",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "folder": "a23b89ae-1545-01a6-519a-5705b001691f",
- "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"tapp\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"v3po:tap\",\r\n \"tap\" :{\r\n \"tap-name\" : \"tapp\"\r\n }\r\n }\r\n ]\r\n \r\n}"
+ "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"local0\",\r\n \"description\": \"for testing purposes only\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"routing\" : {\r\n \"vrf-id\" : \"7\"\r\n },\r\n \"v3po:ethernet\": {\r\n \"mtu\": 64\r\n }\r\n }\r\n ]\r\n \r\n}"
},
{
- "id": "c546e0f5-e18f-f6b5-9dfc-de6bc0da785f",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/GigabitEthernet0%2F9%2F0.10",
+ "id": "be7a6dc3-144e-be00-76e5-34395f8eb76f",
+ "headers": "Content-Type: application/json\nAuthorization: Basic YWRtaW46YWRtaW4=\n",
+ "url": "http://localhost:8181/restconf/config/v3po:vpp/bridge-domains/bridge-domain/testBD",
"preRequestScript": "",
"pathVariables": {},
"method": "PUT",
@@ -415,16 +441,15 @@
"tests": "",
"currentHelper": "normal",
"helperAttributes": {},
- "time": 1463139460244,
- "name": "Add sub interface - cfg",
- "description": "Adds sub interface\nCorresponsing vpp cli command:\n\ncreate sub GigabitEthernet0/9/0 10\n\nTo verify invoke:\n\nvppctl show int",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "time": 1460540096743,
+ "name": "Add bridge domain - cfg",
+ "description": "",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "folder": "c9d44561-8ad1-b987-31b5-5545a259ca14",
- "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"GigabitEthernet0/9/0.10\",\r\n \"description\": \"sub interface for testing purposes\",\r\n \"type\": \"v3po:sub-interface\",\r\n \"enabled\": \"false\",\r\n \"sub-interface\" : {\r\n \"super-interface\": \"GigabitEthernet0/9/0\",\r\n \"identifier\": \"10\",\r\n \"exact-match\": {}\r\n }\r\n }\r\n ]\r\n \r\n}"
+ "rawModeData": "{\r\n \"bridge-domain\": [\r\n {\r\n \"name\": \"testBD\",\r\n \"flood\": \"true\",\r\n \"forward\": \"false\",\r\n \"learn\": \"false\",\r\n \"unknown-unicast-flood\": \"false\",\r\n \"arp-termination\": \"false\"\r\n }\r\n ]\r\n}"
},
{
- "id": "c8d329d3-1fc3-af2b-48f5-0cf385d809f7",
+ "id": "c2b623b7-7110-3f81-1f73-482eca7bb41e",
"headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
"url": "http://localhost:8181/restconf/operational/ietf-interfaces:interfaces-state/",
"preRequestScript": "",
@@ -439,36 +464,36 @@
"time": 1460539972177,
"name": "List ifcs - oper",
"description": "",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
"rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}"
},
{
- "id": "ca3fd773-8d38-7017-cee8-4688bc08f8ba",
+ "id": "c543d2d7-6e40-e8a3-ee37-330a9335b002",
"headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/vhost1",
- "preRequestScript": "",
+ "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/GigabitEthernet0%2F9%2F0.10",
"pathVariables": {},
- "method": "DELETE",
+ "preRequestScript": "",
+ "method": "GET",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"data": [],
"dataMode": "raw",
+ "name": "Get sub interface - cfg",
+ "description": "",
+ "descriptionFormat": "html",
+ "time": 1463139741935,
"version": 2,
+ "responses": [],
"tests": "",
"currentHelper": "normal",
- "helperAttributes": "{}",
- "time": 1462891488523,
- "name": "Delete vhost user ifc - cfg",
- "description": "Deletes vhost user interface.\nCorresponding vpp CLI command:\n\nvppctl delete vhost-user sw_if_index [index]\n\nTo verify invoke:\n\nvppctl show vhost-user\n\nor\n\nvppctl show int",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
- "responses": [],
- "folder": "d188f806-127a-9383-5d63-49d7b79c6986",
- "rawModeData": "",
- "descriptionFormat": null
+ "helperAttributes": {},
+ "folder": "ba52e764-f1ec-b1cc-747f-54681ed93859",
+ "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"GigabitEthernet0/9/0.10\",\r\n \"description\": \"sub interface for testing purposes\",\r\n \"type\": \"v3po:sub-interface\",\r\n \"enabled\": \"false\",\r\n \"sub-interface\" : {\r\n \"super-interface\": \"GigabitEthernet0/9/0\",\r\n \"identifier\": \"10\",\r\n \"exact-match\": {}\r\n }\r\n }\r\n ]\r\n \r\n}"
},
{
- "id": "d29faea5-ca20-7de0-b67b-f20bac4340a2",
- "headers": "Content-Type: application/json\nAuthorization: Basic YWRtaW46YWRtaW4=\n",
- "url": "http://localhost:8181/restconf/config/v3po:vpp/bridge-domains/bridge-domain/testBD",
+ "id": "d14a1086-43f2-f595-5c20-cba8b8f6a992",
+ "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
+ "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/vhost1",
"preRequestScript": "",
"pathVariables": {},
"method": "PUT",
@@ -478,76 +503,79 @@
"tests": "",
"currentHelper": "normal",
"helperAttributes": {},
- "time": 1460540096743,
- "name": "Add bridge domain - cfg",
- "description": "",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "time": 1462891483790,
+ "name": "Modify vhost user ifc - cfg",
+ "description": "Modifies vhost-user interface socket.\nTo verify invoke:\n\nvppctl show vhost-user",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "rawModeData": "{\r\n \"bridge-domain\": [\r\n {\r\n \"name\": \"testBD\",\r\n \"flood\": \"true\",\r\n \"forward\": \"false\",\r\n \"learn\": \"false\",\r\n \"unknown-unicast-flood\": \"false\",\r\n \"arp-termination\": \"false\"\r\n }\r\n ]\r\n}"
+ "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"vhost1\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"v3po:vhost-user\",\r\n \"enabled\": \"true\",\r\n \"vhost-user\" : {\r\n \"socket\": \"/tmp/soc2\",\r\n \"role\": \"server\"\r\n }\r\n }\r\n ]\r\n \r\n}",
+ "folder": "0bca9dad-0798-f750-91ba-cc6ff8f277d5"
},
{
- "id": "d40b0462-07ff-6a9b-4784-759d04d4bae3",
+ "id": "d46e1911-cf84-3805-a085-2219a49a7557",
"headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces",
+ "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/tapp2",
"preRequestScript": "",
"pathVariables": {},
- "method": "PUT",
+ "method": "DELETE",
"data": [],
"dataMode": "raw",
"version": 2,
"tests": "",
"currentHelper": "normal",
"helperAttributes": {},
- "time": 1460636113690,
- "name": "Set interfaces bulk edit - cfg",
+ "time": 1462796994090,
+ "name": "Delete complex tap ifc - cfg",
"description": "",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "rawModeData": "{\n \"interfaces\": {\n \"interface\": [\n {\n \"name\": \"pg/stream-2\",\n \"enabled\": true,\n \"type\": \"iana-if-type:ethernetCsmacd\"\n },\n {\n \"name\": \"pg/stream-3\",\n \"enabled\": true,\n \"type\": \"iana-if-type:ethernetCsmacd\"\n },\n {\n \"name\": \"pg/stream-0\",\n \"enabled\": true,\n \"type\": \"iana-if-type:ethernetCsmacd\"\n },\n {\n \"name\": \"local0\",\n \"description\": \"for testing purposes\",\n \"type\": \"iana-if-type:ethernetCsmacd\",\n \"enabled\": true\n },\n {\n \"name\": \"pg/stream-1\",\n \"enabled\": true,\n \"type\": \"iana-if-type:ethernetCsmacd\"\n }\n ]\n }\n}"
+ "rawModeData": "",
+ "folder": "4ff8ebe4-bd44-681a-7093-9422424099b1"
},
{
- "id": "e0c0b5c9-dabd-3440-c402-037e99a9a292",
+ "id": "eeeb8b70-d222-6d9a-6521-1e16bf8db401",
"headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/tapp2",
+ "url": "http://localhost:8181/restconf/operational/v3po:vpp-state",
"preRequestScript": "",
"pathVariables": {},
- "method": "PUT",
+ "method": "GET",
"data": [],
"dataMode": "raw",
"version": 2,
"tests": "",
"currentHelper": "normal",
"helperAttributes": {},
- "time": 1462796722186,
- "name": "Add complex tap ifc - cfg",
+ "time": 1460539994330,
+ "name": "Read vpp-state - oper",
"description": "",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"tapp2\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"v3po:tap\",\r\n \"tap\" :{\r\n \"tap-name\" : \"tapp2\",\r\n \"mac\" : \"00:ff:ff:ff:ff:ff\",\r\n \"device-instance\" : 55\r\n }\r\n }\r\n ]\r\n \r\n}",
- "folder": "a23b89ae-1545-01a6-519a-5705b001691f"
+ "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}"
},
{
- "id": "e3f9de11-4c5b-bc82-ca10-e7aed4832831",
+ "id": "f0faabc8-eab8-bb4d-1042-b45716ecb155",
"headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/local0",
+ "url": "http://localhost:8181/restconf/config/ietf-interfaces:interfaces/interface/vxlanTun1",
"preRequestScript": "",
"pathVariables": {},
- "method": "PUT",
+ "method": "DELETE",
"data": [],
"dataMode": "raw",
"version": 2,
"tests": "",
"currentHelper": "normal",
- "helperAttributes": {},
- "time": 1460540047356,
- "name": "Enable local0 interface - cfg",
+ "helperAttributes": "{}",
+ "time": 1462892071867,
+ "name": "Delete virtual ifc - cfg",
"description": "",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
- "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"local0\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"v3po:ethernet\": {\r\n \"mtu\": 64\r\n }\r\n }\r\n ]\r\n \r\n}"
+ "folder": "f8061658-c931-5f3c-c119-857c8b1508b1",
+ "timestamp": null,
+ "rawModeData": ""
},
{
- "id": "f3822b78-f031-d4db-5f9a-1a15e1b69e82",
+ "id": "f19bf50c-b847-a7a0-cabe-31b2cf23b745",
"headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
"url": "http://localhost:8181/restconf/config/v3po:vpp",
"preRequestScript": "",
@@ -562,9 +590,30 @@
"time": 1460540006597,
"name": "Read vpp - cfg",
"description": "",
- "collectionId": "9a250d84-57ff-11a7-d034-97dc21a7c35c",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
"responses": [],
"rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}"
+ },
+ {
+ "id": "fce0239b-0d55-5578-e216-51a7a0f57cc4",
+ "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
+ "url": "http://localhost:8181/restconf/operational/naming-context:contexts",
+ "pathVariables": {},
+ "preRequestScript": "",
+ "method": "GET",
+ "collectionId": "61475d83-1808-fa49-7ca6-32f701e38b19",
+ "data": [],
+ "dataMode": "raw",
+ "name": "List naming contexts - context",
+ "description": "List mapping context stored in context datastore",
+ "descriptionFormat": "html",
+ "time": 1463556756647,
+ "version": 2,
+ "responses": [],
+ "tests": "",
+ "currentHelper": "normal",
+ "helperAttributes": {},
+ "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}"
}
]
} \ No newline at end of file
diff --git a/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/translate/v3po/initializers/InterfacesInitializer.java b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/translate/v3po/initializers/InterfacesInitializer.java
index 3571fbc90..38ab58af1 100644
--- a/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/translate/v3po/initializers/InterfacesInitializer.java
+++ b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/translate/v3po/initializers/InterfacesInitializer.java
@@ -31,18 +31,21 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppInterfaceAugmentationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppInterfaceStateAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VxlanVni;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VxlanGpeVni;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.EthernetBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.L2Builder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.SubInterfaceBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.TapBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VhostUserBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VxlanBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VxlanGpeBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces.state._interface.Ethernet;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces.state._interface.L2;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces.state._interface.SubInterface;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces.state._interface.Tap;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces.state._interface.VhostUser;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces.state._interface.Vxlan;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces.state._interface.VxlanGpe;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.l2.attributes.Interconnection;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.l2.attributes.VlanTagRewrite;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.l2.attributes.VlanTagRewriteBuilder;
@@ -99,6 +102,11 @@ public class InterfacesInitializer extends AbstractDataTreeConverter<InterfacesS
setVxlan(augmentBuilder, vxlan);
}
+ final VxlanGpe vxlanGpe = vppIfcAugmentation.getVxlanGpe();
+ if(vxlanGpe != null) {
+ setVxlanGpe(augmentBuilder, vxlanGpe);
+ }
+
final Tap tap = vppIfcAugmentation.getTap();
if(tap != null) {
setTap(input, augmentBuilder, tap);
@@ -224,4 +232,15 @@ public class InterfacesInitializer extends AbstractDataTreeConverter<InterfacesS
vxlanBuilder.setVni(new VxlanVni(vxlan.getVni()));
augmentBuilder.setVxlan(vxlanBuilder.build());
}
+
+ private static void setVxlanGpe(final VppInterfaceAugmentationBuilder augmentBuilder, final VxlanGpe vxlanGpe) {
+ final VxlanGpeBuilder vxlanGpeBuilder = new VxlanGpeBuilder();
+ vxlanGpeBuilder.setLocal(vxlanGpe.getLocal());
+ vxlanGpeBuilder.setRemote(vxlanGpe.getRemote());
+ vxlanGpeBuilder.setVni(new VxlanGpeVni(vxlanGpe.getVni()));
+ vxlanGpeBuilder.setNextProtocol(vxlanGpe.getNextProtocol());
+ vxlanGpeBuilder.setEncapVrfId(vxlanGpe.getEncapVrfId());
+ vxlanGpeBuilder.setDecapVrfId(vxlanGpe.getDecapVrfId());
+ augmentBuilder.setVxlanGpe(vxlanGpeBuilder.build());
+ }
}
diff --git a/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/VxlanGpeCustomizer.java b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/VxlanGpeCustomizer.java
new file mode 100644
index 000000000..7d9641122
--- /dev/null
+++ b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/translate/v3po/interfaces/VxlanGpeCustomizer.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (c) 2016 Cisco and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.fd.honeycomb.v3po.translate.v3po.interfaces;
+
+import static com.google.common.base.Preconditions.checkArgument;
+
+import com.google.common.base.Optional;
+import com.google.common.net.InetAddresses;
+import io.fd.honeycomb.v3po.translate.v3po.util.AbstractInterfaceTypeCustomizer;
+import io.fd.honeycomb.v3po.translate.v3po.util.NamingContext;
+import io.fd.honeycomb.v3po.translate.v3po.util.VppApiInvocationException;
+import io.fd.honeycomb.v3po.translate.v3po.util.TranslateUtils;
+import io.fd.honeycomb.v3po.translate.write.WriteContext;
+import io.fd.honeycomb.v3po.translate.write.WriteFailedException;
+import java.net.InetAddress;
+import java.util.concurrent.CompletionStage;
+import javax.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.interfaces.rev140508.InterfaceType;
+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.v3po.rev150105.VppInterfaceAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VxlanGpeTunnel;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VxlanGpe;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.openvpp.jvpp.dto.VxlanGpeAddDelTunnel;
+import org.openvpp.jvpp.dto.VxlanGpeAddDelTunnelReply;
+import org.openvpp.jvpp.future.FutureJVpp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+// TODO extract common code from all Interface type specific writer customizers into a superclass
+public class VxlanGpeCustomizer extends AbstractInterfaceTypeCustomizer<VxlanGpe> {
+
+ private static final Logger LOG = LoggerFactory.getLogger(VxlanGpeCustomizer.class);
+ private final NamingContext interfaceContext;
+
+ public VxlanGpeCustomizer(final FutureJVpp vppApi, final NamingContext interfaceContext) {
+ super(vppApi);
+ this.interfaceContext = interfaceContext;
+ }
+
+ @Nonnull
+ @Override
+ public Optional<VxlanGpe> extract(@Nonnull final InstanceIdentifier<VxlanGpe> currentId,
+ @Nonnull final DataObject parentData) {
+ return Optional.fromNullable(((VppInterfaceAugmentation) parentData).getVxlanGpe());
+ }
+
+ @Override
+ protected Class<? extends InterfaceType> getExpectedInterfaceType() {
+ return VxlanGpeTunnel.class;
+ }
+
+ @Override
+ protected final void writeInterface(@Nonnull final InstanceIdentifier<VxlanGpe> id, @Nonnull final VxlanGpe dataAfter,
+ @Nonnull final WriteContext writeContext)
+ throws WriteFailedException.CreateFailedException {
+ try {
+ createVxlanGpeTunnel(id.firstKeyOf(Interface.class).getName(), dataAfter, writeContext);
+ } catch (VppApiInvocationException | IllegalInterfaceTypeException e) {
+ LOG.warn("Write of VxlanGpe failed", e);
+ throw new WriteFailedException.CreateFailedException(id, dataAfter, e);
+ }
+ }
+
+ @Override
+ public void updateCurrentAttributes(@Nonnull final InstanceIdentifier<VxlanGpe> id, @Nonnull final VxlanGpe dataBefore,
+ @Nonnull final VxlanGpe dataAfter, @Nonnull final WriteContext writeContext)
+ throws WriteFailedException.UpdateFailedException {
+ throw new WriteFailedException.UpdateFailedException(id, dataBefore, dataAfter,
+ new UnsupportedOperationException("VxlanGpe tunnel update is not supported"));
+ }
+
+ @Override
+ public void deleteCurrentAttributes(@Nonnull final InstanceIdentifier<VxlanGpe> id, @Nonnull final VxlanGpe dataBefore,
+ @Nonnull final WriteContext writeContext)
+ throws WriteFailedException.DeleteFailedException {
+ try {
+ deleteVxlanGpeTunnel(id.firstKeyOf(Interface.class).getName(), dataBefore, writeContext);
+ } catch (VppApiInvocationException e) {
+ LOG.warn("Delete of VxlanGpe tunnel failed", e);
+ throw new WriteFailedException.DeleteFailedException(id, e);
+ }
+ }
+
+ private void createVxlanGpeTunnel(final String swIfName, final VxlanGpe VxlanGpe, final WriteContext writeContext) throws VppApiInvocationException {
+ final byte isIpv6 = (byte) (isIpv6(VxlanGpe) ? 1 : 0);
+ final InetAddress Local = InetAddresses.forString(getAddressString(VxlanGpe.getLocal()));
+ final InetAddress Remote = InetAddresses.forString(getAddressString(VxlanGpe.getRemote()));
+
+ int vni = VxlanGpe.getVni().getValue().intValue();
+ byte protocol = (byte) VxlanGpe.getNextProtocol().getIntValue();
+ int encapVrfId = VxlanGpe.getEncapVrfId().intValue();
+ int decapVrfId = VxlanGpe.getDecapVrfId().intValue();
+
+ LOG.debug("Setting VxlanGpe tunnel for interface: {}. VxlanGpe: {}", swIfName, VxlanGpe);
+ final CompletionStage<VxlanGpeAddDelTunnelReply> VxlanGpeAddDelTunnelReplyCompletionStage =
+ getFutureJVpp().vxlanGpeAddDelTunnel(getVxlanGpeTunnelRequest((byte) 1 /* is add */, Local.getAddress(),
+ Remote.getAddress(), vni, protocol, encapVrfId, decapVrfId, isIpv6));
+
+ final VxlanGpeAddDelTunnelReply reply =
+ TranslateUtils.getReply(VxlanGpeAddDelTunnelReplyCompletionStage.toCompletableFuture());
+ if (reply.retval < 0) {
+ LOG.debug("Failed to set VxlanGpe tunnel for interface: {}, VxlanGpe: {}", swIfName, VxlanGpe);
+ throw new VppApiInvocationException("VxlanGpeAddDelTunnel", reply.context, reply.retval);
+ } else {
+ LOG.debug("VxlanGpe tunnel set successfully for: {}, VxlanGpe: {}", swIfName, VxlanGpe);
+ if(interfaceContext.containsName(reply.swIfIndex, writeContext.getMappingContext())) {
+ final String formerName = interfaceContext.getName(reply.swIfIndex, writeContext.getMappingContext());
+ LOG.debug("Removing updated mapping of a vxlan-gpe tunnel, id: {}, former name: {}, new name: {}",
+ reply.swIfIndex, formerName, swIfName);
+ interfaceContext.removeName(formerName, writeContext.getMappingContext());
+ }
+ // Add new interface to our interface context
+ interfaceContext.addName(reply.swIfIndex, swIfName, writeContext.getMappingContext());
+ }
+ }
+
+ private boolean isIpv6(final VxlanGpe VxlanGpe) {
+ if (VxlanGpe.getLocal().getIpv4Address() == null) {
+ checkArgument(VxlanGpe.getRemote().getIpv4Address() == null, "Inconsistent ip addresses: %s, %s", VxlanGpe.getLocal(),
+ VxlanGpe.getRemote());
+ return true;
+ } else {
+ checkArgument(VxlanGpe.getRemote().getIpv6Address() == null, "Inconsistent ip addresses: %s, %s", VxlanGpe.getLocal(),
+ VxlanGpe.getRemote());
+ return false;
+ }
+ }
+
+ private String getAddressString(final IpAddress addr) {
+ return addr.getIpv4Address() == null ? addr.getIpv6Address().getValue() : addr.getIpv4Address().getValue();
+ }
+
+ private void deleteVxlanGpeTunnel(final String swIfName, final VxlanGpe VxlanGpe, final WriteContext writeContext) throws VppApiInvocationException {
+ final byte isIpv6 = (byte) (isIpv6(VxlanGpe) ? 1 : 0);
+ final InetAddress local = InetAddresses.forString(getAddressString(VxlanGpe.getLocal()));
+ final InetAddress remote = InetAddresses.forString(getAddressString(VxlanGpe.getRemote()));
+
+ int vni = VxlanGpe.getVni().getValue().intValue();
+ byte protocol = (byte) VxlanGpe.getNextProtocol().getIntValue();
+ int encapVrfId = VxlanGpe.getEncapVrfId().intValue();
+ int decapVrfId = VxlanGpe.getDecapVrfId().intValue();
+
+ LOG.debug("Deleting VxlanGpe tunnel for interface: {}. VxlanGpe: {}", swIfName, VxlanGpe);
+ final CompletionStage<VxlanGpeAddDelTunnelReply> VxlanGpeAddDelTunnelReplyCompletionStage =
+ getFutureJVpp().vxlanGpeAddDelTunnel(getVxlanGpeTunnelRequest((byte) 0 /* is delete */, local.getAddress(),
+ remote.getAddress(), vni, protocol, encapVrfId, decapVrfId, isIpv6));
+
+ final VxlanGpeAddDelTunnelReply reply =
+ TranslateUtils.getReply(VxlanGpeAddDelTunnelReplyCompletionStage.toCompletableFuture());
+ if (reply.retval < 0) {
+ LOG.debug("Failed to delete VxlanGpe tunnel for interface: {}, VxlanGpe: {}", swIfName, VxlanGpe);
+ throw new VppApiInvocationException("VxlanGpeAddDelTunnel", reply.context, reply.retval);
+ } else {
+ LOG.debug("VxlanGpe tunnel deleted successfully for: {}, VxlanGpe: {}", swIfName, VxlanGpe);
+ // Remove interface from our interface context
+ interfaceContext.removeName(swIfName, writeContext.getMappingContext());
+ }
+ }
+
+ private static VxlanGpeAddDelTunnel getVxlanGpeTunnelRequest(final byte isAdd, final byte[] local, final byte[] remote,
+ final int vni, final byte protocol, final int encapVrfId, final int decapVrfId,
+ final byte isIpv6) {
+ final VxlanGpeAddDelTunnel VxlanGpeAddDelTunnel = new VxlanGpeAddDelTunnel();
+ VxlanGpeAddDelTunnel.isAdd = isAdd;
+ VxlanGpeAddDelTunnel.local = local;
+ VxlanGpeAddDelTunnel.remote = remote;
+ VxlanGpeAddDelTunnel.vni = vni;
+ VxlanGpeAddDelTunnel.protocol = protocol;
+ VxlanGpeAddDelTunnel.encapVrfId = encapVrfId;
+ VxlanGpeAddDelTunnel.decapVrfId = decapVrfId;
+ VxlanGpeAddDelTunnel.isIpv6 = isIpv6;
+ return VxlanGpeAddDelTunnel;
+ }
+}
diff --git a/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/translate/v3po/interfacesstate/VxlanGpeCustomizer.java b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/translate/v3po/interfacesstate/VxlanGpeCustomizer.java
new file mode 100644
index 000000000..64a5b895a
--- /dev/null
+++ b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/translate/v3po/interfacesstate/VxlanGpeCustomizer.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (c) 2016 Cisco and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.fd.honeycomb.v3po.translate.v3po.interfacesstate;
+
+import static com.google.common.base.Preconditions.checkState;
+
+import io.fd.honeycomb.v3po.translate.read.ReadContext;
+import io.fd.honeycomb.v3po.translate.read.ReadFailedException;
+import io.fd.honeycomb.v3po.translate.spi.read.ChildReaderCustomizer;
+import io.fd.honeycomb.v3po.translate.v3po.util.FutureJVppCustomizer;
+import io.fd.honeycomb.v3po.translate.v3po.util.NamingContext;
+import io.fd.honeycomb.v3po.translate.v3po.util.TranslateUtils;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Arrays;
+import java.util.concurrent.CompletionStage;
+import javax.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.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.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppInterfaceStateAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VxlanGpeTunnel;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VxlanGpeVni;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces.state._interface.VxlanGpe;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces.state._interface.VxlanGpeBuilder;
+import org.opendaylight.yangtools.concepts.Builder;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.openvpp.jvpp.dto.VxlanGpeTunnelDetails;
+import org.openvpp.jvpp.dto.VxlanGpeTunnelDetailsReplyDump;
+import org.openvpp.jvpp.dto.VxlanGpeTunnelDump;
+import org.openvpp.jvpp.future.FutureJVpp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class VxlanGpeCustomizer extends FutureJVppCustomizer
+ implements ChildReaderCustomizer<VxlanGpe, VxlanGpeBuilder> {
+
+ private static final Logger LOG = LoggerFactory.getLogger(VxlanGpeCustomizer.class);
+ private NamingContext interfaceContext;
+
+ public VxlanGpeCustomizer(@Nonnull final FutureJVpp jvpp, @Nonnull final NamingContext interfaceContext) {
+ super(jvpp);
+ this.interfaceContext = interfaceContext;
+ }
+
+ @Override
+ public void merge(@Nonnull Builder<? extends DataObject> parentBuilder,
+ @Nonnull VxlanGpe readValue) {
+ ((VppInterfaceStateAugmentationBuilder) parentBuilder).setVxlanGpe(readValue);
+ }
+
+ @Nonnull
+ @Override
+ public VxlanGpeBuilder getBuilder(@Nonnull InstanceIdentifier<VxlanGpe> id) {
+ return new VxlanGpeBuilder();
+ }
+
+ @Override
+ public void readCurrentAttributes(@Nonnull final InstanceIdentifier<VxlanGpe> id,
+ @Nonnull final VxlanGpeBuilder builder,
+ @Nonnull final ReadContext ctx) throws ReadFailedException {
+ final InterfaceKey key = id.firstKeyOf(Interface.class);
+ // Relying here that parent InterfaceCustomizer was invoked first (PREORDER)
+ // to fill in the context with initial ifc mapping
+ final int index = interfaceContext.getIndex(key.getName(), ctx.getMappingContext());
+ if (!InterfaceUtils.isInterfaceOfType(ctx.getModificationCache(), index, VxlanGpeTunnel.class)) {
+ return;
+ }
+
+ LOG.debug("Reading attributes for VxlanGpe tunnel: {}", key.getName());
+ // Dump just a single
+ final VxlanGpeTunnelDump request = new VxlanGpeTunnelDump();
+ request.swIfIndex = index;
+
+ final CompletionStage<VxlanGpeTunnelDetailsReplyDump> swInterfaceVxlanGpeDetailsReplyDumpCompletionStage =
+ getFutureJVpp().vxlanGpeTunnelDump(request);
+ final VxlanGpeTunnelDetailsReplyDump reply =
+ TranslateUtils.getReply(swInterfaceVxlanGpeDetailsReplyDumpCompletionStage.toCompletableFuture());
+
+ // VPP keeps VxlanGpe tunnel interfaces even after they were deleted (optimization)
+ // However there are no longer any VxlanGpe tunnel specific fields assigned to it and this call
+ // returns nothing
+ if (reply == null || reply.vxlanGpeTunnelDetails == null || reply.vxlanGpeTunnelDetails.isEmpty()) {
+ LOG.debug(
+ "VxlanGpe tunnel {}, id {} has no attributes assigned in VPP. Probably is a leftover interface placeholder" +
+ "after delete", key.getName(), index);
+ return;
+ }
+
+ checkState(reply.vxlanGpeTunnelDetails.size() == 1,
+ "Unexpected number of returned VxlanGpe tunnels: {} for tunnel: {}", reply.vxlanGpeTunnelDetails, key.getName());
+ LOG.trace("VxlanGpe tunnel: {} attributes returned from VPP: {}", key.getName(), reply);
+
+ final VxlanGpeTunnelDetails swInterfaceVxlanGpeDetails = reply.vxlanGpeTunnelDetails.get(0);
+ if (swInterfaceVxlanGpeDetails.isIpv6 == 1) {
+ final Ipv6Address remote6 =
+ new Ipv6Address(parseAddress(swInterfaceVxlanGpeDetails.remote).getHostAddress());
+ builder.setRemote(new IpAddress(remote6));
+ final Ipv6Address local6 =
+ new Ipv6Address(parseAddress(swInterfaceVxlanGpeDetails.local).getHostAddress());
+ builder.setLocal(new IpAddress(local6));
+ } else {
+ final byte[] dstBytes = Arrays.copyOfRange(swInterfaceVxlanGpeDetails.remote, 0, 4);
+ final Ipv4Address remote4 = new Ipv4Address(parseAddress(dstBytes).getHostAddress());
+ builder.setRemote(new IpAddress(remote4));
+ final byte[] srcBytes = Arrays.copyOfRange(swInterfaceVxlanGpeDetails.local, 0, 4);
+ final Ipv4Address local4 = new Ipv4Address(parseAddress(srcBytes).getHostAddress());
+ builder.setLocal(new IpAddress(local4));
+ }
+ builder.setVni(new VxlanGpeVni((long) swInterfaceVxlanGpeDetails.vni));
+ builder.setEncapVrfId((long) swInterfaceVxlanGpeDetails.encapVrfId);
+ builder.setDecapVrfId((long) swInterfaceVxlanGpeDetails.decapVrfId);
+ LOG.debug("VxlanGpe tunnel: {}, id: {} attributes read as: {}", key.getName(), index, builder);
+ }
+
+ @Nonnull
+ private static InetAddress parseAddress(@Nonnull final byte[] addr) {
+ try {
+ return InetAddress.getByAddress(addr);
+ } catch (UnknownHostException e) {
+ throw new IllegalArgumentException("Cannot create InetAddress from " + Arrays.toString(addr), e);
+ }
+ }
+}
diff --git a/v3po/v3po2vpp/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/v3po2vpp/rev160406/InterfacesHoneycombWriterModule.java b/v3po/v3po2vpp/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/v3po2vpp/rev160406/InterfacesHoneycombWriterModule.java
index d8b5b65f7..4a1e7f0dd 100644
--- a/v3po/v3po2vpp/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/v3po2vpp/rev160406/InterfacesHoneycombWriterModule.java
+++ b/v3po/v3po2vpp/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/v3po2vpp/rev160406/InterfacesHoneycombWriterModule.java
@@ -18,6 +18,7 @@ import io.fd.honeycomb.v3po.translate.v3po.interfaces.TapCustomizer;
import io.fd.honeycomb.v3po.translate.v3po.interfaces.VhostUserCustomizer;
import io.fd.honeycomb.v3po.translate.v3po.interfaces.VlanTagRewriteCustomizer;
import io.fd.honeycomb.v3po.translate.v3po.interfaces.VxlanCustomizer;
+import io.fd.honeycomb.v3po.translate.v3po.interfaces.VxlanGpeCustomizer;
import io.fd.honeycomb.v3po.translate.v3po.interfaces.ip.Ipv4Customizer;
import io.fd.honeycomb.v3po.translate.v3po.interfaces.ip.Ipv6Customizer;
import io.fd.honeycomb.v3po.translate.write.ChildWriter;
@@ -37,6 +38,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.Tap;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VhostUser;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.Vxlan;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VxlanGpe;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.l2.attributes.VlanTagRewrite;
import org.opendaylight.yangtools.yang.binding.Augmentation;
import org.opendaylight.yangtools.yang.binding.ChildOf;
@@ -105,6 +107,9 @@ public class InterfacesHoneycombWriterModule extends org.opendaylight.yang.gen.v
final ChildWriter<Vxlan> vxlanWriter = new CompositeChildWriter<>(Vxlan.class,
new VxlanCustomizer(getVppJvppIfcDependency(), getInterfaceContextDependency()));
+ final ChildWriter<VxlanGpe> vxlanGpeWriter = new CompositeChildWriter<>(VxlanGpe.class,
+ new VxlanGpeCustomizer(getVppJvppIfcDependency(), getInterfaceContextDependency()));
+
final ChildWriter<VhostUser> vhostUserWriter = new CompositeChildWriter<>(VhostUser.class,
new VhostUserCustomizer(getVppJvppIfcDependency(), getInterfaceContextDependency()));
@@ -133,6 +138,7 @@ public class InterfacesHoneycombWriterModule extends org.opendaylight.yang.gen.v
final List<ChildWriter<? extends ChildOf<VppInterfaceAugmentation>>> vppIfcChildWriters = Lists.newArrayList();
vppIfcChildWriters.add(vhostUserWriter);
vppIfcChildWriters.add(vxlanWriter);
+ vppIfcChildWriters.add(vxlanGpeWriter);
vppIfcChildWriters.add(tapWriter);
vppIfcChildWriters.add(ethernetWriter);
vppIfcChildWriters.add(subIfWriter);
diff --git a/v3po/v3po2vpp/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/v3po2vpp/rev160406/InterfacesStateHoneycombReaderModule.java b/v3po/v3po2vpp/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/v3po2vpp/rev160406/InterfacesStateHoneycombReaderModule.java
index 4c8202c0b..7c97abf02 100644
--- a/v3po/v3po2vpp/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/v3po2vpp/rev160406/InterfacesStateHoneycombReaderModule.java
+++ b/v3po/v3po2vpp/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/v3po2vpp/rev160406/InterfacesStateHoneycombReaderModule.java
@@ -23,6 +23,7 @@ import io.fd.honeycomb.v3po.translate.v3po.interfacesstate.TapCustomizer;
import io.fd.honeycomb.v3po.translate.v3po.interfacesstate.VhostUserCustomizer;
import io.fd.honeycomb.v3po.translate.v3po.interfacesstate.VlanTagRewriteCustomizer;
import io.fd.honeycomb.v3po.translate.v3po.interfacesstate.VxlanCustomizer;
+import io.fd.honeycomb.v3po.translate.v3po.interfacesstate.VxlanGpeCustomizer;
import java.util.Collections;
import java.util.List;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState;
@@ -38,6 +39,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces.state._interface.Tap;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces.state._interface.VhostUser;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces.state._interface.Vxlan;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces.state._interface.VxlanGpe;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.l2.attributes.VlanTagRewrite;
import org.opendaylight.yangtools.yang.binding.ChildOf;
@@ -79,6 +81,10 @@ public class InterfacesStateHoneycombReaderModule extends
new CompositeChildReader<>(Vxlan.class,
new VxlanCustomizer(getVppJvppDependency(), getInterfaceContextIfcStateDependency()));
+ final ChildReader<? extends ChildOf<VppInterfaceStateAugmentation>> vxlanGpeReader =
+ new CompositeChildReader<>(VxlanGpe.class,
+ new VxlanGpeCustomizer(getVppJvppDependency(), getInterfaceContextIfcStateDependency()));
+
final ChildReader<? extends ChildOf<VppInterfaceStateAugmentation>> subInterfaceReader =
new CompositeChildReader<>(SubInterface.class,
new SubInterfaceCustomizer(getVppJvppDependency(), getInterfaceContextIfcStateDependency()));
@@ -101,6 +107,7 @@ public class InterfacesStateHoneycombReaderModule extends
childReaders.add(tapReader);
childReaders.add(vhostUserReader);
childReaders.add(vxlanReader);
+ childReaders.add(vxlanGpeReader);
childReaders.add(subInterfaceReader);
childReaders.add(l2Reader);