summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoromnom62 <75066712+omnom62@users.noreply.github.com>2024-11-19 20:35:31 +1000
committerGitHub <noreply@github.com>2024-11-19 10:35:31 +0000
commit04c837af1cf89ff42adc42062df48a0dd209a0e1 (patch)
treea67c6f3dd2e07ec5bd742b294b1ed423171f9655
parent67cda0147ab54136ef0604427c5a01a7f4b21986 (diff)
downloadvyos.vyos-04c837af1cf89ff42adc42062df48a0dd209a0e1.tar.gz
vyos.vyos-04c837af1cf89ff42adc42062df48a0dd209a0e1.zip
T6832: VyOS v1.4+ chronyd conf support (#357)
* VyOS v1.4+ chronyd conf support * template typo fix * Making replace tool more robust by distinctive placeholder * allow-clients workaround * test for ntp_global and v1.4 * sanity and change log * sanity fix * updates to tests (dynamic >.pool) and docs * doc update 'system' > 'service'
-rw-r--r--changelogs/fragments/ntp_global.yaml5
-rw-r--r--docs/vyos.vyos.vyos_ntp_global_module.rst285
-rw-r--r--plugins/module_utils/network/vyos/config/ntp_global/ntp_global.py15
-rw-r--r--plugins/module_utils/network/vyos/rm_templates/ntp_global.py24
-rw-r--r--tests/unit/modules/network/vyos/fixtures/vyos_ntp_config_v14.cfg10
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_ntp_global.py338
6 files changed, 521 insertions, 156 deletions
diff --git a/changelogs/fragments/ntp_global.yaml b/changelogs/fragments/ntp_global.yaml
new file mode 100644
index 0000000..bab9b55
--- /dev/null
+++ b/changelogs/fragments/ntp_global.yaml
@@ -0,0 +1,5 @@
+---
+minor_changes:
+ - Added support for VyOS 1.4+ (chronyd vs ntpd)
+ - Fixed syntax for allow_client in 1.4+
+ - Added test suite for ntp_global and 1.4+
diff --git a/docs/vyos.vyos.vyos_ntp_global_module.rst b/docs/vyos.vyos.vyos_ntp_global_module.rst
index d2606f8..8bfa05a 100644
--- a/docs/vyos.vyos.vyos_ntp_global_module.rst
+++ b/docs/vyos.vyos.vyos_ntp_global_module.rst
@@ -114,8 +114,8 @@ Parameters
<td>
<ul style="margin: 0; padding: 0"><b>Choices:</b>
<li>noselect</li>
- <li>dynamic</li>
- <li>pool</li>
+ <li>dynamic (v1.2)</li>
+ <li>pool (v1.3+))</li>
<li>preempt</li>
<li>prefer</li>
</ul>
@@ -195,6 +195,7 @@ Notes
.. note::
- Tested against vyos 1.3
- This module works with connection ``network_cli``.
+ - VyOS v.1.4+ uses chronyd, and path changes from ``system`` to ``service``
@@ -210,9 +211,9 @@ Examples
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
- # set system ntp server time1.vyos.net
- # set system ntp server time2.vyos.net
- # set system ntp server time3.vyos.net
+ # set service ntp server time1.vyos.net
+ # set system/service ntp server time2.vyos.net
+ # set system/service ntp server time3.vyos.net
# vyos@vyos:~$
# # Task
@@ -261,20 +262,20 @@ Examples
# },
# "changed": true,
# "commands": [
- # "set system ntp allow-clients address 10.6.6.0/24",
- # "set system ntp listen-address 10.1.3.1",
- # "set system ntp server 203.0.113.0 prefer"
+ # "set system/service ntp allow-clients address 10.6.6.0/24",
+ # "set system/service ntp listen-address 10.1.3.1",
+ # "set system/service ntp server 203.0.113.0 prefer"
# ]
# After state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
- # set system ntp allow-clients address '10.6.6.0/24'
- # set system ntp listen-address '10.1.3.1'
- # set system ntp server 203.0.113.0 prefer,
- # set system ntp server time1.vyos.net
- # set system ntp server time2.vyos.net
- # set system ntp server time3.vyos.net
+ # set system/service ntp allow-clients address '10.6.6.0/24'
+ # set system/service ntp listen-address '10.1.3.1'
+ # set system/service ntp server 203.0.113.0 prefer,
+ # set system/service ntp server time1.vyos.net
+ # set system/service ntp server time2.vyos.net
+ # set system/service ntp server time3.vyos.net
# vyos@vyos:~$
@@ -285,25 +286,25 @@ Examples
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
- # set system ntp allow-clients address '10.4.9.0/24'
- # set system ntp allow-clients address '10.4.7.0/24'
- # set system ntp allow-clients address '10.1.2.0/24'
- # set system ntp allow-clients address '10.2.3.0/24'
- # set system ntp listen-address '10.1.9.16'
- # set system ntp listen-address '10.5.3.2'
- # set system ntp listen-address '10.7.9.21'
- # set system ntp listen-address '10.8.9.4'
- # set system ntp listen-address '10.4.5.1'
- # set system ntp server 10.3.6.5 noselect
- # set system ntp server 10.3.6.5 dynamic
- # set system ntp server 10.3.6.5 preempt
- # set system ntp server 10.3.6.5 prefer
- # set system ntp server server4 noselect
- # set system ntp server server4 dynamic
- # set system ntp server server5
- # set system ntp server time1.vyos.net
- # set system ntp server time2.vyos.net
- # set system ntp server time3.vyos.net
+ # set system/service ntp allow-clients address '10.4.9.0/24'
+ # set system/service ntp allow-clients address '10.4.7.0/24'
+ # set system/service ntp allow-clients address '10.1.2.0/24'
+ # set system/service ntp allow-clients address '10.2.3.0/24'
+ # set system/service ntp listen-address '10.1.9.16'
+ # set system/service ntp listen-address '10.5.3.2'
+ # set system/service ntp listen-address '10.7.9.21'
+ # set system/service ntp listen-address '10.8.9.4'
+ # set system/service ntp listen-address '10.4.5.1'
+ # set system/service ntp server 10.3.6.5 noselect
+ # set system/service ntp server 10.3.6.5 dynamic
+ # set system/service ntp server 10.3.6.5 preempt
+ # set system/service ntp server 10.3.6.5 prefer
+ # set system/service ntp server server4 noselect
+ # set system/service ntp server server4 dynamic
+ # set system/service ntp server server5
+ # set system/service ntp server time1.vyos.net
+ # set system/service ntp server time2.vyos.net
+ # set system/service ntp server time3.vyos.net
# vyos@vyos:~$
# # Task
@@ -396,32 +397,32 @@ Examples
# },
# "changed": true,
# "commands": [
- # "delete system ntp allow-clients address 10.4.7.0/24",
- # "delete system ntp allow-clients address 10.2.3.0/24",
- # "delete system ntp allow-clients address 10.1.2.0/24",
- # "delete system ntp allow-clients address 10.4.9.0/24",
- # "delete system ntp listen-address 10.7.9.21",
- # "delete system ntp listen-address 10.4.5.1",
- # "delete system ntp listen-address 10.5.3.2",
- # "delete system ntp listen-address 10.8.9.4",
- # "delete system ntp listen-address 10.1.9.16",
- # "delete system ntp server 10.3.6.5",
- # "delete system ntp server server4",
- # "delete system ntp server server5",
- # "set system ntp allow-clients address 10.6.6.0/24",
- # "set system ntp listen-address 10.1.3.1",
- # "set system ntp server 203.0.113.0 prefer"
+ # "delete system/service ntp allow-clients address 10.4.7.0/24",
+ # "delete system/service ntp allow-clients address 10.2.3.0/24",
+ # "delete system/service ntp allow-clients address 10.1.2.0/24",
+ # "delete system/service ntp allow-clients address 10.4.9.0/24",
+ # "delete system/service ntp listen-address 10.7.9.21",
+ # "delete system/service ntp listen-address 10.4.5.1",
+ # "delete system/service ntp listen-address 10.5.3.2",
+ # "delete system/service ntp listen-address 10.8.9.4",
+ # "delete system/service ntp listen-address 10.1.9.16",
+ # "delete system/service ntp server 10.3.6.5",
+ # "delete system/service ntp server server4",
+ # "delete system/service ntp server server5",
+ # "set system/service ntp allow-clients address 10.6.6.0/24",
+ # "set system/service ntp listen-address 10.1.3.1",
+ # "set system/service ntp server 203.0.113.0 prefer"
# ]
# After state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
- # set system ntp allow-clients address '10.6.6.0/24'
- # set system ntp listen-address '10.1.3.1'
- # set system ntp server 203.0.113.0 prefer,
- # set system ntp server time1.vyos.net
- # set system ntp server time2.vyos.net
- # set system ntp server time3.vyos.net
+ # set system/service ntp allow-clients address '10.6.6.0/24'
+ # set system/service ntp listen-address '10.1.3.1'
+ # set system/service ntp server 203.0.113.0 prefer,
+ # set system/service ntp server time1.vyos.net
+ # set system/service ntp server time2.vyos.net
+ # set system/service ntp server time3.vyos.net
# vyos@vyos:~$
# # -------------------
@@ -431,12 +432,12 @@ Examples
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
- # set system ntp allow-clients address '10.6.6.0/24'
- # set system ntp listen-address '10.1.3.1'
- # set system ntp server 203.0.113.0 prefer,
- # set system ntp server time1.vyos.net
- # set system ntp server time2.vyos.net
- # set system ntp server time3.vyos.net
+ # set system/service ntp allow-clients address '10.6.6.0/24'
+ # set system/service ntp listen-address '10.1.3.1'
+ # set system/service ntp server 203.0.113.0 prefer,
+ # set system/service ntp server time1.vyos.net
+ # set system/service ntp server time2.vyos.net
+ # set system/service ntp server time3.vyos.net
# vyos@vyos:~$
# Task
@@ -527,31 +528,31 @@ Examples
# },
# "changed": true,
# "commands": [
- # "delete system ntp allow-clients address 10.6.6.0/24",
- # "delete system ntp listen-address 10.1.3.1",
- # "delete system ntp server ser",
- # "set system ntp allow-clients address 10.3.3.0/24",
- # "set system ntp listen-address 10.7.8.1",
- # "set system ntp server server1 dynamic",
- # "set system ntp server server1 prefer",
- # "set system ntp server server2 noselect",
- # "set system ntp server server2 preempt",
- # "set system ntp server serv"
+ # "delete service ntp allow-clients address 10.6.6.0/24",
+ # "delete service ntp listen-address 10.1.3.1",
+ # "delete service ntp server ser",
+ # "set service ntp allow-clients address 10.3.3.0/24",
+ # "set service ntp listen-address 10.7.8.1",
+ # "set service ntp server server1 dynamic",
+ # "set service ntp server server1 prefer",
+ # "set service ntp server server2 noselect",
+ # "set service ntp server server2 preempt",
+ # "set service ntp server serv"
# ]
# After state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
- # set system ntp allow-clients address '10.3.3.0/24'
- # set system ntp listen-address '10.7.8.1'
- # set system ntp server serv
- # set system ntp server server1 dynamic
- # set system ntp server server1 prefer
- # set system ntp server server2 noselect
- # set system ntp server server2 preempt
- # set system ntp server time1.vyos.net
- # set system ntp server time2.vyos.net
- # set system ntp server time3.vyos.net
+ # set service ntp allow-clients address '10.3.3.0/24'
+ # set service ntp listen-address '10.7.8.1'
+ # set service ntp server serv
+ # set service ntp server server1 dynamic
+ # set service ntp server server1 prefer
+ # set service ntp server server2 noselect
+ # set service ntp server server2 preempt
+ # set service ntp server time1.vyos.net
+ # set service ntp server time2.vyos.net
+ # set service ntp server time3.vyos.net
# vyos@vyos:~$
# 4. Using gathered
@@ -560,16 +561,16 @@ Examples
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
- # set system ntp allow-clients address '10.3.3.0/24'
- # set system ntp listen-address '10.7.8.1'
- # set system ntp server serv
- # set system ntp server server1 dynamic
- # set system ntp server server1 prefer
- # set system ntp server server2 noselect
- # set system ntp server server2 preempt
- # set system ntp server time1.vyos.net
- # set system ntp server time2.vyos.net
- # set system ntp server time3.vyos.net
+ # set service ntp allow-clients address '10.3.3.0/24'
+ # set service ntp listen-address '10.7.8.1'
+ # set service ntp server serv
+ # set service ntp server server1 dynamic
+ # set service ntp server server1 prefer
+ # set service ntp server server2 noselect
+ # set service ntp server server2 preempt
+ # set service ntp server time1.vyos.net
+ # set service ntp server time2.vyos.net
+ # set service ntp server time3.vyos.net
# vyos@vyos:~$
# Task
@@ -620,16 +621,16 @@ Examples
# After state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
- # set system ntp allow-clients address '10.3.3.0/24'
- # set system ntp listen-address '10.7.8.1'
- # set system ntp server serv
- # set system ntp server server1 dynamic
- # set system ntp server server1 prefer
- # set system ntp server server2 noselect
- # set system ntp server server2 preempt
- # set system ntp server time1.vyos.net
- # set system ntp server time2.vyos.net
- # set system ntp server time3.vyos.net
+ # set service ntp allow-clients address '10.3.3.0/24'
+ # set service ntp listen-address '10.7.8.1'
+ # set service ntp server serv
+ # set service ntp server server1 dynamic
+ # set service ntp server server1 prefer
+ # set service ntp server server2 noselect
+ # set service ntp server server2 preempt
+ # set service ntp server time1.vyos.net
+ # set service ntp server time2.vyos.net
+ # set service ntp server time3.vyos.net
# vyos@vyos:~$
@@ -640,16 +641,16 @@ Examples
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
- # set system ntp allow-clients address '10.3.3.0/24'
- # set system ntp listen-address '10.7.8.1'
- # set system ntp server serv
- # set system ntp server server1 dynamic
- # set system ntp server server1 prefer
- # set system ntp server server2 noselect
- # set system ntp server server2 preempt
- # set system ntp server time1.vyos.net
- # set system ntp server time2.vyos.net
- # set system ntp server time3.vyos.net
+ # set service ntp allow-clients address '10.3.3.0/24'
+ # set service ntp listen-address '10.7.8.1'
+ # set service ntp server serv
+ # set service ntp server server1 dynamic
+ # set service ntp server server1 prefer
+ # set service ntp server server2 noselect
+ # set service ntp server server2 preempt
+ # set service ntp server time1.vyos.net
+ # set service ntp server time2.vyos.net
+ # set service ntp server time3.vyos.net
# vyos@vyos:~$
# # Task
@@ -712,20 +713,20 @@ Examples
# },
# "changed": true,
# "commands": [
- # "delete system ntp allow-clients",
- # "delete system ntp listen-address",
- # "delete system ntp server serv",
- # "delete system ntp server server1",
- # "delete system ntp server server2"
+ # "delete service ntp allow-clients",
+ # "delete service ntp listen-address",
+ # "delete service ntp server serv",
+ # "delete service ntp server server1",
+ # "delete service ntp server server2"
#
# ]
# After state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
- # set system ntp server time1.vyos.net
- # set system ntp server time2.vyos.net
- # set system ntp server time3.vyos.net
+ # set service ntp server time1.vyos.net
+ # set service ntp server time2.vyos.net
+ # set service ntp server time3.vyos.net
# vyos@vyos:~$
@@ -736,9 +737,9 @@ Examples
# # Before state:
# # -------------
# vyos@vyos:~$ show configuration commands | grep ntp
- # set system ntp server time1.vyos.net
- # set system ntp server time2.vyos.net
- # set system ntp server time3.vyos.net
+ # set service ntp server time1.vyos.net
+ # set service ntp server time2.vyos.net
+ # set service ntp server time3.vyos.net
# vyos@vyos:~$
# Task
@@ -766,16 +767,16 @@ Examples
# # Task output:
# # -------------
# "rendered": [
- # "set system ntp allow-clients address 10.7.7.0/24",
- # "set system ntp allow-clients address 10.8.8.0/24",
- # "set system ntp listen-address 10.7.9.1",
- # "set system ntp server server7",
- # "set system ntp server server45 noselect",
- # "set system ntp server server45 prefer",
- # "set system ntp server server45 pool",
- # "set system ntp server time1.vyos.net",
- # "set system ntp server time2.vyos.net",
- # "set system ntp server time3.vyos.net"
+ # "set service ntp allow-clients address 10.7.7.0/24",
+ # "set service ntp allow-clients address 10.8.8.0/24",
+ # "set service ntp listen-address 10.7.9.1",
+ # "set service ntp server server7",
+ # "set service ntp server server45 noselect",
+ # "set service ntp server server45 prefer",
+ # "set service ntp server server45 pool",
+ # "set service ntp server time1.vyos.net",
+ # "set service ntp server time2.vyos.net",
+ # "set service ntp server time3.vyos.net"
# ]
@@ -785,15 +786,15 @@ Examples
# # sample_config.cfg:
# # -------------
- # "set system ntp allow-clients address 10.7.7.0/24",
- # "set system ntp listen-address 10.7.9.1",
- # "set system ntp server server45 noselect",
- # "set system ntp allow-clients addres 10.8.6.0/24",
- # "set system ntp listen-address 10.5.4.1",
- # "set system ntp server server45 dynamic",
- # "set system ntp server time1.vyos.net",
- # "set system ntp server time2.vyos.net",
- # "set system ntp server time3.vyos.net"
+ # "set service ntp allow-clients address 10.7.7.0/24",
+ # "set service ntp listen-address 10.7.9.1",
+ # "set service ntp server server45 noselect",
+ # "set service ntp allow-clients addres 10.8.6.0/24",
+ # "set service ntp listen-address 10.5.4.1",
+ # "set service ntp server server45 dynamic",
+ # "set service ntp server time1.vyos.net",
+ # "set service ntp server time2.vyos.net",
+ # "set service ntp server time3.vyos.net"
# Task:
# -------------
@@ -897,7 +898,7 @@ Common return values are documented `here <https://docs.ansible.com/ansible/late
<div>The set of commands pushed to the remote device.</div>
<br/>
<div style="font-size: smaller"><b>Sample:</b></div>
- <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">[&#x27;set system ntp server server1 dynamic&#x27;, &#x27;set system ntp server server1 prefer&#x27;, &#x27;set system ntp server server2 noselect&#x27;, &#x27;set system ntp server server2 preempt&#x27;, &#x27;set system ntp server server_add preempt&#x27;]</div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">[&#x27;set service ntp server server1 dynamic&#x27;, &#x27;set service ntp server server1 prefer&#x27;, &#x27;set service ntp server server2 noselect&#x27;, &#x27;set service ntp server server2 preempt&#x27;, &#x27;set service ntp server server_add preempt&#x27;]</div>
</td>
</tr>
<tr>
@@ -948,7 +949,7 @@ Common return values are documented `here <https://docs.ansible.com/ansible/late
<div>The provided configuration in the task rendered in device-native format (offline).</div>
<br/>
<div style="font-size: smaller"><b>Sample:</b></div>
- <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">[&#x27;set system ntp server server1 dynamic&#x27;, &#x27;set system ntp server server1 prefer&#x27;, &#x27;set system ntp server server2 noselect&#x27;, &#x27;set system ntp server server2 preempt&#x27;, &#x27;set system ntp server server_add preempt&#x27;]</div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">[&#x27;set service ntp server server1 dynamic&#x27;, &#x27;set service ntp server server1 prefer&#x27;, &#x27;set service ntp server server2 noselect&#x27;, &#x27;set service ntp server server2 preempt&#x27;, &#x27;set service ntp server server_add preempt&#x27;]</div>
</td>
</tr>
</table>
diff --git a/plugins/module_utils/network/vyos/config/ntp_global/ntp_global.py b/plugins/module_utils/network/vyos/config/ntp_global/ntp_global.py
index 106faac..0af1af5 100644
--- a/plugins/module_utils/network/vyos/config/ntp_global/ntp_global.py
+++ b/plugins/module_utils/network/vyos/config/ntp_global/ntp_global.py
@@ -31,6 +31,10 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.rm_template
NtpTemplate,
)
+from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.vyos import get_os_version
+
+from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.utils.version import LooseVersion
+
class Ntp_global(ResourceModule):
"""
@@ -120,6 +124,17 @@ class Ntp_global(ResourceModule):
for k, want in iteritems(wantd):
self._compare(want=want, have=haved.pop(k, {}))
+ if LooseVersion(get_os_version(self._module)) >= LooseVersion("1.4"):
+ path = "service"
+ ac = "allow-client"
+ else:
+ path = "system"
+ ac = "allow-clients"
+
+ if self.commands:
+ self.commands = [cl.replace('%%path%%', path) for cl in self.commands]
+ self.commands = [nc.replace('%%ac%%', ac) for nc in self.commands]
+
def _compare(self, want, have):
"""Leverages the base class `compare()` method and
populates the list of commands to be run by comparing
diff --git a/plugins/module_utils/network/vyos/rm_templates/ntp_global.py b/plugins/module_utils/network/vyos/rm_templates/ntp_global.py
index 33d173e..1e011dd 100644
--- a/plugins/module_utils/network/vyos/rm_templates/ntp_global.py
+++ b/plugins/module_utils/network/vyos/rm_templates/ntp_global.py
@@ -35,11 +35,11 @@ class NtpTemplate(NetworkTemplate):
"name": "allow_clients",
"getval": re.compile(
r"""
- ^set\ssystem\sntp\sallow-clients\saddress (\s(?P<ipaddress>\S+))?
+ ^set\s(?P<path>system|service)?\sntp\s(?P<ac>allow-clients|allow-client)?\saddress (\s(?P<ipaddress>\S+))?
$""",
re.VERBOSE,
),
- "setval": "system ntp allow-clients address {{allow_clients}}",
+ "setval": "%%path%% ntp %%ac%% address {{allow_clients}}",
"result": {
"allow_clients": ["{{ipaddress}}"],
},
@@ -50,11 +50,11 @@ class NtpTemplate(NetworkTemplate):
"name": "allow_clients_delete",
"getval": re.compile(
r"""
- ^set\ssystem\sntp\sallow-clients
+ ^set\s(?P<path>system|service)?\sntp\s(?P<ac>allow-clients|allow-client)?
$""",
re.VERBOSE,
),
- "setval": "system ntp allow-clients",
+ "setval": "%%path%% ntp %%ac%%",
"result": {
},
@@ -66,11 +66,11 @@ class NtpTemplate(NetworkTemplate):
"name": "listen_addresses",
"getval": re.compile(
r"""
- ^set\ssystem\sntp\slisten-address (\s(?P<ip_address>\S+))?
+ ^set\s(?P<path>system|service)?\sntp\slisten-address (\s(?P<ip_address>\S+))?
$""",
re.VERBOSE,
),
- "setval": "system ntp listen-address {{listen_addresses}}",
+ "setval": "%%path%% ntp listen-address {{listen_addresses}}",
"result": {
"listen_addresses": ["{{ip_address}}"],
},
@@ -81,11 +81,11 @@ class NtpTemplate(NetworkTemplate):
"name": "listen_addresses_delete",
"getval": re.compile(
r"""
- ^set\ssystem\sntp\slisten-address
+ ^set\s(?P<path>system|service)?\sntp\slisten-address
$""",
re.VERBOSE,
),
- "setval": "system ntp listen-address",
+ "setval": "%%path%% ntp listen-address",
"result": {
},
},
@@ -95,11 +95,11 @@ class NtpTemplate(NetworkTemplate):
"name": "server",
"getval": re.compile(
r"""
- ^set\ssystem\sntp\sserver (\s(?P<name>\S+))?
+ ^set\s(?P<path>system|service)?\sntp\sserver (\s(?P<name>\S+))?
$""",
re.VERBOSE,
),
- "setval": "system ntp server {{server}}",
+ "setval": "%%path%% ntp server {{server}}",
"result": {
"servers": {
"{{name}}": {
@@ -115,13 +115,13 @@ class NtpTemplate(NetworkTemplate):
"name": "options",
"getval": re.compile(
r"""
- ^set\ssystem\sntp\sserver
+ ^set\s(?P<path>system|service)?\sntp\sserver
\s(?P<name>\S+)
\s(?P<options>noselect|dynamic|pool|preempt|prefer)?
$""",
re.VERBOSE,
),
- "setval": "system ntp server {{server}} {{options}}",
+ "setval": "%%path%% ntp server {{server}} {{options}}",
"result": {
"servers": {
"{{name}}": {
diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_ntp_config_v14.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_ntp_config_v14.cfg
new file mode 100644
index 0000000..8fc8ecd
--- /dev/null
+++ b/tests/unit/modules/network/vyos/fixtures/vyos_ntp_config_v14.cfg
@@ -0,0 +1,10 @@
+set service ntp allow-client address '10.1.1.0/24'
+set service ntp allow-client address '10.1.2.0/24'
+set service ntp listen-address '10.2.3.1'
+set service ntp listen-address '10.4.3.1'
+set service ntp server server1
+set service ntp server server3 noselect
+set service ntp server server3 pool
+set service ntp server time1.vyos.net
+set service ntp server time2.vyos.net
+set service ntp server time3.vyos.net
diff --git a/tests/unit/modules/network/vyos/test_vyos_ntp_global.py b/tests/unit/modules/network/vyos/test_vyos_ntp_global.py
index 6609c2f..0bf6107 100644
--- a/tests/unit/modules/network/vyos/test_vyos_ntp_global.py
+++ b/tests/unit/modules/network/vyos/test_vyos_ntp_global.py
@@ -51,11 +51,18 @@ class TestVyosNTPModule(TestVyosModule):
self.execute_show_command = self.mock_execute_show_command.start()
+ self.mock_get_os_version = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.ntp_global.ntp_global.get_os_version",
+ )
+ self.get_os_version = self.mock_get_os_version.start()
+ self.get_os_version.return_value = "1.2"
+
def tearDown(self):
super(TestVyosNTPModule, self).tearDown()
self.mock_get_resource_connection_config.stop()
self.mock_get_resource_connection_facts.stop()
self.mock_execute_show_command.stop()
+ self.mock_get_os_version.stop()
def load_fixtures(self, commands=None, filename=None):
if filename is None:
@@ -98,7 +105,7 @@ class TestVyosNTPModule(TestVyosModule):
server="server5",
options=[
"noselect",
- "pool",
+ "dynamic",
"preempt",
"prefer",
],
@@ -116,7 +123,7 @@ class TestVyosNTPModule(TestVyosModule):
"set system ntp listen-address 10.4.5.1",
"set system ntp server server4 dynamic",
"set system ntp server server4 preempt",
- "set system ntp server server5 pool",
+ "set system ntp server server5 dynamic",
"set system ntp server server5 noselect",
"set system ntp server server5 preempt",
"set system ntp server server5 prefer",
@@ -347,3 +354,330 @@ class TestVyosNTPModule(TestVyosModule):
"delete system ntp server time3.vyos.net",
]
self.execute_module(changed=True, commands=commands)
+
+
+class TestVyosNTPModule14(TestVyosModule):
+ module = vyos_ntp_global
+
+ def setUp(self):
+ super(TestVyosNTPModule14, self).setUp()
+
+ self.mock_get_resource_connection_config = patch(
+ "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base.get_resource_connection",
+ )
+ self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
+
+ self.mock_get_resource_connection_facts = patch(
+ "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.facts.facts.get_resource_connection",
+ )
+ self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
+
+ self.mock_execute_show_command = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.facts.ntp_global.ntp_global.Ntp_globalFacts.get_config",
+ )
+
+ self.execute_show_command = self.mock_execute_show_command.start()
+
+ self.mock_get_os_version = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.ntp_global.ntp_global.get_os_version",
+ )
+ self.get_os_version = self.mock_get_os_version.start()
+ self.get_os_version.return_value = "1.4"
+
+ def tearDown(self):
+ super(TestVyosNTPModule14, self).tearDown()
+ self.mock_get_resource_connection_config.stop()
+ self.mock_get_resource_connection_facts.stop()
+ self.mock_execute_show_command.stop()
+ self.mock_get_os_version.stop()
+
+ def load_fixtures(self, commands=None, filename=None):
+ if filename is None:
+ filename = "vyos_ntp_config_v14.cfg"
+
+ def load_from_file(*args, **kwargs):
+ output = load_fixture(filename)
+ return output
+
+ self.execute_show_command.side_effect = load_from_file
+
+ def test_ntp_merged_idempotent(self):
+ set_module_args(
+ dict(
+ config=dict(
+ allow_clients=["10.1.1.0/24", "10.1.2.0/24"],
+ listen_addresses=["10.2.3.1", "10.4.3.1"],
+ servers=[
+ dict(server="server1"),
+ dict(server="server3", options=["noselect", "pool"]),
+ dict(server="time1.vyos.net"),
+ dict(server="time2.vyos.net"),
+ dict(server="time3.vyos.net"),
+ ],
+ ),
+ state="merged",
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ def test_ntp_merged(self):
+ set_module_args(
+ dict(
+ config=dict(
+ allow_clients=["10.2.2.0/24", "10.3.3.0/24"],
+ listen_addresses=["10.3.4.1", "10.4.5.1"],
+ servers=[
+ dict(server="server4", options=["pool", "preempt"]),
+ dict(
+ server="server5",
+ options=[
+ "noselect",
+ "pool",
+ "preempt",
+ "prefer",
+ ],
+ ),
+ ],
+ ),
+ state="merged",
+ ),
+ )
+
+ commands = [
+ "set service ntp allow-client address 10.2.2.0/24",
+ "set service ntp allow-client address 10.3.3.0/24",
+ "set service ntp listen-address 10.3.4.1",
+ "set service ntp listen-address 10.4.5.1",
+ "set service ntp server server4 pool",
+ "set service ntp server server4 preempt",
+ "set service ntp server server5 pool",
+ "set service ntp server server5 noselect",
+ "set service ntp server server5 preempt",
+ "set service ntp server server5 prefer",
+ ]
+
+ self.execute_module(changed=True, commands=commands)
+
+ def test_ntp_replaced(self):
+ set_module_args(
+ dict(
+ config=dict(
+ allow_clients=["10.3.4.0/24", "10.4.5.0/24"],
+ listen_addresses=["10.3.3.1", "10.4.4.1"],
+ servers=[
+ dict(server="server4", options=["noselect", "prefer"]),
+ dict(
+ server="server6",
+ options=[
+ "noselect",
+ "pool",
+ "prefer",
+ "preempt",
+ ],
+ ),
+ dict(server="time1.vyos.net"),
+ dict(server="time2.vyos.net"),
+ dict(server="time3.vyos.net"),
+ ],
+ ),
+ state="replaced",
+ ),
+ )
+ commands = [
+ "delete service ntp allow-client address 10.1.1.0/24",
+ "delete service ntp allow-client address 10.1.2.0/24",
+ "delete service ntp listen-address 10.2.3.1",
+ "delete service ntp listen-address 10.4.3.1",
+ "delete service ntp server server1",
+ "delete service ntp server server3",
+ "set service ntp allow-client address 10.3.4.0/24",
+ "set service ntp allow-client address 10.4.5.0/24",
+ "set service ntp listen-address 10.3.3.1",
+ "set service ntp listen-address 10.4.4.1",
+ "set service ntp server server4 noselect",
+ "set service ntp server server4 prefer",
+ "set service ntp server server6 noselect",
+ "set service ntp server server6 pool",
+ "set service ntp server server6 prefer",
+ "set service ntp server server6 preempt",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_ntp_replaced_idempotent(self):
+ set_module_args(
+ dict(
+ config=dict(
+ allow_clients=["10.1.1.0/24", "10.1.2.0/24"],
+ listen_addresses=["10.2.3.1", "10.4.3.1"],
+ servers=[
+ dict(server="server1"),
+ dict(server="server3", options=["noselect", "pool"]),
+ dict(server="time1.vyos.net"),
+ dict(server="time2.vyos.net"),
+ dict(server="time3.vyos.net"),
+ ],
+ ),
+ state="replaced",
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ def test_ntp_overridden(self):
+ set_module_args(
+ dict(
+ config=dict(
+ allow_clients=["10.9.9.0/24"],
+ listen_addresses=["10.9.9.1"],
+ servers=[
+ dict(server="server9"),
+ dict(server="server6", options=["noselect", "pool"]),
+ dict(server="time1.vyos.net"),
+ dict(server="time2.vyos.net"),
+ dict(server="time3.vyos.net"),
+ ],
+ ),
+ state="overridden",
+ ),
+ )
+ commands = [
+ "delete service ntp allow-client address 10.1.1.0/24",
+ "delete service ntp allow-client address 10.1.2.0/24",
+ "delete service ntp listen-address 10.2.3.1",
+ "delete service ntp listen-address 10.4.3.1",
+ "delete service ntp server server1",
+ "delete service ntp server server3",
+ "set service ntp allow-client address 10.9.9.0/24",
+ "set service ntp listen-address 10.9.9.1",
+ "set service ntp server server9",
+ "set service ntp server server6 noselect",
+ "set service ntp server server6 pool",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_ntp_overridden_idempotent(self):
+ set_module_args(
+ dict(
+ config=dict(
+ allow_clients=["10.1.1.0/24", "10.1.2.0/24"],
+ listen_addresses=["10.2.3.1", "10.4.3.1"],
+ servers=[
+ dict(server="server1"),
+ dict(server="server3", options=["noselect", "pool"]),
+ dict(server="time1.vyos.net"),
+ dict(server="time2.vyos.net"),
+ dict(server="time3.vyos.net"),
+ ],
+ ),
+ state="overridden",
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ def test_ntp_rendered(self):
+ set_module_args(
+ dict(
+ config=dict(
+ allow_clients=["10.7.7.0/24", "10.8.8.0/24"],
+ listen_addresses=["10.7.9.1"],
+ servers=[
+ dict(server="server79"),
+ dict(server="server46", options=["noselect", "pool"]),
+ dict(server="time1.vyos.net"),
+ dict(server="time2.vyos.net"),
+ dict(server="time3.vyos.net"),
+ ],
+ ),
+ state="rendered",
+ ),
+ )
+ rendered_commands = [
+ "set service ntp allow-client address 10.7.7.0/24",
+ "set service ntp allow-client address 10.8.8.0/24",
+ "set service ntp listen-address 10.7.9.1",
+ "set service ntp server server79",
+ "set service ntp server server46 noselect",
+ "set service ntp server server46 pool",
+ "set service ntp server time1.vyos.net",
+ "set service ntp server time2.vyos.net",
+ "set service ntp server time3.vyos.net",
+ ]
+ result = self.execute_module(changed=False)
+ self.assertEqual(
+ sorted(result["rendered"]),
+ sorted(rendered_commands),
+ result["rendered"],
+ )
+
+ def test_ntp_parsed(self):
+ commands = (
+ "set service ntp allow-client address 10.7.7.0/24",
+ "set service ntp allow-client address 10.6.7.0/24",
+ "set service ntp listen-address 10.7.9.1",
+ "set service ntp listen-address 10.7.7.1",
+ "set service ntp server check",
+ "set service ntp server server46 noselect",
+ "set service ntp server server46 prefer",
+ "set service ntp server time1.vyos.net",
+ "set service ntp server time2.vyos.net",
+ "set service ntp server time3.vyos.net",
+ )
+ parsed_str = "\n".join(commands)
+ set_module_args(dict(running_config=parsed_str, state="parsed"))
+ result = self.execute_module(changed=False)
+ parsed_list = {
+ "allow_clients": ["10.6.7.0/24", "10.7.7.0/24"],
+ "listen_addresses": ["10.7.7.1", "10.7.9.1"],
+ "servers": [
+ {"server": "check"},
+ {"server": "server46", "options": ["noselect", "prefer"]},
+ {"server": "time1.vyos.net"},
+ {"server": "time2.vyos.net"},
+ {"server": "time3.vyos.net"},
+ ],
+ }
+ self.assertEqual(parsed_list, result["parsed"])
+
+ def test_ntp_gathered(self):
+ set_module_args(dict(state="gathered"))
+ result = self.execute_module(changed=False)
+ gathered_list = {
+ "allow_clients": ["10.1.1.0/24", "10.1.2.0/24"],
+ "listen_addresses": ["10.2.3.1", "10.4.3.1"],
+ "servers": [
+ {"server": "server1"},
+ {"server": "server3", "options": ["noselect", "pool"]},
+ {"server": "time1.vyos.net"},
+ {"server": "time2.vyos.net"},
+ {"server": "time3.vyos.net"},
+ ],
+ }
+
+ self.assertEqual(gathered_list, result["gathered"])
+
+ def test_ntp_deleted(self):
+ set_module_args(
+ dict(
+ config=dict(
+ allow_clients=["10.1.1.0/24"],
+ listen_addresses=["10.2.3.1"],
+ servers=[
+ dict(server="server1"),
+ dict(server="server3", options=["noselect"]),
+ dict(server="time1.vyos.net"),
+ dict(server="time2.vyos.net"),
+ dict(server="time3.vyos.net"),
+ ],
+ ),
+ state="deleted",
+ ),
+ )
+ commands = [
+ "delete service ntp allow-client",
+ "delete service ntp listen-address",
+ "delete service ntp server server1",
+ "delete service ntp server server3",
+ "delete service ntp server time1.vyos.net",
+ "delete service ntp server time2.vyos.net",
+ "delete service ntp server time3.vyos.net",
+ ]
+ self.execute_module(changed=True, commands=commands)