#### Why I did it Create SONIC Yang model for Telemetry_client #### How I did it Defined Yang models based on Guideline doc: https://github.com/Azure/SONiC/blob/master/doc/mgmt/SONiC_YANG_Model_Guidelines.md and https://github.com/Azure/sonic-utilities/blob/master/doc/Command-Reference.md #### How to verify it Added test cases to verify it.
This commit is contained in:
parent
c4c621c614
commit
ae71988b9a
@ -1,3 +1,4 @@
|
||||
=======
|
||||
# SONiC Configuration Database Manual
|
||||
|
||||
Table of Contents
|
||||
|
@ -151,6 +151,7 @@ setup(
|
||||
'./yang-models/sonic-system-tacacs.yang',
|
||||
'./yang-models/sonic-system-radius.yang',
|
||||
'./yang-models/sonic-telemetry.yang',
|
||||
'./yang-models/sonic-telemetry_client.yang',
|
||||
'./yang-models/sonic-gnmi.yang',
|
||||
'./yang-models/sonic-tunnel.yang',
|
||||
'./yang-models/sonic-types.yang',
|
||||
@ -231,6 +232,7 @@ setup(
|
||||
'./cvlyang-models/sonic-system-aaa.yang',
|
||||
'./cvlyang-models/sonic-system-tacacs.yang',
|
||||
'./cvlyang-models/sonic-telemetry.yang',
|
||||
'./cvlyang-models/sonic-telemetry_client.yang',
|
||||
'./cvlyang-models/sonic-gnmi.yang',
|
||||
'./cvlyang-models/sonic-types.yang',
|
||||
'./cvlyang-models/sonic-versions.yang',
|
||||
|
@ -1177,6 +1177,24 @@
|
||||
"port": "50051"
|
||||
}
|
||||
},
|
||||
"TELEMETRY_CLIENT": {
|
||||
"Global": {
|
||||
"encoding": "JSON_IETF",
|
||||
"retry_interval": "30",
|
||||
"src_ip": "30.57.185.38",
|
||||
"unidirectional": "true"
|
||||
},
|
||||
"DestinationGroup_HS": {
|
||||
"dst_addr": "30.57.186.214:8081,30.57.185.39:8081"
|
||||
},
|
||||
"Subscription_HS_RDMA": {
|
||||
"dst_group": "HS",
|
||||
"path_target": "COUNTERS_DB",
|
||||
"paths": "COUNTERS/Ethernet*,COUNTERS_PORT_NAME_MAP",
|
||||
"report_interval": "5000",
|
||||
"report_type": "periodic"
|
||||
}
|
||||
},
|
||||
"GNMI": {
|
||||
"certs": {
|
||||
"ca_crt": "/etc/sonic/credentials/dsmsroot.cer",
|
||||
|
@ -0,0 +1,23 @@
|
||||
{
|
||||
"PASSED": {
|
||||
"desc": "telemetry_client passed"
|
||||
},
|
||||
"INCORRECT_DST_GROUP": {
|
||||
"desc": "INCORRECT DST_GROUP FIELD IN TELEMETRY_CLIENT TABLE.",
|
||||
"eStrKey" : "Must"
|
||||
},
|
||||
"SRC_IP_INCORRECT_FORMAT": {
|
||||
"desc": "Add src ip which is not in correct ip-prefix format.",
|
||||
"eStrKey" : "InvalidValue",
|
||||
"eStr": ["src_ip"]
|
||||
},
|
||||
"ENCODING_WRONG_VALUE": {
|
||||
"desc": "Configure wrong value for encoding.",
|
||||
"eStrKey" : "InvalidValue",
|
||||
"eStr": ["encoding"]
|
||||
},
|
||||
"DST_ADDR_INCORRECT_FORMAT": {
|
||||
"desc": "Add dst_addr which is not in correct ip-port format.",
|
||||
"eStrKey" : "Pattern"
|
||||
}
|
||||
}
|
@ -0,0 +1,142 @@
|
||||
{
|
||||
"PASSED": {
|
||||
"sonic-telemetry_client:sonic-telemetry_client": {
|
||||
"sonic-telemetry_client:TELEMETRY_CLIENT": {
|
||||
"Global": {
|
||||
"encoding": "JSON_IETF",
|
||||
"retry_interval": "30",
|
||||
"src_ip": "30.57.185.38",
|
||||
"unidirectional": "true"
|
||||
},
|
||||
"TELEMETRY_CLIENT_DS_LIST": [
|
||||
{
|
||||
"prefix": "DestinationGroup_HS",
|
||||
"dst_addr": "30.57.186.214:8081,30.57.185.39:8081"
|
||||
}
|
||||
],
|
||||
"TELEMETRY_CLIENT_SUB_LIST": [
|
||||
{
|
||||
"prefix": "Subscription_HS_RDMA",
|
||||
"dst_group": "HS",
|
||||
"path_target": "COUNTERS_DB",
|
||||
"paths": "COUNTERS/Ethernet*,COUNTERS_PORT_NAME_MAP",
|
||||
"report_interval": "5000",
|
||||
"report_type": "periodic"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"INCORRECT_DST_GROUP": {
|
||||
"sonic-telemetry_client:sonic-telemetry_client": {
|
||||
"sonic-telemetry_client:TELEMETRY_CLIENT": {
|
||||
"Global": {
|
||||
"encoding": "JSON_IETF",
|
||||
"retry_interval": "30",
|
||||
"src_ip": "30.57.185.38",
|
||||
"unidirectional": "true"
|
||||
},
|
||||
"TELEMETRY_CLIENT_DS_LIST": [
|
||||
{
|
||||
"prefix": "DestinationGroup_HS",
|
||||
"dst_addr": "30.57.186.214:8081,30.57.185.39:8081"
|
||||
}
|
||||
],
|
||||
"TELEMETRY_CLIENT_SUB_LIST": [
|
||||
{
|
||||
"prefix": "Subscription_HS_RDMA",
|
||||
"dst_group": "FS",
|
||||
"path_target": "COUNTERS_DB",
|
||||
"paths": "COUNTERS/Ethernet*,COUNTERS_PORT_NAME_MAP",
|
||||
"report_interval": "5000",
|
||||
"report_type": "periodic"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"SRC_IP_INCORRECT_FORMAT": {
|
||||
"sonic-telemetry_client:sonic-telemetry_client": {
|
||||
"sonic-telemetry_client:TELEMETRY_CLIENT": {
|
||||
"Global": {
|
||||
"encoding": "JSON_IETF",
|
||||
"retry_interval": "30",
|
||||
"src_ip": "30.57.185.388",
|
||||
"unidirectional": "true"
|
||||
},
|
||||
"TELEMETRY_CLIENT_DS_LIST": [
|
||||
{
|
||||
"prefix": "DestinationGroup_HS",
|
||||
"dst_addr": "30.57.186.214:8081,30.57.185.39:8081"
|
||||
}
|
||||
],
|
||||
"TELEMETRY_CLIENT_SUB_LIST": [
|
||||
{
|
||||
"prefix": "Subscription_HS_RDMA",
|
||||
"dst_group": "HS",
|
||||
"path_target": "COUNTERS_DB",
|
||||
"paths": "COUNTERS/Ethernet*,COUNTERS_PORT_NAME_MAP",
|
||||
"report_interval": "5000",
|
||||
"report_type": "periodic"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"ENCODING_WRONG_VALUE": {
|
||||
"sonic-telemetry_client:sonic-telemetry_client": {
|
||||
"sonic-telemetry_client:TELEMETRY_CLIENT": {
|
||||
"Global": {
|
||||
"encoding": "Unicode",
|
||||
"retry_interval": "30",
|
||||
"src_ip": "30.57.185.38",
|
||||
"unidirectional": "true"
|
||||
},
|
||||
"TELEMETRY_CLIENT_DS_LIST": [
|
||||
{
|
||||
"prefix": "DestinationGroup_HS",
|
||||
"dst_addr": "30.57.186.214:8081,30.57.185.39:8081"
|
||||
}
|
||||
],
|
||||
"TELEMETRY_CLIENT_SUB_LIST": [
|
||||
{
|
||||
"prefix": "Subscription_HS_RDMA",
|
||||
"dst_group": "HS",
|
||||
"path_target": "COUNTERS_DB",
|
||||
"paths": "COUNTERS/Ethernet*,COUNTERS_PORT_NAME_MAP",
|
||||
"report_interval": "5000",
|
||||
"report_type": "periodic"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"DST_ADDR_INCORRECT_FORMAT": {
|
||||
"sonic-telemetry_client:sonic-telemetry_client": {
|
||||
"sonic-telemetry_client:TELEMETRY_CLIENT": {
|
||||
"Global": {
|
||||
"encoding": "JSON_IETF",
|
||||
"retry_interval": "30",
|
||||
"src_ip": "30.57.185.38",
|
||||
"unidirectional": "true"
|
||||
},
|
||||
"TELEMETRY_CLIENT_DS_LIST": [
|
||||
{
|
||||
"prefix": "DestinationGroup_HS",
|
||||
"dst_addr": "30.57.186.214:80819,30.57.185.39:8081"
|
||||
}
|
||||
],
|
||||
"TELEMETRY_CLIENT_SUB_LIST": [
|
||||
{
|
||||
"prefix": "Subscription_HS_RDMA",
|
||||
"dst_group": "HS",
|
||||
"path_target": "COUNTERS_DB",
|
||||
"paths": "COUNTERS/Ethernet*,COUNTERS_PORT_NAME_MAP",
|
||||
"report_interval": "5000",
|
||||
"report_type": "periodic"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
140
src/sonic-yang-models/yang-models/sonic-telemetry_client.yang
Normal file
140
src/sonic-yang-models/yang-models/sonic-telemetry_client.yang
Normal file
@ -0,0 +1,140 @@
|
||||
module sonic-telemetry_client {
|
||||
|
||||
yang-version 1.1;
|
||||
|
||||
namespace "http://github.com/sonic-net/sonic-telemetry_client";
|
||||
prefix telemetry_client;
|
||||
|
||||
import ietf-inet-types {
|
||||
prefix inet;
|
||||
}
|
||||
|
||||
import sonic-types {
|
||||
prefix stypes;
|
||||
}
|
||||
|
||||
organization
|
||||
"SONiC";
|
||||
|
||||
contact
|
||||
"SONiC";
|
||||
|
||||
description
|
||||
"TELEMETRY_CLIENT yang Module for SONiC OS";
|
||||
|
||||
revision 2023-01-12 {
|
||||
description
|
||||
"First revision";
|
||||
}
|
||||
|
||||
typedef report-type {
|
||||
type enumeration {
|
||||
enum periodic;
|
||||
enum stream;
|
||||
enum once;
|
||||
}
|
||||
}
|
||||
typedef path_target {
|
||||
type enumeration {
|
||||
enum APPL_DB;
|
||||
enum CONFIG_DB;
|
||||
enum COUNTERS_DB;
|
||||
enum STATE_DB;
|
||||
enum OTHERS;
|
||||
}
|
||||
}
|
||||
|
||||
typedef encoding {
|
||||
type enumeration {
|
||||
enum JSON_IETF;
|
||||
enum ASCII;
|
||||
enum BYTES;
|
||||
enum PROTO;
|
||||
}
|
||||
}
|
||||
|
||||
typedef ipv4-port {
|
||||
type string {
|
||||
pattern
|
||||
'((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
|
||||
+ '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]):'
|
||||
+ '([0-9]|[1-9]\d{1,3}|[1-5]\d{1,4}|6[0-4]\d{1,3}|65[0-4]\d{1,2}|655[0-2][0-9]|6553[0-5]),?)+';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
container sonic-telemetry_client{
|
||||
|
||||
container TELEMETRY_CLIENT {
|
||||
container Global {
|
||||
leaf retry_interval {
|
||||
type uint64;
|
||||
description "retry_interval unit s";
|
||||
}
|
||||
|
||||
leaf src_ip {
|
||||
type inet:ip-address;
|
||||
}
|
||||
|
||||
leaf encoding {
|
||||
type encoding;
|
||||
}
|
||||
|
||||
leaf unidirectional {
|
||||
type boolean;
|
||||
default true;
|
||||
}
|
||||
}
|
||||
|
||||
list TELEMETRY_CLIENT_DS_LIST {
|
||||
ordered-by user;
|
||||
key "prefix";
|
||||
|
||||
leaf prefix {
|
||||
type string {
|
||||
pattern "DestinationGroup_" + ".*";
|
||||
}
|
||||
}
|
||||
|
||||
leaf dst_addr {
|
||||
type ipv4-port;
|
||||
}
|
||||
}
|
||||
|
||||
list TELEMETRY_CLIENT_SUB_LIST {
|
||||
ordered-by user;
|
||||
key "prefix";
|
||||
|
||||
leaf prefix {
|
||||
type string {
|
||||
pattern "Subscription_" + ".*";
|
||||
}
|
||||
}
|
||||
|
||||
leaf dst_group {
|
||||
must "(contains(../../TELEMETRY_CLIENT_DS_LIST/prefix, current()))";
|
||||
type string;
|
||||
}
|
||||
|
||||
leaf path_target {
|
||||
type path_target;
|
||||
}
|
||||
|
||||
leaf paths {
|
||||
type string;
|
||||
}
|
||||
|
||||
leaf report_interval {
|
||||
type uint64;
|
||||
description "report_interval unit ms";
|
||||
default 5000;
|
||||
}
|
||||
|
||||
leaf report_type {
|
||||
type report-type;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user