Skip to content

Commit 8315d11

Browse files
authored
Add YANG model and unit tests for sonic-telemetry (sonic-net#10840)
- Why I did it YANG schema is missing for sonic-telemetry - How I did it Added YANG schema to sonic-yang-models and appropriate unit tests inside of test and test_config - How to verify it Build sonic-yang-models python wheels target and verify that unit tests are passing
1 parent 11f0bff commit 8315d11

File tree

6 files changed

+197
-2
lines changed

6 files changed

+197
-2
lines changed

src/sonic-yang-models/doc/Configuration.md

+21-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ Table of Contents
4444
* [Queue](#queue)
4545
* [Tacplus Server](#tacplus-server)
4646
* [TC to Priority group map](#tc-to-priority-group-map)
47-
* [TC to Queue map](#tc-to-queue-map)
47+
* [TC to Queue map](#tc-to-queue-map)
48+
* [Telemetry](#telemetry)
4849
* [Versions](#versions)
4950
* [VLAN](#vlan)
5051
* [VLAN_MEMBER](#vlan_member)
@@ -1355,6 +1356,25 @@ name as object key and member list as attribute.
13551356
}
13561357
```
13571358

1359+
### Telemetry
1360+
1361+
```
1362+
{
1363+
"TELEMETRY": {
1364+
"certs": {
1365+
"ca_crt": "/etc/sonic/telemetry/dsmsroot.cer",
1366+
"server_crt": "/etc/sonic/telemetry/streamingtelemetryserver.cer",
1367+
"server_key": "/etc/sonic/telemetry/streamingtelemetryserver.key"
1368+
},
1369+
"gnmi": {
1370+
"client_auth": "true",
1371+
"log_level": "2",
1372+
"port": "50051"
1373+
}
1374+
}
1375+
}
1376+
```
1377+
13581378
### Versions
13591379

13601380
This table is where the curret version of the software is recorded.

src/sonic-yang-models/setup.py

+2
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ def run(self):
126126
'./yang-models/sonic-syslog.yang',
127127
'./yang-models/sonic-system-aaa.yang',
128128
'./yang-models/sonic-system-tacacs.yang',
129+
'./yang-models/sonic-telemetry.yang',
129130
'./yang-models/sonic-types.yang',
130131
'./yang-models/sonic-versions.yang',
131132
'./yang-models/sonic-vlan.yang',
@@ -184,6 +185,7 @@ def run(self):
184185
'./cvlyang-models/sonic-sflow.yang',
185186
'./cvlyang-models/sonic-system-aaa.yang',
186187
'./cvlyang-models/sonic-system-tacacs.yang',
188+
'./cvlyang-models/sonic-telemetry.yang',
187189
'./cvlyang-models/sonic-types.yang',
188190
'./cvlyang-models/sonic-versions.yang',
189191
'./cvlyang-models/sonic-vlan.yang',

src/sonic-yang-models/tests/files/sample_config_db.json

+13-1
Original file line numberDiff line numberDiff line change
@@ -1045,6 +1045,18 @@
10451045
"VERSION": "version_1_0_3"
10461046
}
10471047
},
1048+
"TELEMETRY": {
1049+
"certs": {
1050+
"ca_crt": "/etc/sonic/telemetry/dsmsroot.cer",
1051+
"server_crt": "/etc/sonic/telemetry/streamingtelemetryserver.cer",
1052+
"server_key": "/etc/sonic/telemetry/streamingtelemetryserver.key"
1053+
},
1054+
"gnmi": {
1055+
"client_auth": "true",
1056+
"log_level": "2",
1057+
"port": "50051"
1058+
}
1059+
},
10481060
"FLEX_COUNTER_TABLE": {
10491061
"PFCWD": {
10501062
"FLEX_COUNTER_STATUS": "enable"
@@ -1516,7 +1528,7 @@
15161528
"pir": "2560000",
15171529
"type": "STRICT"
15181530
}
1519-
},
1531+
},
15201532

15211533
"WRED_PROFILE": {
15221534
"Wred1": {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"TELEMETRY_TABLE_WITH_INCORRECT_CERT": {
3+
"desc": "TABLE_WITH_INCORRECT_CERT failure.",
4+
"eStrKey": "Pattern"
5+
},
6+
"TELEMETRY_TABLE_WITH_INCORRECT_CLIENT_AUTH": {
7+
"desc": "TABLE_WITH_INCORRECT_CLIENT_AUTH failure",
8+
"eStrKey": "InvalidValue"
9+
},
10+
"TELEMETRY_TABLE_WITH_INCORRECT_PORT": {
11+
"desc": "TABLE_WITH_INCORRECT_PORT failure.",
12+
"eStrKey": "InvalidValue"
13+
},
14+
"TELEMETRY_TABLE_WITH_VALID_CONFIG": {
15+
"desc": "TABLE WITH VALID CONFIG."
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
{
2+
"TELEMETRY_TABLE_WITH_INCORRECT_CERT": {
3+
"sonic-telemetry:sonic-telemetry": {
4+
"sonic-telemetry:TELEMETRY": {
5+
"certs": {
6+
"ca_crt": "abcd.config",
7+
"server_crt": "a/b/c",
8+
"server_key": "123"
9+
},
10+
"gnmi": {
11+
"client_auth": "true",
12+
"log_level": "2",
13+
"port": "50051"
14+
}
15+
}
16+
}
17+
},
18+
"TELEMETRY_TABLE_WITH_INCORRECT_CLIENT_AUTH": {
19+
"sonic-telemetry:sonic-telemetry": {
20+
"sonic-telemetry:TELEMETRY": {
21+
"certs": {
22+
"ca_crt": "/etc/sonic/telemetry/dsmsroot.cer",
23+
"server_crt": "/etc/sonic/telemetry/streamingtelemetryserver.cer",
24+
"server_key": "/etc/sonic/telemetry/streamingtelemetryserver.key"
25+
},
26+
"gnmi": {
27+
"client_auth": "up",
28+
"log_level": "2",
29+
"port": "50051"
30+
}
31+
}
32+
}
33+
},
34+
"TELEMETRY_TABLE_WITH_INCORRECT_PORT": {
35+
"sonic-telemetry:sonic-telemetry": {
36+
"sonic-telemetry:TELEMETRY": {
37+
"certs": {
38+
"ca_crt": "/etc/sonic/telemetry/dsmsroot.cer",
39+
"server_crt": "/etc/sonic/telemetry/streamingtelemetryserver.cer",
40+
"server_key": "/etc/sonic/telemetry/streamingtelemetryserver.key"
41+
},
42+
"gnmi": {
43+
"client_auth": "true",
44+
"log_level": "2",
45+
"port": "abc"
46+
}
47+
}
48+
}
49+
},
50+
"TELEMETRY_TABLE_WITH_VALID_CONFIG": {
51+
"sonic-telemetry:sonic-telemetry": {
52+
"sonic-telemetry:TELEMETRY": {
53+
"certs": {
54+
"ca_crt": "/etc/sonic/telemetry/dsmsroot.cer",
55+
"server_crt": "/etc/sonic/telemetry/streamingtelemetryserver.cer",
56+
"server_key": "/etc/sonic/telemetry/streamingtelemetryserver.key"
57+
},
58+
"gnmi": {
59+
"client_auth": "true",
60+
"log_level": "2",
61+
"port": "50051"
62+
}
63+
}
64+
}
65+
}
66+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
module sonic-telemetry {
2+
3+
yang-version 1.1;
4+
5+
namespace "http://github.com/Azure/sonic-telemetry";
6+
prefix telemetry;
7+
8+
import ietf-inet-types {
9+
prefix inet;
10+
}
11+
12+
organization
13+
"SONiC";
14+
15+
contact
16+
"SONiC";
17+
18+
description "TELEMETRY YANG Module for SONiC OS";
19+
20+
revision 2022-05-13 {
21+
description "First Revision";
22+
}
23+
24+
container sonic-telemetry {
25+
26+
container TELEMETRY {
27+
28+
description "TELEMETRY TABLE part of config_db.json";
29+
30+
container certs {
31+
32+
leaf ca_crt {
33+
type string {
34+
pattern '(/[a-zA-Z0-9_-]+)*/([a-zA-Z0-9_-]+).cer';
35+
}
36+
description "Local path for ca_crt.";
37+
}
38+
39+
leaf server_crt {
40+
type string {
41+
pattern '(/[a-zA-Z0-9_-]+)*/([a-zA-Z0-9_-]+).cer';
42+
}
43+
description "Local path for server_crt.";
44+
}
45+
46+
leaf server_key {
47+
type string {
48+
pattern '(/[a-zA-Z0-9_-]+)*/([a-zA-Z0-9_-]+).key';
49+
}
50+
description "Local path for server_key.";
51+
}
52+
53+
}
54+
55+
container gnmi {
56+
57+
leaf client_auth {
58+
type boolean;
59+
description "Flag for requiring client auth.";
60+
}
61+
62+
leaf log_level {
63+
type uint8 {
64+
range 0..100;
65+
}
66+
description "Log level for gnmi.";
67+
}
68+
69+
leaf port {
70+
type inet:port-number;
71+
description "Port gnmi runs on.";
72+
}
73+
74+
}
75+
76+
}
77+
}
78+
}

0 commit comments

Comments
 (0)