[DNS] yang model for static DNS (#13834)
- Why I did it Add SONiC YANG model for DNS to provide the possibility to configure static DNS entries in Config DB. - How I did it Added sonic-dns.yang file that contains the YANG model for the static DNS configuration. - How to verify it This PR extends YANG model tests to cover DNS configuration. To run the test sonic_yang_models-1.0-py3-none-any.whl should be compiled.
This commit is contained in:
parent
a81ffeb5c2
commit
a82e45a192
@ -68,6 +68,7 @@ Table of Contents
|
||||
* [PASSWORD_HARDENING](#password_hardening)
|
||||
* [SYSTEM_DEFAULTS table](#systemdefaults-table)
|
||||
* [RADIUS](#radius)
|
||||
* [Static DNS](#static-dns)
|
||||
* [For Developers](#for-developers)
|
||||
* [Generating Application Config by Jinja2 Template](#generating-application-config-by-jinja2-template)
|
||||
* [Incremental Configuration by Subscribing to ConfigDB](#incremental-configuration-by-subscribing-to-configdb)
|
||||
@ -2096,6 +2097,19 @@ The RADIUS and RADIUS_SERVER tables define RADIUS configuration parameters. RADI
|
||||
}
|
||||
```
|
||||
|
||||
### Static DNS
|
||||
|
||||
The DNS_NAMESERVER table introduces static DNS nameservers configuration.
|
||||
|
||||
```json
|
||||
{
|
||||
"DNS_NAMESERVER": {
|
||||
"1.1.1.1": {},
|
||||
"fe80:1000:2000:3000::1": {}
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
#### 5.2.3 Update value directly in db memory
|
||||
|
||||
For Developers
|
||||
|
@ -107,6 +107,7 @@ setup(
|
||||
'./yang-models/sonic-device_neighbor_metadata.yang',
|
||||
'./yang-models/sonic-dhcp-server.yang',
|
||||
'./yang-models/sonic-dhcpv6-relay.yang',
|
||||
'./yang-models/sonic-dns.yang',
|
||||
'./yang-models/sonic-events-bgp.yang',
|
||||
'./yang-models/sonic-events-common.yang',
|
||||
'./yang-models/sonic-events-dhcp-relay.yang',
|
||||
|
@ -8,6 +8,10 @@
|
||||
"192.0.0.8": {},
|
||||
"192.0.0.8": {}
|
||||
},
|
||||
"DNS_NAMESERVER": {
|
||||
"1.1.1.1": {},
|
||||
"fe80:1000:2000:3000::1": {}
|
||||
},
|
||||
"BUFFER_POOL": {
|
||||
"ingress_lossy_pool": {
|
||||
"mode": "static",
|
||||
|
13
src/sonic-yang-models/tests/yang_model_tests/tests/dns.json
Normal file
13
src/sonic-yang-models/tests/yang_model_tests/tests/dns.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"DNS_NAMESERVER_TEST" : {
|
||||
"desc": "DNS nameserver configuration in DNS_NAMESERVER table."
|
||||
},
|
||||
"DNS_NAMESERVER_TEST_INVALID_IP" : {
|
||||
"desc": "DNS nameserver configuration with invalid IP value in DNS_NAMESERVER table.",
|
||||
"eStr": "Invalid value"
|
||||
},
|
||||
"DNS_NAMESERVER_TEST_MAX_IP_NUMBER" : {
|
||||
"desc": "DNS nameserver configuration exceeds the maximum IPs in DNS_NAMESERVER table.",
|
||||
"eStr": "Too many elements."
|
||||
}
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
{
|
||||
"DNS_NAMESERVER_TEST": {
|
||||
"sonic-dns:sonic-dns": {
|
||||
"sonic-dns:DNS_NAMESERVER": {
|
||||
"DNS_NAMESERVER_LIST": [
|
||||
{
|
||||
"ip": "192.168.1.1"
|
||||
},
|
||||
{
|
||||
"ip": "fe80:1000:2000:3000::1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"DNS_NAMESERVER_TEST_INVALID_IP": {
|
||||
"sonic-dns:sonic-dns": {
|
||||
"sonic-dns:DNS_NAMESERVER": {
|
||||
"DNS_NAMESERVER_LIST": [
|
||||
{
|
||||
"ip": "1.x.2.x"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"DNS_NAMESERVER_TEST_MAX_IP_NUMBER": {
|
||||
"sonic-dns:sonic-dns": {
|
||||
"sonic-dns:DNS_NAMESERVER": {
|
||||
"DNS_NAMESERVER_LIST": [
|
||||
{
|
||||
"ip": "192.168.1.1"
|
||||
},
|
||||
{
|
||||
"ip": "fe80:1000:2000:3000::2"
|
||||
},
|
||||
{
|
||||
"ip": "192.168.1.3"
|
||||
},
|
||||
{
|
||||
"ip": "fe80:1000:2000:3000::4"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
45
src/sonic-yang-models/yang-models/sonic-dns.yang
Normal file
45
src/sonic-yang-models/yang-models/sonic-dns.yang
Normal file
@ -0,0 +1,45 @@
|
||||
module sonic-dns {
|
||||
|
||||
namespace "http://github.com/sonic-net/sonic-dns";
|
||||
yang-version 1.1;
|
||||
prefix dns;
|
||||
|
||||
import ietf-inet-types {
|
||||
prefix inet;
|
||||
}
|
||||
|
||||
organization
|
||||
"SONiC";
|
||||
|
||||
contact
|
||||
"SONiC";
|
||||
|
||||
description "DNS YANG module for SONiC OS";
|
||||
|
||||
revision 2023-02-14 {
|
||||
description "Initial version";
|
||||
}
|
||||
|
||||
container sonic-dns {
|
||||
|
||||
container DNS_NAMESERVER {
|
||||
|
||||
description "DNS_NAMESERVER part of config_db.json";
|
||||
|
||||
list DNS_NAMESERVER_LIST {
|
||||
max-elements 3;
|
||||
description "List of nameservers IPs";
|
||||
|
||||
key "ip";
|
||||
|
||||
leaf ip {
|
||||
description "IP as DHCP_SERVER";
|
||||
type inet:ip-address;
|
||||
}
|
||||
} /* end of list DNS_NAMESERVER_LIST */
|
||||
|
||||
} /* end of container DNS_NAMESERVER */
|
||||
|
||||
} /* end of container sonic-dns */
|
||||
|
||||
} /* end of module sonic-dns */
|
Reference in New Issue
Block a user