From 47a787a125196d55a58f31524f0f1d2710f51728 Mon Sep 17 00:00:00 2001 From: Vadym Hlushko Date: Mon, 1 Nov 2021 09:55:53 +0000 Subject: [PATCH 1/7] [nvgre]: Added YANG model and tests Signed-off-by: Vadym Hlushko --- .../tests/files/sample_config_db.json | 23 +++- .../tests/yang_model_tests/tests/nvgre.json | 25 ++++ .../yang_model_tests/tests_config/nvgre.json | 125 ++++++++++++++++++ .../yang-models/sonic-nvgre-tunnel.yang | 94 +++++++++++++ 4 files changed, 262 insertions(+), 5 deletions(-) create mode 100644 src/sonic-yang-models/tests/yang_model_tests/tests/nvgre.json create mode 100644 src/sonic-yang-models/tests/yang_model_tests/tests_config/nvgre.json create mode 100644 src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang diff --git a/src/sonic-yang-models/tests/files/sample_config_db.json b/src/sonic-yang-models/tests/files/sample_config_db.json index e64b241349b..ee3620c13b7 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -1539,8 +1539,6 @@ "pfc_enable" : "3,4" } }, - - "MCLAG_DOMAIN": { "123": { "source_ip": "12.1.1.1", @@ -1560,8 +1558,6 @@ "unique_ip": "enable" } }, - - "MIRROR_SESSION": { "erspan": { "dscp": "10", @@ -1584,6 +1580,8 @@ } }, + + "POLICER": { "everflow_static_policer": { "meter_type": "bytes", @@ -1592,8 +1590,23 @@ "cbs": "12500000", "color": "aware", "red_packet_action": "drop" - } + } + }, + + + "NVGRE_TUNNEL": { + "tunnel_1": { + "src_ip": "10.0.0.1" + } + }, + "NVGRE_TUNNEL_MAP": { + "tunnel_1|Vlan111": { + "vlan_id": "111", + "vsid": "5000" + } } + + }, "SAMPLE_CONFIG_DB_UNKNOWN": { "UNKNOWN_TABLE": { diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/nvgre.json b/src/sonic-yang-models/tests/yang_model_tests/tests/nvgre.json new file mode 100644 index 00000000000..2928abe7ea5 --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/nvgre.json @@ -0,0 +1,25 @@ +{ + "NVGRE_TUNNEL_AND_TUNNEL_MAP": { + "desc": "NVGRE_TUNNEL with NVGRE_TUNNEL_MAP" + }, + + "NVGRE_TUNNEL_INVALID_SRC_IP": { + "desc": "INVALID src_ip value for NVGRE_TUNNEL", + "eStrKey": "Pattern" + }, + + "NVGRE_TUNNEL_MAP_UNEXISTING_NVGRE_TUNNEL_NAME": { + "desc": "Unexisting NVGRE_TUNNEL", + "eStrKey": "LeafRef" + }, + + "NVGRE_TUNNEL_MAP_UNEXISTING_VLAN_NAME": { + "desc": "Unexisting VLAN NAME", + "eStrKey": "LeafRef" + }, + + "NVGRE_TUNNEL_MAP_INVALID_VSID": { + "desc": "INVALID VSID value for NVGRE_TUNNEL_MAP", + "eStrKey": "Pattern" + } +} \ No newline at end of file diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/nvgre.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/nvgre.json new file mode 100644 index 00000000000..6a515e3f594 --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/nvgre.json @@ -0,0 +1,125 @@ +{ + "NVGRE_TUNNEL_AND_TUNNEL_MAP": { + "sonic-vlan:sonic-vlan": { + "sonic-vlan:VLAN": { + "VLAN_LIST": [ + { + "name": "Vlan200" + } + ] + } + }, + "sonic-nvgre-tunnel:sonic-nvgre-tunnel": { + "sonic-nvgre-tunnel:NVGRE_TUNNEL": { + "NVGRE_TUNNEL_LIST": [ + { + "tunnel_name": "tunnel_1", + "src_ip": "10.0.0.1" + } + ] + }, + "sonic-nvgre-tunnel:NVGRE_TUNNEL_MAP": { + "NVGRE_TUNNEL_MAP_LIST": [ + { + "tunnel_name": "tunnel_1", + "vlan_name": "Vlan200", + "vlan_id": 200, + "vsid": 5000 + } + ] + } + } + }, + + "NVGRE_TUNNEL_INVALID_SRC_IP": { + "sonic-nvgre-tunnel:sonic-nvgre-tunnel": { + "sonic-nvgre-tunnel:NVGRE_TUNNEL": { + "NVGRE_TUNNEL_LIST": [ + { + "tunnel_name": "tunnel_1", + "src_ip": "INVALID" + } + ] + } + } + }, + + "NVGRE_TUNNEL_MAP_UNEXISTING_NVGRE_TUNNEL_NAME": { + "sonic-vlan:sonic-vlan": { + "sonic-vlan:VLAN": { + "VLAN_LIST": [ + { + "name": "Vlan200" + } + ] + } + }, + "sonic-nvgre-tunnel:sonic-nvgre-tunnel": { + "sonic-nvgre-tunnel:NVGRE_TUNNEL_MAP": { + "NVGRE_TUNNEL_MAP_LIST": [ + { + "tunnel_name": "INVALID", + "vlan_name": "Vlan200", + "vlan_id": 200, + "vsid": 5000 + } + ] + } + } + }, + + "NVGRE_TUNNEL_MAP_UNEXISTING_VLAN_NAME": { + "sonic-nvgre-tunnel:sonic-nvgre-tunnel": { + "sonic-nvgre-tunnel:NVGRE_TUNNEL": { + "NVGRE_TUNNEL_LIST": [ + { + "tunnel_name": "tunnel_1", + "src_ip": "10.0.0.1" + } + ] + }, + "sonic-nvgre-tunnel:NVGRE_TUNNEL_MAP": { + "NVGRE_TUNNEL_MAP_LIST": [ + { + "tunnel_name": "tunnel_1", + "vlan_name": "Vlan200", + "vlan_id": 200, + "vsid": 5000 + } + ] + } + } + }, + + "NVGRE_TUNNEL_MAP_INVALID_VSID": { + "sonic-vlan:sonic-vlan": { + "sonic-vlan:VLAN": { + "VLAN_LIST": [ + { + "name": "Vlan200" + } + ] + } + }, + "sonic-nvgre-tunnel:sonic-nvgre-tunnel": { + "sonic-nvgre-tunnel:NVGRE_TUNNEL": { + "NVGRE_TUNNEL_LIST": [ + { + "tunnel_name": "tunnel_1", + "src_ip": "10.0.0.1" + } + ] + }, + "sonic-nvgre-tunnel:NVGRE_TUNNEL_MAP": { + "NVGRE_TUNNEL_MAP_LIST": [ + { + "tunnel_name": "tunnel_1", + "vlan_name": "Vlan200", + "vlan_id": 200, + "vsid": 1 + } + ] + } + } + } +} \ No newline at end of file diff --git a/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang b/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang new file mode 100644 index 00000000000..953d2e7125c --- /dev/null +++ b/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang @@ -0,0 +1,94 @@ +module sonic-nvgre-tunnel { + + yang-version 1.1; + + namespace "http://github.com/Azure/sonic-nvgre-tunnel"; + prefix nvgre; + + import ietf-inet-types { + prefix inet; + } + + import sonic-vlan { + prefix vlan; + } + + description "NVGRE Tunnel YANG Module for SONiC OS"; + + revision 2021-10-31 { + description + "First Revision"; + } + + container sonic-nvgre-tunnel { + + container NVGRE_TUNNEL { + + description "NVGRE_TUNNEL part of config_db.json"; + + list NVGRE_TUNNEL_LIST { + + key "tunnel_name"; + + leaf tunnel_name { + description "NVGRE Tunnel name"; + + type string { + length 1..255; + } + } + + leaf src_ip { + mandatory true; + type inet:ipv4-address; + } + + } + /* end of NVGRE_TUNNEL_LIST */ + + } + /* end of container NVGRE_TUNNEL */ + + container NVGRE_TUNNEL_MAP { + + description "NVGRE_TUNNEL part of config_db.json"; + + list NVGRE_TUNNEL_MAP_LIST { + + key "tunnel_name vlan_name"; + + leaf tunnel_name { + type leafref { + path /nvgre:sonic-nvgre-tunnel/nvgre:NVGRE_TUNNEL/nvgre:NVGRE_TUNNEL_LIST/nvgre:tunnel_name; + } + } + + leaf vlan_name { + type leafref { + path /vlan:sonic-vlan/vlan:VLAN/vlan:VLAN_LIST/vlan:name; + } + } + + leaf vlan_id { + type uint16 { + range 1..4094; + } + } + + leaf vsid { + type uint32 { + range 4096..16777214; + } + } + + } + /* end of NVGRE_TUNNEL_MAP_LIST */ + + } + /* end of container NVGRE_TUNNEL_MAP */ + + } + /* end of container sonic-nvgre-tunnel */ + +} +/* end of module sonic-nvgre-tunnel */ From 6bc054d714b67ae77a1f401e860d251660f4ad09 Mon Sep 17 00:00:00 2001 From: Vadym Hlushko Date: Fri, 5 Nov 2021 13:15:22 +0000 Subject: [PATCH 2/7] Fixed comments Signed-off-by: Vadym Hlushko --- .../yang_model_tests/tests_config/nvgre.json | 2 +- .../yang-models/sonic-nvgre-tunnel.yang | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/nvgre.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/nvgre.json index 6a515e3f594..741770ac659 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/nvgre.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/nvgre.json @@ -116,7 +116,7 @@ "tunnel_name": "tunnel_1", "vlan_name": "Vlan200", "vlan_id": 200, - "vsid": 1 + "vsid": 999999999 } ] } diff --git a/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang b/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang index 953d2e7125c..9f7fc2315a9 100644 --- a/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang +++ b/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang @@ -39,6 +39,8 @@ module sonic-nvgre-tunnel { } leaf src_ip { + description "Source IP address"; + mandatory true; type inet:ipv4-address; } @@ -51,33 +53,43 @@ module sonic-nvgre-tunnel { container NVGRE_TUNNEL_MAP { - description "NVGRE_TUNNEL part of config_db.json"; + description "NVGRE_TUNNEL_MAP part of config_db.json"; list NVGRE_TUNNEL_MAP_LIST { key "tunnel_name vlan_name"; leaf tunnel_name { + description "NVGRE Tunnel name"; + type leafref { path /nvgre:sonic-nvgre-tunnel/nvgre:NVGRE_TUNNEL/nvgre:NVGRE_TUNNEL_LIST/nvgre:tunnel_name; } } leaf vlan_name { + description "VLAN name"; + type leafref { path /vlan:sonic-vlan/vlan:VLAN/vlan:VLAN_LIST/vlan:name; } } leaf vlan_id { + description "VLAN identifier"; + + mandatory true; type uint16 { range 1..4094; } } leaf vsid { + description "Virtual Subnet Identifier"; + + mandatory true; type uint32 { - range 4096..16777214; + range 0..16777214; } } From c48439601f3a76ef5adf8fb801f7d825a0aec968 Mon Sep 17 00:00:00 2001 From: Vadym Hlushko Date: Mon, 8 Nov 2021 10:24:18 +0000 Subject: [PATCH 3/7] Changed type of src_ip leaf to ip-address Signed-off-by: Vadym Hlushko --- src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang b/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang index 9f7fc2315a9..4ecaef1505e 100644 --- a/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang +++ b/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang @@ -42,7 +42,7 @@ module sonic-nvgre-tunnel { description "Source IP address"; mandatory true; - type inet:ipv4-address; + type inet:ip-address; } } From 7687cb17ea2f574be04d21904ec711a6a440ec54 Mon Sep 17 00:00:00 2001 From: Vadym Hlushko Date: Wed, 10 Nov 2021 12:42:16 +0000 Subject: [PATCH 4/7] Fixed test case Signed-off-by: Vadym Hlushko --- src/sonic-yang-models/tests/yang_model_tests/tests/nvgre.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/nvgre.json b/src/sonic-yang-models/tests/yang_model_tests/tests/nvgre.json index 2928abe7ea5..f1c993a1753 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests/nvgre.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/nvgre.json @@ -5,7 +5,7 @@ "NVGRE_TUNNEL_INVALID_SRC_IP": { "desc": "INVALID src_ip value for NVGRE_TUNNEL", - "eStrKey": "Pattern" + "eStrKey": "InvalidValue" }, "NVGRE_TUNNEL_MAP_UNEXISTING_NVGRE_TUNNEL_NAME": { From 7cbc965564f600cc56c232fb0c2eb8d78bd3de56 Mon Sep 17 00:00:00 2001 From: Vadym Hlushko Date: Thu, 2 Dec 2021 10:43:29 +0000 Subject: [PATCH 5/7] Fixed tunnel map key Signed-off-by: Vadym Hlushko --- .../tests/yang_model_tests/tests/nvgre.json | 6 +++--- .../tests/yang_model_tests/tests_config/nvgre.json | 12 ++++++------ .../yang-models/sonic-nvgre-tunnel.yang | 10 +++++----- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/nvgre.json b/src/sonic-yang-models/tests/yang_model_tests/tests/nvgre.json index f1c993a1753..e776b0d9064 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests/nvgre.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/nvgre.json @@ -13,9 +13,9 @@ "eStrKey": "LeafRef" }, - "NVGRE_TUNNEL_MAP_UNEXISTING_VLAN_NAME": { - "desc": "Unexisting VLAN NAME", - "eStrKey": "LeafRef" + "NVGRE_TUNNEL_MAP_INVALID_VLAN_ID": { + "desc": "Invalid VLAN ID", + "eStrKey": "Pattern" }, "NVGRE_TUNNEL_MAP_INVALID_VSID": { diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/nvgre.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/nvgre.json index 741770ac659..8c2588fa7d3 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/nvgre.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/nvgre.json @@ -22,7 +22,7 @@ "NVGRE_TUNNEL_MAP_LIST": [ { "tunnel_name": "tunnel_1", - "vlan_name": "Vlan200", + "tunnel_map_name": "Vlan200", "vlan_id": 200, "vsid": 5000 } @@ -59,7 +59,7 @@ "NVGRE_TUNNEL_MAP_LIST": [ { "tunnel_name": "INVALID", - "vlan_name": "Vlan200", + "tunnel_map_name": "Vlan200", "vlan_id": 200, "vsid": 5000 } @@ -68,7 +68,7 @@ } }, - "NVGRE_TUNNEL_MAP_UNEXISTING_VLAN_NAME": { + "NVGRE_TUNNEL_MAP_INVALID_VLAN_ID": { "sonic-nvgre-tunnel:sonic-nvgre-tunnel": { "sonic-nvgre-tunnel:NVGRE_TUNNEL": { "NVGRE_TUNNEL_LIST": [ @@ -82,8 +82,8 @@ "NVGRE_TUNNEL_MAP_LIST": [ { "tunnel_name": "tunnel_1", - "vlan_name": "Vlan200", - "vlan_id": 200, + "tunnel_map_name": "Vlan200", + "vlan_id": 5000, "vsid": 5000 } ] @@ -114,7 +114,7 @@ "NVGRE_TUNNEL_MAP_LIST": [ { "tunnel_name": "tunnel_1", - "vlan_name": "Vlan200", + "tunnel_map_name": "Vlan200", "vlan_id": 200, "vsid": 999999999 } diff --git a/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang b/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang index 4ecaef1505e..f255b30964c 100644 --- a/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang +++ b/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang @@ -57,7 +57,7 @@ module sonic-nvgre-tunnel { list NVGRE_TUNNEL_MAP_LIST { - key "tunnel_name vlan_name"; + key "tunnel_name tunnel_map_name"; leaf tunnel_name { description "NVGRE Tunnel name"; @@ -67,11 +67,11 @@ module sonic-nvgre-tunnel { } } - leaf vlan_name { - description "VLAN name"; + leaf tunnel_map_name { + description "NVGRE Tunnel map name"; - type leafref { - path /vlan:sonic-vlan/vlan:VLAN/vlan:VLAN_LIST/vlan:name; + type string { + length 1..255; } } From b687e8ed2e96b0be930fbdfe35f4f21f77a03833 Mon Sep 17 00:00:00 2001 From: Vadym Hlushko Date: Mon, 14 Feb 2022 14:38:52 +0000 Subject: [PATCH 6/7] Added NVGRE yang model to setup.py Signed-off-by: Vadym Hlushko --- src/sonic-yang-models/setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/sonic-yang-models/setup.py b/src/sonic-yang-models/setup.py index 1f9b51b0c56..c18d0c23566 100644 --- a/src/sonic-yang-models/setup.py +++ b/src/sonic-yang-models/setup.py @@ -108,6 +108,7 @@ def run(self): './yang-models/sonic-mirror-session.yang', './yang-models/sonic-ntp.yang', './yang-models/sonic-nat.yang', + './yang-models/sonic-nvgre-tunnel.yang', './yang-models/sonic-pbh.yang', './yang-models/sonic-port.yang', './yang-models/sonic-policer.yang', From e89dac25d5fea8f324d192b038c868801d1ebb97 Mon Sep 17 00:00:00 2001 From: Vadym Hlushko Date: Mon, 14 Feb 2022 16:11:14 +0000 Subject: [PATCH 7/7] Minor codestyle improvements Signed-off-by: Vadym Hlushko --- src/sonic-yang-models/setup.py | 1 + .../tests/files/sample_config_db.json | 4 ++++ .../yang-models/sonic-nvgre-tunnel.yang | 10 +++++++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/sonic-yang-models/setup.py b/src/sonic-yang-models/setup.py index c18d0c23566..17dcdeeaa5b 100644 --- a/src/sonic-yang-models/setup.py +++ b/src/sonic-yang-models/setup.py @@ -166,6 +166,7 @@ def run(self): './cvlyang-models/sonic-mgmt_vrf.yang', './cvlyang-models/sonic-ntp.yang', './cvlyang-models/sonic-nat.yang', + './cvlyang-models/sonic-nvgre-tunnel.yang', './cvlyang-models/sonic-pbh.yang', './cvlyang-models/sonic-policer.yang', './cvlyang-models/sonic-port.yang', diff --git a/src/sonic-yang-models/tests/files/sample_config_db.json b/src/sonic-yang-models/tests/files/sample_config_db.json index ee3620c13b7..6c27047c9bc 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -1539,6 +1539,8 @@ "pfc_enable" : "3,4" } }, + + "MCLAG_DOMAIN": { "123": { "source_ip": "12.1.1.1", @@ -1558,6 +1560,8 @@ "unique_ip": "enable" } }, + + "MIRROR_SESSION": { "erspan": { "dscp": "10", diff --git a/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang b/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang index f255b30964c..42ab3921a4a 100644 --- a/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang +++ b/src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang @@ -13,7 +13,15 @@ module sonic-nvgre-tunnel { prefix vlan; } - description "NVGRE Tunnel YANG Module for SONiC OS"; + + organization + "SONiC"; + + contact + "SONiC"; + + description + "NVGRE Tunnel YANG Module for SONiC OS"; revision 2021-10-31 { description