Skip to content

Commit

Permalink
[nvgre] Added YANG model and tests (sonic-net#9136)
Browse files Browse the repository at this point in the history
- Why I did it
NVGRE Tunnel feature extends the Config DB with new tables. These tables require a new YANG model.

- How I did it
Added a new YANG model sonic-nvgre-tunnel.yang

- How to verify it
Added YANG test cases.

Signed-off-by: Vadym Hlushko <vadymh@nvidia.com>
  • Loading branch information
vadymhlushko-mlnx authored Feb 17, 2022
1 parent fb752a4 commit 5ce75ac
Show file tree
Hide file tree
Showing 5 changed files with 285 additions and 2 deletions.
2 changes: 2 additions & 0 deletions src/sonic-yang-models/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down Expand Up @@ -165,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',
Expand Down
21 changes: 19 additions & 2 deletions src/sonic-yang-models/tests/files/sample_config_db.json
Original file line number Diff line number Diff line change
Expand Up @@ -1540,7 +1540,7 @@
}
},


"MCLAG_DOMAIN": {
"123": {
"source_ip": "12.1.1.1",
Expand Down Expand Up @@ -1584,6 +1584,8 @@

}
},


"POLICER": {
"everflow_static_policer": {
"meter_type": "bytes",
Expand All @@ -1592,8 +1594,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": {
Expand Down
25 changes: 25 additions & 0 deletions src/sonic-yang-models/tests/yang_model_tests/tests/nvgre.json
Original file line number Diff line number Diff line change
@@ -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": "InvalidValue"
},

"NVGRE_TUNNEL_MAP_UNEXISTING_NVGRE_TUNNEL_NAME": {
"desc": "Unexisting NVGRE_TUNNEL",
"eStrKey": "LeafRef"
},

"NVGRE_TUNNEL_MAP_INVALID_VLAN_ID": {
"desc": "Invalid VLAN ID",
"eStrKey": "Pattern"
},

"NVGRE_TUNNEL_MAP_INVALID_VSID": {
"desc": "INVALID VSID value for NVGRE_TUNNEL_MAP",
"eStrKey": "Pattern"
}
}
125 changes: 125 additions & 0 deletions src/sonic-yang-models/tests/yang_model_tests/tests_config/nvgre.json
Original file line number Diff line number Diff line change
@@ -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",
"tunnel_map_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",
"tunnel_map_name": "Vlan200",
"vlan_id": 200,
"vsid": 5000
}
]
}
}
},

"NVGRE_TUNNEL_MAP_INVALID_VLAN_ID": {
"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",
"tunnel_map_name": "Vlan200",
"vlan_id": 5000,
"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",
"tunnel_map_name": "Vlan200",
"vlan_id": 200,
"vsid": 999999999
}
]
}
}
}
}
114 changes: 114 additions & 0 deletions src/sonic-yang-models/yang-models/sonic-nvgre-tunnel.yang
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
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;
}


organization
"SONiC";

contact
"SONiC";

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 {
description "Source IP address";

mandatory true;
type inet:ip-address;
}

}
/* end of NVGRE_TUNNEL_LIST */

}
/* end of container NVGRE_TUNNEL */

container NVGRE_TUNNEL_MAP {

description "NVGRE_TUNNEL_MAP part of config_db.json";

list NVGRE_TUNNEL_MAP_LIST {

key "tunnel_name tunnel_map_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 tunnel_map_name {
description "NVGRE Tunnel map name";

type string {
length 1..255;
}
}

leaf vlan_id {
description "VLAN identifier";

mandatory true;
type uint16 {
range 1..4094;
}
}

leaf vsid {
description "Virtual Subnet Identifier";

mandatory true;
type uint32 {
range 0..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 */

0 comments on commit 5ce75ac

Please sign in to comment.