From ad05e93d06b68aa5e2573c55ef4207ced9455946 Mon Sep 17 00:00:00 2001 From: Jing Zhang Date: Thu, 25 Aug 2022 08:46:45 -0700 Subject: [PATCH] [YANG] add peer switch model (#11828) Why I did it Address issue #10966 sign-off: Jing Zhang zhangjing@microsoft.com How I did it Add sonic-peer-switch.yang and unit tests. How to verify it Compile Compile target/python-wheels/sonic_yang_mgmt-1.0-py3-none-any.whl and target/python-wheels/sonic_yang_models-1.0-py3-none-any.whl. Which release branch to backport (provide reason below if selected) 201811 201911 202006 202012 202106 202111 202205 Description for the changelog Link to config_db schema for YANG module changes https://github.com/sonic-net/sonic-buildimage/blob/b721ff87b976a6a38bdd65443ea3bc686014e783/src/sonic-yang-models/doc/Configuration.md#peer-switch --- src/sonic-yang-models/doc/Configuration.md | 1 + src/sonic-yang-models/setup.py | 1 + .../tests/files/sample_config_db.json | 5 ++ .../yang_model_tests/tests/peer-switch.json | 13 +++++ .../tests_config/peer-switch.json | 39 +++++++++++++++ .../yang-models/sonic-peer-switch.yang | 49 +++++++++++++++++++ 6 files changed, 108 insertions(+) create mode 100644 src/sonic-yang-models/tests/yang_model_tests/tests/peer-switch.json create mode 100644 src/sonic-yang-models/tests/yang_model_tests/tests_config/peer-switch.json create mode 100644 src/sonic-yang-models/yang-models/sonic-peer-switch.yang diff --git a/src/sonic-yang-models/doc/Configuration.md b/src/sonic-yang-models/doc/Configuration.md index eea1ed68cf21..98d10a5b5dc9 100644 --- a/src/sonic-yang-models/doc/Configuration.md +++ b/src/sonic-yang-models/doc/Configuration.md @@ -40,6 +40,7 @@ Table of Contents * [MUX_CABLE](#muxcable) * [NTP Global Configuration](#ntp-global-configuration) * [NTP and SYSLOG servers](#ntp-and-syslog-servers) + * [Peer Switch](#peer-switch) * [Policer](#policer) * [Port](#port) * [Port Channel](#port-channel) diff --git a/src/sonic-yang-models/setup.py b/src/sonic-yang-models/setup.py index b49b9964360e..b44bbb8c92b0 100644 --- a/src/sonic-yang-models/setup.py +++ b/src/sonic-yang-models/setup.py @@ -156,6 +156,7 @@ def run(self): './yang-models/sonic-storm-control.yang', './yang-models/sonic-tc-priority-group-map.yang', './yang-models/sonic-tc-queue-map.yang', + './yang-models/sonic-peer-switch.yang', './yang-models/sonic-pfc-priority-queue-map.yang', './yang-models/sonic-pfc-priority-priority-group-map.yang', './yang-models/sonic-port-qos-map.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 d67fc27477a9..bc715b9a47e9 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -1806,6 +1806,11 @@ } }, + "PEER_SWITCH": { + "vlab-05": { + "address_ipv4": "10.1.0.33" + } + }, "MUX_CABLE": { "Ethernet4": { diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/peer-switch.json b/src/sonic-yang-models/tests/yang_model_tests/tests/peer-switch.json new file mode 100644 index 000000000000..b8ee10dbdf9c --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/peer-switch.json @@ -0,0 +1,13 @@ +{ + "PEER_SWITCH_LOAD_NORMAL": { + "desc": "Load PEER_SWITCH for dualtor device." + }, + "PEER_SWITCH_MISSING_DEVICE__NAME": { + "desc": "Load PEER_SWITCH missing PEER Device name.", + "eStrKey": "Mandatory" + }, + "PEER_SWITCH_INVALID_IP_ADDRESS": { + "desc": "Load PEER_SWITCH with invalid IPv4 Address.", + "eStrKey": "Pattern" + } +} diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/peer-switch.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/peer-switch.json new file mode 100644 index 000000000000..e3857fc392e8 --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/peer-switch.json @@ -0,0 +1,39 @@ +{ + "PEER_SWITCH_LOAD_NORMAL": { + "sonic-peer-switch:sonic-peer-switch": { + "sonic-peer-switch:PEER_SWITCH": { + "PEER_SWITCH_LIST": [ + { + "peer_switch": "vlab-05", + "address_ipv4": "10.1.0.33" + } + ] + } + } + }, + + "PEER_SWITCH_MISSING_DEVICE__NAME": { + "sonic-peer-switch:sonic-peer-switch": { + "sonic-peer-switch:PEER_SWITCH": { + "PEER_SWITCH_LIST": [ + { + "address_ipv4": "10.1.0.33" + } + ] + } + } + }, + + "PEER_SWITCH_INVALID_IP_ADDRESS": { + "sonic-peer-switch:sonic-peer-switch": { + "sonic-peer-switch:PEER_SWITCH": { + "PEER_SWITCH_LIST": [ + { + "peer_switch": "vlab-05", + "address_ipv4": "10.1.0.33/32" + } + ] + } + } + } +} diff --git a/src/sonic-yang-models/yang-models/sonic-peer-switch.yang b/src/sonic-yang-models/yang-models/sonic-peer-switch.yang new file mode 100644 index 000000000000..79a94c95c2c0 --- /dev/null +++ b/src/sonic-yang-models/yang-models/sonic-peer-switch.yang @@ -0,0 +1,49 @@ +module sonic-peer-switch { + yang-version 1.1; + namespace "http://github.com/Azure/sonic-peer-switch"; + prefix peer_switch; + + import ietf-inet-types { + prefix inet; + } + + import sonic-types { + prefix stypes; + } + + organization + "SONiC"; + + contact + "SONiC"; + + description + "SONiC DualToR peer switch data"; + + revision 2022-08-23 { + description + "Initial revision"; + } + + container sonic-peer-switch { + container PEER_SWITCH { + list PEER_SWITCH_LIST { + max-elements 1; + + key "peer_switch"; + + leaf peer_switch { + type stypes:hostname; + + description "SONiC DualToR peer host name."; + } + + leaf address_ipv4 { + type inet:ipv4-address; + + description "SONiC DualToR peer's IPv4 address."; + } + } + } + } +}