[nvgre] Added YANG model and tests (#10095)

- 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>
This commit is contained in:
Vadym Hlushko 2022-03-03 15:58:17 +02:00 committed by GitHub
parent 14de0a1548
commit e104247950
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 280 additions and 2 deletions

View File

@ -109,6 +109,7 @@ setup(
'./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',
@ -167,6 +168,7 @@ setup(
'./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',

View File

@ -1606,6 +1606,8 @@
}
},
"POLICER": {
"everflow_static_policer": {
"meter_type": "bytes",
@ -1615,7 +1617,22 @@
"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": {

View File

@ -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"
}
}

View File

@ -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
}
]
}
}
}
}

View File

@ -0,0 +1,109 @@
module sonic-nvgre-tunnel {
yang-version 1.1;
namespace "http://github.com/Azure/sonic-nvgre-tunnel";
prefix nvgre;
import ietf-inet-types {
prefix inet;
}
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 */