[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
@ -66,8 +66,9 @@ Table of Contents
|
|||||||
* [LOGGER](#logger)
|
* [LOGGER](#logger)
|
||||||
* [WRED_PROFILE](#wred_profile)
|
* [WRED_PROFILE](#wred_profile)
|
||||||
* [PASSWORD_HARDENING](#password_hardening)
|
* [PASSWORD_HARDENING](#password_hardening)
|
||||||
* [SYSTEM_DEFAULTS table](#systemdefaults-table)
|
* [SYSTEM_DEFAULTS table](#systemdefaults-table)
|
||||||
* [RADIUS](#radius)
|
* [RADIUS](#radius)
|
||||||
|
* [Static DNS](#static-dns)
|
||||||
* [For Developers](#for-developers)
|
* [For Developers](#for-developers)
|
||||||
* [Generating Application Config by Jinja2 Template](#generating-application-config-by-jinja2-template)
|
* [Generating Application Config by Jinja2 Template](#generating-application-config-by-jinja2-template)
|
||||||
* [Incremental Configuration by Subscribing to ConfigDB](#incremental-configuration-by-subscribing-to-configdb)
|
* [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
|
#### 5.2.3 Update value directly in db memory
|
||||||
|
|
||||||
For Developers
|
For Developers
|
||||||
|
@ -107,6 +107,7 @@ setup(
|
|||||||
'./yang-models/sonic-device_neighbor_metadata.yang',
|
'./yang-models/sonic-device_neighbor_metadata.yang',
|
||||||
'./yang-models/sonic-dhcp-server.yang',
|
'./yang-models/sonic-dhcp-server.yang',
|
||||||
'./yang-models/sonic-dhcpv6-relay.yang',
|
'./yang-models/sonic-dhcpv6-relay.yang',
|
||||||
|
'./yang-models/sonic-dns.yang',
|
||||||
'./yang-models/sonic-events-bgp.yang',
|
'./yang-models/sonic-events-bgp.yang',
|
||||||
'./yang-models/sonic-events-common.yang',
|
'./yang-models/sonic-events-common.yang',
|
||||||
'./yang-models/sonic-events-dhcp-relay.yang',
|
'./yang-models/sonic-events-dhcp-relay.yang',
|
||||||
|
@ -8,6 +8,10 @@
|
|||||||
"192.0.0.8": {},
|
"192.0.0.8": {},
|
||||||
"192.0.0.8": {}
|
"192.0.0.8": {}
|
||||||
},
|
},
|
||||||
|
"DNS_NAMESERVER": {
|
||||||
|
"1.1.1.1": {},
|
||||||
|
"fe80:1000:2000:3000::1": {}
|
||||||
|
},
|
||||||
"BUFFER_POOL": {
|
"BUFFER_POOL": {
|
||||||
"ingress_lossy_pool": {
|
"ingress_lossy_pool": {
|
||||||
"mode": "static",
|
"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