Skip to content

Commit

Permalink
Update TELEMETRY_CLIENT YANG model (#16861)
Browse files Browse the repository at this point in the history
### Why I did it
Github issue: #16356. The YANG definition breaks GCU feature.

We can either update sonic_yang and GCU's search algorithm to enable the same key count case or simply update YANG model to solve the issue.

The pros for update YANG model are it could solve the issue directly and we don't need to handle the complicate search algorithm in sonic_yang and GCU. This is the only YANG model that has this issue.

### How I did it
Combine two list into one. The previous YANG validation unit tests are still applicable.
#### How to verify it
Unit test and E2E test
  • Loading branch information
wen587 authored and mssonicbld committed Jan 4, 2024
1 parent b72a740 commit be7321d
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 48 deletions.
26 changes: 26 additions & 0 deletions src/sonic-yang-models/doc/Configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ Table of Contents
* [TC to Priority group map](#tc-to-priority-group-map)
* [TC to Queue map](#tc-to-queue-map)
* [Telemetry](#telemetry)
* [Telemetry client](#telemetry-client)
* [Tunnel](#tunnel)
* [Versions](#versions)
* [VLAN](#vlan)
Expand Down Expand Up @@ -2048,6 +2049,31 @@ and is listed in this table.
}
```

### Telemetry client

```
{
"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"
}
}
}
```

### Tunnel

This table configures the MUX tunnel for Dual-ToR setup
Expand Down
4 changes: 2 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 @@ -1211,10 +1211,10 @@
"src_ip": "30.57.185.38",
"unidirectional": "true"
},
"DestinationGroup_HS": {
"DestinationGroup|HS": {
"dst_addr": "30.57.186.214:8081,30.57.185.39:8081"
},
"Subscription_HS_RDMA": {
"Subscription|HS_RDMA": {
"dst_group": "HS",
"path_target": "COUNTERS_DB",
"paths": "COUNTERS/Ethernet*,COUNTERS_PORT_NAME_MAP",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@
"src_ip": "30.57.185.38",
"unidirectional": "true"
},
"TELEMETRY_CLIENT_DS_LIST": [
"TELEMETRY_CLIENT_LIST": [
{
"prefix": "DestinationGroup_HS",
"prefix": "DestinationGroup",
"name": "HS",
"dst_addr": "30.57.186.214:8081,30.57.185.39:8081"
}
],
"TELEMETRY_CLIENT_SUB_LIST": [
},
{
"prefix": "Subscription_HS_RDMA",
"prefix": "Subscription",
"name": "HS_RDMA",
"dst_group": "HS",
"path_target": "COUNTERS_DB",
"paths": "COUNTERS/Ethernet*,COUNTERS_PORT_NAME_MAP",
Expand All @@ -36,15 +36,15 @@
"src_ip": "30.57.185.38",
"unidirectional": "true"
},
"TELEMETRY_CLIENT_DS_LIST": [
"TELEMETRY_CLIENT_LIST": [
{
"prefix": "DestinationGroup_HS",
"prefix": "DestinationGroup",
"name": "HS",
"dst_addr": "30.57.186.214:8081,30.57.185.39:8081"
}
],
"TELEMETRY_CLIENT_SUB_LIST": [
},
{
"prefix": "Subscription_HS_RDMA",
"prefix": "Subscription",
"name": "HS_RDMA",
"dst_group": "FS",
"path_target": "COUNTERS_DB",
"paths": "COUNTERS/Ethernet*,COUNTERS_PORT_NAME_MAP",
Expand All @@ -64,15 +64,15 @@
"src_ip": "30.57.185.388",
"unidirectional": "true"
},
"TELEMETRY_CLIENT_DS_LIST": [
"TELEMETRY_CLIENT_LIST": [
{
"prefix": "DestinationGroup_HS",
"prefix": "DestinationGroup",
"name": "HS",
"dst_addr": "30.57.186.214:8081,30.57.185.39:8081"
}
],
"TELEMETRY_CLIENT_SUB_LIST": [
},
{
"prefix": "Subscription_HS_RDMA",
"prefix": "Subscription",
"name": "HS_RDMA",
"dst_group": "HS",
"path_target": "COUNTERS_DB",
"paths": "COUNTERS/Ethernet*,COUNTERS_PORT_NAME_MAP",
Expand All @@ -92,15 +92,15 @@
"src_ip": "30.57.185.38",
"unidirectional": "true"
},
"TELEMETRY_CLIENT_DS_LIST": [
"TELEMETRY_CLIENT_LIST": [
{
"prefix": "DestinationGroup_HS",
"prefix": "DestinationGroup",
"name": "HS",
"dst_addr": "30.57.186.214:8081,30.57.185.39:8081"
}
],
"TELEMETRY_CLIENT_SUB_LIST": [
},
{
"prefix": "Subscription_HS_RDMA",
"prefix": "Subscription",
"name": "HS_RDMA",
"dst_group": "HS",
"path_target": "COUNTERS_DB",
"paths": "COUNTERS/Ethernet*,COUNTERS_PORT_NAME_MAP",
Expand All @@ -120,15 +120,15 @@
"src_ip": "30.57.185.38",
"unidirectional": "true"
},
"TELEMETRY_CLIENT_DS_LIST": [
"TELEMETRY_CLIENT_LIST": [
{
"prefix": "DestinationGroup_HS",
"prefix": "DestinationGroup",
"name": "HS",
"dst_addr": "30.57.186.214:80819,30.57.185.39:8081"
}
],
"TELEMETRY_CLIENT_SUB_LIST": [
},
{
"prefix": "Subscription_HS_RDMA",
"prefix": "Subscription",
"name": "HS_RDMA",
"dst_group": "HS",
"path_target": "COUNTERS_DB",
"paths": "COUNTERS/Ethernet*,COUNTERS_PORT_NAME_MAP",
Expand All @@ -139,4 +139,4 @@
}
}
}
}
}
23 changes: 8 additions & 15 deletions src/sonic-yang-models/yang-models/sonic-telemetry_client.yang
Original file line number Diff line number Diff line change
Expand Up @@ -86,33 +86,26 @@ module sonic-telemetry_client {
}
}

list TELEMETRY_CLIENT_DS_LIST {
list TELEMETRY_CLIENT_LIST {
ordered-by user;
key "prefix";
key "prefix name";

leaf prefix {
type string {
pattern "DestinationGroup_" + ".*";
pattern 'Subscription|DestinationGroup';
}
}

leaf dst_addr {
type ipv4-port;
leaf name {
type string;
}
}

list TELEMETRY_CLIENT_SUB_LIST {
ordered-by user;
key "prefix";

leaf prefix {
type string {
pattern "Subscription_" + ".*";
}
leaf dst_addr {
type ipv4-port;
}

leaf dst_group {
must "(contains(../../TELEMETRY_CLIENT_DS_LIST/prefix, current()))";
must "(contains(../../TELEMETRY_CLIENT_LIST/name, current()))";
type string;
}

Expand Down

0 comments on commit be7321d

Please sign in to comment.