summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changelogs/fragments/T6894-ntp-integration-tests.yml5
-rw-r--r--docs/vyos.vyos.vyos_ntp_global_module.rst14
-rw-r--r--plugins/module_utils/network/vyos/argspec/ntp_global/ntp_global.py5
-rw-r--r--plugins/module_utils/network/vyos/config/ntp_global/ntp_global.py60
-rw-r--r--plugins/module_utils/network/vyos/rm_templates/ntp_global.py60
-rw-r--r--plugins/modules/vyos_ntp_global.py16
-rw-r--r--tests/integration/targets/vyos_ntp_global/tests/cli/_get_version.yaml28
-rw-r--r--tests/integration/targets/vyos_ntp_global/tests/cli/_parsed.cfg5
-rw-r--r--tests/integration/targets/vyos_ntp_global/tests/cli/_populate_config.yaml25
-rw-r--r--tests/integration/targets/vyos_ntp_global/tests/cli/_remove_config.yaml3
-rw-r--r--tests/integration/targets/vyos_ntp_global/tests/cli/deleted.yaml2
-rw-r--r--tests/integration/targets/vyos_ntp_global/tests/cli/merged.yaml20
-rw-r--r--tests/integration/targets/vyos_ntp_global/tests/cli/overridden.yaml25
-rw-r--r--tests/integration/targets/vyos_ntp_global/tests/cli/parsed.yaml5
-rw-r--r--tests/integration/targets/vyos_ntp_global/tests/cli/rendered.yaml16
-rw-r--r--tests/integration/targets/vyos_ntp_global/tests/cli/replaced.yaml2
-rw-r--r--tests/integration/targets/vyos_ntp_global/tests/cli/rtt.yaml34
-rw-r--r--tests/integration/targets/vyos_ntp_global/vars/main.yaml107
-rw-r--r--tests/integration/targets/vyos_ntp_global/vars/pre-v1_4.yaml139
-rw-r--r--tests/integration/targets/vyos_ntp_global/vars/v1_4.yaml141
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_ntp_global.py34
21 files changed, 505 insertions, 241 deletions
diff --git a/changelogs/fragments/T6894-ntp-integration-tests.yml b/changelogs/fragments/T6894-ntp-integration-tests.yml
new file mode 100644
index 0000000..f5ad209
--- /dev/null
+++ b/changelogs/fragments/T6894-ntp-integration-tests.yml
@@ -0,0 +1,5 @@
+---
+minor_changes:
+ - Added ntp options for 1.5+ (interleave, ptp)
+ - Synchronized argspec and docs with core module
+ - Fix integration tests for 1.3+
diff --git a/docs/vyos.vyos.vyos_ntp_global_module.rst b/docs/vyos.vyos.vyos_ntp_global_module.rst
index 582aa17..2975149 100644
--- a/docs/vyos.vyos.vyos_ntp_global_module.rst
+++ b/docs/vyos.vyos.vyos_ntp_global_module.rst
@@ -113,16 +113,22 @@ Parameters
</td>
<td>
<ul style="margin: 0; padding: 0"><b>Choices:</b>
- <li>noselect</li>
<li>dynamic</li>
+ <li>noselect</li>
<li>pool</li>
<li>preempt</li>
<li>prefer</li>
+ <li>nts</li>
+ <li>ptp</li>
+ <li>interleave</li>
</ul>
</td>
<td>
<div>server options for NTP</div>
- <div>`dynamic` changed to `pool` after v1.3</div>
+ <div>`pool` replaces `dynamic` in Vyos 1.3</div>
+ <div>`preempt` is only available in Vyos 1.3 and earlier</div>
+ <div>`nts` was added in Vyos 1.4</div>
+ <div>`ptp` and `interleave` were added in Vyos 1.5</div>
</td>
</tr>
<tr>
@@ -139,7 +145,7 @@ Parameters
<td>
</td>
<td>
- <div>server name for NTP</div>
+ <div>server name or address for NTP</div>
</td>
</tr>
@@ -194,7 +200,7 @@ Notes
-----
.. note::
- - Tested against vyos 1.3
+ - Tested against vyos 1.3.8
- This module works with connection ``network_cli``.
- VyOS v.1.4+ uses chronyd, and path changes from `system` to `service`
diff --git a/plugins/module_utils/network/vyos/argspec/ntp_global/ntp_global.py b/plugins/module_utils/network/vyos/argspec/ntp_global/ntp_global.py
index cbbfd22..6940fb7 100644
--- a/plugins/module_utils/network/vyos/argspec/ntp_global/ntp_global.py
+++ b/plugins/module_utils/network/vyos/argspec/ntp_global/ntp_global.py
@@ -46,11 +46,14 @@ class Ntp_globalArgs(object): # pylint: disable=R0903
"type": "list",
"elements": "str",
"choices": [
- "noselect",
"dynamic",
+ "noselect",
"pool",
"preempt",
"prefer",
+ "nts",
+ "ptp",
+ "interleave",
],
},
},
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 0af1af5..5d29406 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
@@ -30,11 +30,11 @@ from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.facts.facts
from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.rm_templates.ntp_global import (
NtpTemplate,
)
-
+from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.utils.version import (
+ LooseVersion,
+)
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):
"""
@@ -74,6 +74,16 @@ class Ntp_global(ResourceModule):
want, have and desired state.
"""
+ if LooseVersion(get_os_version(self._module)) >= LooseVersion("1.4"):
+ path = "service"
+ ac = "allow-client"
+ else:
+ path = "system"
+ ac = "allow-clients"
+
+ self._tmplt.set_ntp_path(path)
+ self._tmplt.set_ntp_ac(ac)
+
wantd = self._ntp_list_to_dict(self.want)
haved = self._ntp_list_to_dict(self.have)
@@ -89,6 +99,7 @@ class Ntp_global(ResourceModule):
commandlist = self._commandlist(haved)
servernames = self._servernames(haved)
# removing the servername and commandlist from the list after deleting it from haved
+ # iterate through the top-level items to delete
for k, have in iteritems(haved):
if k not in wantd:
for hk, hval in iteritems(have):
@@ -105,8 +116,14 @@ class Ntp_global(ResourceModule):
elif hk == "server" and have["server"] in servernames:
self._compareoverride(want={}, have=have)
servernames.remove(have["server"])
-
- # remove existing config for overridden,replaced and deleted
+ # if everything is deleted add the delete command for {path} ntp
+ # this should be equiv: servernames == [] and commandlist == ["server"]:
+ if wantd == {} and haved != {}:
+ self.commands.append(
+ self._tmplt.render({}, "service_delete", True),
+ )
+
+ # remove existing config for overridden and replaced
# Getting the list of the server names from haved
# to avoid the duplication of overridding/replacing the servers
if self.state in ["overridden", "replaced"]:
@@ -114,27 +131,17 @@ class Ntp_global(ResourceModule):
servernames = self._servernames(haved)
for k, have in iteritems(haved):
- if k not in wantd and "server" not in have:
- self._compareoverride(want={}, have=have)
- # removing the servername from the list after deleting it from haved
- elif k not in wantd and have["server"] in servernames:
- self._compareoverride(want={}, have=have)
- servernames.remove(have["server"])
+ if k not in wantd:
+ if "server" not in have:
+ self._compareoverride(want={}, have=have)
+ # removing the servername from the list after deleting it from haved
+ elif have["server"] in servernames:
+ self._compareoverride(want={}, have=have)
+ servernames.remove(have["server"])
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
@@ -193,11 +200,6 @@ class Ntp_global(ResourceModule):
servernames = []
for k, have in iteritems(haved):
for sk, sval in iteritems(have):
- if sk == "server" and sval not in [
- "0.pool.ntp.org",
- "1.pool.ntp.org",
- "2.pool.ntp.org",
- ]:
- if sval not in servernames:
- servernames.append(sval)
+ if sk != "options" and sval not in servernames:
+ servernames.append(sval)
return servernames
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 1e011dd..e9d8a0c 100644
--- a/plugins/module_utils/network/vyos/rm_templates/ntp_global.py
+++ b/plugins/module_utils/network/vyos/rm_templates/ntp_global.py
@@ -25,8 +25,28 @@ from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.r
class NtpTemplate(NetworkTemplate):
def __init__(self, lines=None, module=None):
prefix = {"set": "set", "remove": "delete"}
+ self._overrides = { # 1.4+ by default
+ "_path": "service", # 1.4 or greater, "system" for 1.3 or less
+ "_ac": "allow-client", # 1.4 or greater, "allow-clients" for 1.3 or less
+ }
super(NtpTemplate, self).__init__(lines=lines, tmplt=self, prefix=prefix, module=module)
+ def set_ntp_path(self, path: str):
+ """set_ntp_path"""
+ self._overrides["_path"] = path
+
+ def set_ntp_ac(self, ac: str):
+ """set_ntp_ac"""
+ self._overrides["_ac"] = ac
+
+ def render(self, data, parser_name, negate=False):
+ """render"""
+ # add path to the data before rendering
+ data = data.copy()
+ data.update(self._overrides)
+ # call the original method
+ return super(NtpTemplate, self).render(data, parser_name, negate)
+
# fmt: off
PARSERS = [
@@ -35,11 +55,11 @@ class NtpTemplate(NetworkTemplate):
"name": "allow_clients",
"getval": re.compile(
r"""
- ^set\s(?P<path>system|service)?\sntp\s(?P<ac>allow-clients|allow-client)?\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": "%%path%% ntp %%ac%% address {{allow_clients}}",
+ "setval": "{{_path}} ntp {{_ac}} address {{allow_clients}}",
"result": {
"allow_clients": ["{{ipaddress}}"],
},
@@ -50,11 +70,11 @@ class NtpTemplate(NetworkTemplate):
"name": "allow_clients_delete",
"getval": re.compile(
r"""
- ^set\s(?P<path>system|service)?\sntp\s(?P<ac>allow-clients|allow-client)?
+ ^set\s(?P<path>system|service)\sntp\s(?P<ac>allow-clients|allow-client)
$""",
re.VERBOSE,
),
- "setval": "%%path%% ntp %%ac%%",
+ "setval": "{{_path}} ntp {{_ac}}",
"result": {
},
@@ -66,11 +86,11 @@ class NtpTemplate(NetworkTemplate):
"name": "listen_addresses",
"getval": re.compile(
r"""
- ^set\s(?P<path>system|service)?\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": "%%path%% ntp listen-address {{listen_addresses}}",
+ "setval": "{{_path}} ntp listen-address {{listen_addresses}}",
"result": {
"listen_addresses": ["{{ip_address}}"],
},
@@ -81,11 +101,25 @@ class NtpTemplate(NetworkTemplate):
"name": "listen_addresses_delete",
"getval": re.compile(
r"""
- ^set\s(?P<path>system|service)?\sntp\slisten-address
+ ^set\s(?P<path>system|service)\sntp\slisten-address
+ $""",
+ re.VERBOSE,
+ ),
+ "setval": "{{_path}} ntp listen-address",
+ "result": {
+ },
+ },
+
+ # set {{path}} ntp - for deleting the ntp configuration
+ {
+ "name": "service_delete",
+ "getval": re.compile(
+ r"""
+ ^set\s(?P<path>system|service)\sntp$
$""",
re.VERBOSE,
),
- "setval": "%%path%% ntp listen-address",
+ "setval": "{{_path}} ntp",
"result": {
},
},
@@ -95,11 +129,11 @@ class NtpTemplate(NetworkTemplate):
"name": "server",
"getval": re.compile(
r"""
- ^set\s(?P<path>system|service)?\sntp\sserver (\s(?P<name>\S+))?
+ ^set\s(?P<path>system|service)\sntp\sserver (\s(?P<name>\S+))
$""",
re.VERBOSE,
),
- "setval": "%%path%% ntp server {{server}}",
+ "setval": "{{_path}} ntp server {{server}}",
"result": {
"servers": {
"{{name}}": {
@@ -115,13 +149,13 @@ class NtpTemplate(NetworkTemplate):
"name": "options",
"getval": re.compile(
r"""
- ^set\s(?P<path>system|service)?\sntp\sserver
+ ^set\s(?P<path>system|service)\sntp\sserver
\s(?P<name>\S+)
- \s(?P<options>noselect|dynamic|pool|preempt|prefer)?
+ \s(?P<options>dynamic|preempt|pool|noselect|prefer|nts|interleave|ptp)
$""",
re.VERBOSE,
),
- "setval": "%%path%% ntp server {{server}} {{options}}",
+ "setval": "{{_path}} ntp server {{server}} {{options}}",
"result": {
"servers": {
"{{name}}": {
diff --git a/plugins/modules/vyos_ntp_global.py b/plugins/modules/vyos_ntp_global.py
index 4fd9891..cad08a6 100644
--- a/plugins/modules/vyos_ntp_global.py
+++ b/plugins/modules/vyos_ntp_global.py
@@ -22,7 +22,7 @@ description:
author:
- Varshitha Yataluru (@YVarshitha)
notes:
-- Tested against vyos 1.3
+- Tested against vyos 1.3.8
- This module works with connection C(network_cli).
- "VyOS v.1.4+ uses chronyd, and path changes from `system` to `service`"
options:
@@ -44,20 +44,26 @@ options:
elements: dict
suboptions:
server:
- description: server name for NTP
+ description: server name or address for NTP
type: str
options:
description:
- - server options for NTP
- - "`dynamic` changed to `pool` after v1.3"
+ - "server options for NTP"
+ - "`pool` replaces `dynamic` in Vyos 1.3"
+ - "`preempt` is only available in Vyos 1.3 and earlier"
+ - "`nts` was added in Vyos 1.4"
+ - "`ptp` and `interleave` were added in Vyos 1.5"
type: list
elements: str
choices:
- - noselect
- dynamic
+ - noselect
- pool
- preempt
- prefer
+ - nts
+ - ptp
+ - interleave
running_config:
description:
- This option is used only with state I(parsed).
diff --git a/tests/integration/targets/vyos_ntp_global/tests/cli/_get_version.yaml b/tests/integration/targets/vyos_ntp_global/tests/cli/_get_version.yaml
new file mode 100644
index 0000000..2588b19
--- /dev/null
+++ b/tests/integration/targets/vyos_ntp_global/tests/cli/_get_version.yaml
@@ -0,0 +1,28 @@
+- name: make sure to get facts
+ vyos.vyos.vyos_facts:
+ vars:
+ ansible_connection: ansible.netcommon.network_cli
+ register: vyos_facts
+ when: vyos_version is not defined
+
+- name: debug vyos_facts
+ debug:
+ var: vyos_facts
+
+- name: pull version from facts
+ set_fact:
+ vyos_version: "{{ vyos_facts.ansible_facts.ansible_net_version.split('-')[0].split(' ')[-1] }}"
+ when: vyos_version is not defined
+
+- name: fix '.0' versions
+ set_fact:
+ vyos_version: "{{ vyos_version }}.0"
+ when: vyos_version.count('.') == 1
+
+- name: include correct vars
+ include_vars: pre-v1_4.yaml
+ when: vyos_version is version('1.4.0', '<', version_type='semver')
+
+- name: include correct vars
+ include_vars: v1_4.yaml
+ when: vyos_version is version('1.4.0', '>=', version_type='semver')
diff --git a/tests/integration/targets/vyos_ntp_global/tests/cli/_parsed.cfg b/tests/integration/targets/vyos_ntp_global/tests/cli/_parsed.cfg
deleted file mode 100644
index 0608aef..0000000
--- a/tests/integration/targets/vyos_ntp_global/tests/cli/_parsed.cfg
+++ /dev/null
@@ -1,5 +0,0 @@
-set system ntp server 10.3.6.5 noselect
-set system ntp server 10.3.6.5 dynamic
-set system ntp server 0.pool.ntp.org
-set system ntp server 1.pool.ntp.org
-set system ntp server 2.pool.ntp.org
diff --git a/tests/integration/targets/vyos_ntp_global/tests/cli/_populate_config.yaml b/tests/integration/targets/vyos_ntp_global/tests/cli/_populate_config.yaml
index 035fcba..cf47bc1 100644
--- a/tests/integration/targets/vyos_ntp_global/tests/cli/_populate_config.yaml
+++ b/tests/integration/targets/vyos_ntp_global/tests/cli/_populate_config.yaml
@@ -1,13 +1,30 @@
---
-- name: setup
+- name: ensure facts
+ include_tasks: _get_version.yaml
+
+- name: setup before 1.4
vyos.vyos.vyos_config:
lines:
- - set system ntp server server4 dynamic
- - set system ntp server server5 preempt
+ - set system ntp server server4.example.com pool
+ - set system ntp server server5.example.com preempt
- set system ntp server 10.3.6.5 noselect
- set system ntp server 10.3.6.5 preempt
- - set system ntp server server4 noselect
+ - set system ntp server server4.example.com noselect
- set system ntp server 10.3.6.5 prefer
ignore_errors: true
vars:
ansible_connection: ansible.netcommon.network_cli
+ when: vyos_version is version('1.4.0', '<', version_type='semver')
+- name: setup 1.4+
+ vyos.vyos.vyos_config:
+ lines:
+ - set service ntp server server4.example.com pool
+ - set service ntp server server5.example.com nts
+ - set service ntp server 10.3.6.5 noselect
+ - set service ntp server 10.3.6.5 nts
+ - set service ntp server server4.example.com noselect
+ - set service ntp server 10.3.6.5 prefer
+ ignore_errors: true
+ vars:
+ ansible_connection: ansible.netcommon.network_cli
+ when: vyos_version is version('1.4.0', '>=', version_type='semver')
diff --git a/tests/integration/targets/vyos_ntp_global/tests/cli/_remove_config.yaml b/tests/integration/targets/vyos_ntp_global/tests/cli/_remove_config.yaml
index 6017bdb..dce60d3 100644
--- a/tests/integration/targets/vyos_ntp_global/tests/cli/_remove_config.yaml
+++ b/tests/integration/targets/vyos_ntp_global/tests/cli/_remove_config.yaml
@@ -1,4 +1,7 @@
---
+- name: ensure facts
+ include_tasks: _get_version.yaml
+
- name: Remove pre-existing ntp_global config
vyos.vyos.vyos_ntp_global:
config:
diff --git a/tests/integration/targets/vyos_ntp_global/tests/cli/deleted.yaml b/tests/integration/targets/vyos_ntp_global/tests/cli/deleted.yaml
index de5cbae..3077bd8 100644
--- a/tests/integration/targets/vyos_ntp_global/tests/cli/deleted.yaml
+++ b/tests/integration/targets/vyos_ntp_global/tests/cli/deleted.yaml
@@ -22,7 +22,7 @@
- name: Assert that the after dicts were correctly generated
assert:
that:
- - result.after == populate.config
+ - result.after == {}
- name: Delete the existing configuration with the provided running configuration (IDEMPOTENT)
register: result
diff --git a/tests/integration/targets/vyos_ntp_global/tests/cli/merged.yaml b/tests/integration/targets/vyos_ntp_global/tests/cli/merged.yaml
index 4d2994d..c62a500 100644
--- a/tests/integration/targets/vyos_ntp_global/tests/cli/merged.yaml
+++ b/tests/integration/targets/vyos_ntp_global/tests/cli/merged.yaml
@@ -8,21 +8,7 @@
- name: Merge the provided configuration with the existing running configuration
register: result
vyos.vyos.vyos_ntp_global: &id001
- config:
- servers:
- - server: server5
-
- - server: server4
- options:
- - noselect
- - dynamic
-
- - server: 10.3.6.5
- options:
- - noselect
- - preempt
- - dynamic
- - prefer
+ config: "{{ merged.config }}"
state: merged
- vyos.vyos.vyos_facts:
@@ -39,7 +25,7 @@
- name: Assert that before dicts were correctly generated
assert:
that:
- - result.before == populate.config
+ - result.before == {}
- name: Merge the provided configuration with the existing running configuration (IDEMPOTENT)
register: result
@@ -49,6 +35,8 @@
assert:
that:
- result['changed'] == false
+ - result['commands'] == []
+ - result['before'] == ansible_facts['network_resources']['ntp_global']
always:
- include_tasks: _remove_config.yaml
diff --git a/tests/integration/targets/vyos_ntp_global/tests/cli/overridden.yaml b/tests/integration/targets/vyos_ntp_global/tests/cli/overridden.yaml
index 1b8d415..0911869 100644
--- a/tests/integration/targets/vyos_ntp_global/tests/cli/overridden.yaml
+++ b/tests/integration/targets/vyos_ntp_global/tests/cli/overridden.yaml
@@ -12,25 +12,36 @@
vyos.vyos.vyos_ntp_global: &id001
config:
servers:
- - server: server1
+ - server: server1.example.com
options:
- - dynamic
+ - pool
- prefer
- - server: server2
+ - server: server2.example.com
options:
- noselect
- - preempt
+ - prefer
- - server: server_add
+ - server: server-add.example.com
options:
- - preempt
+ - prefer
state: overridden
- vyos.vyos.vyos_facts:
gather_network_resources: ntp_global
- - assert:
+ - name: debug result.after and overridden.after
+ debug:
+ msg: "{{ result.after }} != {{ overridden.after }}"
+ when: result.after != overridden.after
+
+ - name: debug ansible_facts['network_resources']['ntp_global']
+ debug:
+ msg: "{{ ansible_facts['network_resources']['ntp_global'] }}"
+ when: result.after != ansible_facts['network_resources']['ntp_global']
+
+ - name: Verify that the configuration was correctly overridden
+ assert:
that:
- result.changed == true
- result.after == ansible_facts['network_resources']['ntp_global']
diff --git a/tests/integration/targets/vyos_ntp_global/tests/cli/parsed.yaml b/tests/integration/targets/vyos_ntp_global/tests/cli/parsed.yaml
index daf20f9..725384a 100644
--- a/tests/integration/targets/vyos_ntp_global/tests/cli/parsed.yaml
+++ b/tests/integration/targets/vyos_ntp_global/tests/cli/parsed.yaml
@@ -2,10 +2,13 @@
- debug:
msg: START vyos_ntp_global parsed integration tests on connection={{ ansible_connection }}
+- name: ensure version
+ include_tasks: _get_version.yaml
+
- name: Provide the running configuration for parsing (config to be parsed)
register: result
vyos.vyos.vyos_ntp_global:
- running_config: "{{ lookup('file', '_parsed.cfg') }}"
+ running_config: "{{ parsed.config }}"
state: parsed
- name: Assert that config was correctly parsed
diff --git a/tests/integration/targets/vyos_ntp_global/tests/cli/rendered.yaml b/tests/integration/targets/vyos_ntp_global/tests/cli/rendered.yaml
index 29ed3ad..e5de57e 100644
--- a/tests/integration/targets/vyos_ntp_global/tests/cli/rendered.yaml
+++ b/tests/integration/targets/vyos_ntp_global/tests/cli/rendered.yaml
@@ -8,21 +8,7 @@
- name: Structure provided configuration into device specific commands
register: result
vyos.vyos.vyos_ntp_global:
- config:
- servers:
- - server: server5
-
- - server: server4
- options:
- - noselect
- - dynamic
-
- - server: 10.3.6.5
- options:
- - noselect
- - preempt
- - dynamic
- - prefer
+ config: "{{ merged.config }}"
state: rendered
- assert:
diff --git a/tests/integration/targets/vyos_ntp_global/tests/cli/replaced.yaml b/tests/integration/targets/vyos_ntp_global/tests/cli/replaced.yaml
index 3942a34..a78d7f5 100644
--- a/tests/integration/targets/vyos_ntp_global/tests/cli/replaced.yaml
+++ b/tests/integration/targets/vyos_ntp_global/tests/cli/replaced.yaml
@@ -12,7 +12,7 @@
vyos.vyos.vyos_ntp_global: &id001
config:
servers:
- - server: server_new
+ - server: server-new.example.com
options:
- prefer
state: replaced
diff --git a/tests/integration/targets/vyos_ntp_global/tests/cli/rtt.yaml b/tests/integration/targets/vyos_ntp_global/tests/cli/rtt.yaml
index 6137c21..92d6cb3 100644
--- a/tests/integration/targets/vyos_ntp_global/tests/cli/rtt.yaml
+++ b/tests/integration/targets/vyos_ntp_global/tests/cli/rtt.yaml
@@ -5,29 +5,10 @@
- include_tasks: _remove_config.yaml
- block:
- - name: Merge the provided configuration with the existing running configuration
+ - name: RTT Merge the provided configuration with the existing running configuration
register: baseconfig
vyos.vyos.vyos_ntp_global:
- config:
- servers:
- - server: 10.3.6.5
- options:
- - noselect
- - dynamic
- - preempt
- - prefer
-
- - server: server4
- options:
- - noselect
- - dynamic
-
- - server: 0.pool.ntp.org
-
- - server: 1.pool.ntp.org
-
- - server: 2.pool.ntp.org
-
+ config: "{{ rtt.config }}"
state: merged
- vyos.vyos.vyos_facts:
@@ -35,33 +16,32 @@
- assert:
that:
- - baseconfig.commands|length == 6
+ - (baseconfig.commands|length) == (rtt.commands|length)
- baseconfig.changed == true
- baseconfig.commands|symmetric_difference(rtt.commands) == []
- baseconfig.after == ansible_facts['network_resources']['ntp_global']
- - name: Merge the existing configuration with the provided running configuration
+ - name: RTT Merge the existing configuration with the provided running configuration
register: result
vyos.vyos.vyos_ntp_global:
config:
servers:
- server: server1
options:
- - dynamic
+ - pool
- prefer
- server: server2
options:
- noselect
- - preempt
- - name: Revert back to base config using facts round trip
+ - name: RTT Revert back to base config using facts round trip
register: revert
vyos.vyos.vyos_ntp_global:
config: "{{ ansible_facts['network_resources']['ntp_global'] }}"
state: overridden
- - name: Assert that config was reverted
+ - name: RTT Assert that config was reverted
assert:
that: baseconfig.after == revert.after
diff --git a/tests/integration/targets/vyos_ntp_global/vars/main.yaml b/tests/integration/targets/vyos_ntp_global/vars/main.yaml
index 6cd65ce..4303881 100644
--- a/tests/integration/targets/vyos_ntp_global/vars/main.yaml
+++ b/tests/integration/targets/vyos_ntp_global/vars/main.yaml
@@ -1,107 +1,2 @@
---
-rtt:
- commands:
- - set system ntp server server4 dynamic
- - 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 server4 noselect
- - set system ntp server 10.3.6.5 prefer
-
-merged:
- commands:
- - set system ntp server server5
- - set system ntp server server4 dynamic
- - 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 server4 noselect
- - set system ntp server 10.3.6.5 prefer
-
- after:
- servers:
- - server: 0.pool.ntp.org
- - server: 1.pool.ntp.org
- - server: 10.3.6.5
- options:
- - dynamic
- - noselect
- - preempt
- - prefer
- - server: 2.pool.ntp.org
-
- - server: server4
- options:
- - dynamic
- - noselect
-
- - server: server5
-
-replaced:
- commands:
- - delete system ntp server 10.3.6.5
- - delete system ntp server server4
- - delete system ntp server server5
- - set system ntp server server_new prefer
-
- after:
- servers:
- - server: 0.pool.ntp.org
- - server: 1.pool.ntp.org
- - server: 2.pool.ntp.org
- - options:
- - prefer
- server: server_new
-
-overridden:
- commands:
- - delete system ntp server server_new
- - 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 server_add preempt
-
- after:
- servers:
- - server: 0.pool.ntp.org
- - server: 1.pool.ntp.org
- - server: 2.pool.ntp.org
- - server: server1
- options:
- - dynamic
- - prefer
-
- - server: server2
- options:
- - noselect
- - preempt
- - server: server_add
- options:
- - preempt
-
-deleted:
- commands:
- - delete system ntp server 10.3.6.5
- - delete system ntp server server4
- - delete system ntp server server5
-
-parsed:
- after:
- servers:
- - server: 0.pool.ntp.org
-
- - server: 1.pool.ntp.org
- - server: 10.3.6.5
- options:
- - dynamic
- - noselect
- - server: 2.pool.ntp.org
-
-populate:
- config:
- servers:
- - server: 0.pool.ntp.org
-
- - server: 1.pool.ntp.org
- - server: 2.pool.ntp.org
+# only common vars here
diff --git a/tests/integration/targets/vyos_ntp_global/vars/pre-v1_4.yaml b/tests/integration/targets/vyos_ntp_global/vars/pre-v1_4.yaml
new file mode 100644
index 0000000..c82d85d
--- /dev/null
+++ b/tests/integration/targets/vyos_ntp_global/vars/pre-v1_4.yaml
@@ -0,0 +1,139 @@
+---
+rtt:
+ config:
+ servers:
+ - server: 10.3.6.5
+ options:
+ - noselect
+ - pool
+ - preempt
+ - prefer
+
+ - server: server4.example.com
+ options:
+ - noselect
+ - pool
+
+ commands:
+ - set system ntp server server4.example.com pool
+ - set system ntp server 10.3.6.5 noselect
+ - set system ntp server 10.3.6.5 pool
+ - set system ntp server 10.3.6.5 preempt
+ - set system ntp server server4.example.com noselect
+ - set system ntp server 10.3.6.5 prefer
+
+merged:
+ config:
+ servers:
+ - server: server5.example.com
+ - server: server4.example.com
+ options:
+ - noselect
+ - pool
+ - server: 10.3.6.5
+ options:
+ - noselect
+ - preempt
+ - pool
+ - prefer
+
+ commands:
+ - set system ntp server server5.example.com
+ - set system ntp server server4.example.com pool
+ - set system ntp server 10.3.6.5 noselect
+ - set system ntp server 10.3.6.5 pool
+ - set system ntp server 10.3.6.5 preempt
+ - set system ntp server server4.example.com noselect
+ - set system ntp server 10.3.6.5 prefer
+
+ after:
+ servers:
+ - server: 10.3.6.5
+ options:
+ - noselect
+ - pool
+ - preempt
+ - prefer
+ - server: server4.example.com
+ options:
+ - noselect
+ - pool
+
+ - server: server5.example.com
+
+replaced:
+ commands:
+ - delete system ntp server 10.3.6.5
+ - delete system ntp server server4.example.com
+ - delete system ntp server server5.example.com
+ - set system ntp server server-new.example.com prefer
+
+ after:
+ servers:
+ - options:
+ - prefer
+ server: server-new.example.com
+
+overridden:
+ commands:
+ - delete system ntp server server-new.example.com
+ - set system ntp server server1.example.com pool
+ - set system ntp server server1.example.com prefer
+ - set system ntp server server2.example.com noselect
+ - set system ntp server server2.example.com prefer
+ - set system ntp server server-add.example.com prefer
+
+ after:
+ servers:
+ - server: server-add.example.com
+ options:
+ - prefer
+ - server: server1.example.com
+ options:
+ - pool
+ - prefer
+ - server: server2.example.com
+ options:
+ - noselect
+ - prefer
+
+deleted:
+ commands:
+ - delete system ntp server 10.3.6.5
+ - delete system ntp server server4.example.com
+ - delete system ntp server server5.example.com
+ - delete system ntp
+
+parsed:
+ config: |
+ set system ntp server 10.3.6.5 noselect
+ set system ntp server 10.3.6.5 pool
+ set system ntp server 0.pool.ntp.org
+ set system ntp server 1.pool.ntp.org
+ set system ntp server 2.pool.ntp.org
+ after:
+ servers:
+ - server: 0.pool.ntp.org
+
+ - server: 1.pool.ntp.org
+ - server: 10.3.6.5
+ options:
+ - noselect
+ - pool
+ - server: 2.pool.ntp.org
+
+populate:
+ config:
+ servers:
+ - server: server5.example.com
+ options:
+ - preempt
+ - server: server4.example.com
+ options:
+ - noselect
+ - pool
+ - server: 10.3.6.5
+ options:
+ - noselect
+ - preempt
+ - prefer
diff --git a/tests/integration/targets/vyos_ntp_global/vars/v1_4.yaml b/tests/integration/targets/vyos_ntp_global/vars/v1_4.yaml
new file mode 100644
index 0000000..2a655bf
--- /dev/null
+++ b/tests/integration/targets/vyos_ntp_global/vars/v1_4.yaml
@@ -0,0 +1,141 @@
+---
+rtt:
+ config:
+ servers:
+ - server: 10.3.6.5
+ options:
+ - noselect
+ - nts
+ - pool
+ - prefer
+
+ - server: server4.example.com
+ options:
+ - noselect
+ - pool
+
+ commands:
+ - set service ntp server server4.example.com pool
+ - set service ntp server 10.3.6.5 noselect
+ - set service ntp server 10.3.6.5 nts
+ - set service ntp server 10.3.6.5 pool
+ - set service ntp server server4.example.com noselect
+ - set service ntp server 10.3.6.5 prefer
+
+merged:
+ config:
+ servers:
+ - server: server5.example.com
+ - server: server4.example.com
+ options:
+ - noselect
+ - pool
+ - server: 10.3.6.5
+ options:
+ - noselect
+ - nts
+ - pool
+ - prefer
+
+ commands:
+ - set service ntp server server5.example.com
+ - set service ntp server server4.example.com pool
+ - set service ntp server 10.3.6.5 noselect
+ - set service ntp server 10.3.6.5 nts
+ - set service ntp server 10.3.6.5 pool
+ - set service ntp server server4.example.com noselect
+ - set service ntp server 10.3.6.5 prefer
+
+ after:
+ servers:
+ - server: 10.3.6.5
+ options:
+ - noselect
+ - nts
+ - pool
+ - prefer
+
+ - server: server4.example.com
+ options:
+ - noselect
+ - pool
+
+ - server: server5.example.com
+
+replaced:
+ commands:
+ - delete service ntp server 10.3.6.5
+ - delete service ntp server server4.example.com
+ - delete service ntp server server5.example.com
+ - set service ntp server server-new.example.com prefer
+
+ after:
+ servers:
+ - options:
+ - prefer
+ server: server-new.example.com
+
+overridden:
+ commands:
+ - delete service ntp server server-new.example.com
+ - set service ntp server server1.example.com pool
+ - set service ntp server server1.example.com prefer
+ - set service ntp server server2.example.com noselect
+ - set service ntp server server2.example.com prefer
+ - set service ntp server server-add.example.com prefer
+
+ after:
+ servers:
+ - server: server-add.example.com
+ options:
+ - prefer
+
+ - server: server1.example.com
+ options:
+ - pool
+ - prefer
+
+ - server: server2.example.com
+ options:
+ - noselect
+ - prefer
+
+deleted:
+ commands:
+ - delete service ntp server 10.3.6.5
+ - delete service ntp server server4.example.com
+ - delete service ntp server server5.example.com
+ - delete service ntp
+
+parsed:
+ config: |
+ set service ntp server 10.3.6.5 noselect
+ set service ntp server 10.3.6.5 pool
+ set service ntp server 0.pool.ntp.org
+ set service ntp server 1.pool.ntp.org
+ set service ntp server 2.pool.ntp.org
+ after:
+ servers:
+ - server: 0.pool.ntp.org
+ - server: 1.pool.ntp.org
+ - server: 10.3.6.5
+ options:
+ - noselect
+ - pool
+ - server: 2.pool.ntp.org
+
+populate:
+ config:
+ servers:
+ - server: server4.example.com
+ options:
+ - prefer
+ - server: server4.example.com
+ options:
+ - noselect
+ - pool
+ - server: 10.3.6.5
+ options:
+ - noselect
+ - prefer
+ - prefer
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 0bf6107..b8adeae 100644
--- a/tests/unit/modules/network/vyos/test_vyos_ntp_global.py
+++ b/tests/unit/modules/network/vyos/test_vyos_ntp_global.py
@@ -328,6 +328,7 @@ class TestVyosNTPModule(TestVyosModule):
self.assertEqual(gathered_list, result["gathered"])
def test_ntp_deleted(self):
+ # Delete the subsections that we include (listen_addresses and servers)
set_module_args(
dict(
config=dict(
@@ -345,6 +346,25 @@ class TestVyosNTPModule(TestVyosModule):
),
)
commands = [
+ "delete system ntp allow-clients", # 10.1.1.0/24",
+ "delete system ntp listen-address", # 10.2.3.1",
+ "delete system ntp server server1",
+ "delete system ntp server server3",
+ "delete system ntp server time1.vyos.net",
+ "delete system ntp server time2.vyos.net",
+ "delete system ntp server time3.vyos.net",
+ "delete system ntp",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_ntp__all_deleted(self):
+ set_module_args(
+ dict(
+ config=dict(),
+ state="deleted",
+ ),
+ )
+ commands = [
"delete system ntp allow-clients",
"delete system ntp listen-address",
"delete system ntp server server1",
@@ -352,6 +372,7 @@ class TestVyosNTPModule(TestVyosModule):
"delete system ntp server time1.vyos.net",
"delete system ntp server time2.vyos.net",
"delete system ntp server time3.vyos.net",
+ "delete system ntp",
]
self.execute_module(changed=True, commands=commands)
@@ -427,13 +448,13 @@ class TestVyosNTPModule14(TestVyosModule):
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="server4", options=["pool", "prefer"]),
dict(
server="server5",
options=[
"noselect",
"pool",
- "preempt",
+ "nts",
"prefer",
],
),
@@ -449,10 +470,10 @@ class TestVyosNTPModule14(TestVyosModule):
"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 server4 prefer",
"set service ntp server server5 pool",
"set service ntp server server5 noselect",
- "set service ntp server server5 preempt",
+ "set service ntp server server5 nts",
"set service ntp server server5 prefer",
]
@@ -472,7 +493,7 @@ class TestVyosNTPModule14(TestVyosModule):
"noselect",
"pool",
"prefer",
- "preempt",
+ "nts",
],
),
dict(server="time1.vyos.net"),
@@ -499,7 +520,7 @@ class TestVyosNTPModule14(TestVyosModule):
"set service ntp server server6 noselect",
"set service ntp server server6 pool",
"set service ntp server server6 prefer",
- "set service ntp server server6 preempt",
+ "set service ntp server server6 nts",
]
self.execute_module(changed=True, commands=commands)
@@ -679,5 +700,6 @@ class TestVyosNTPModule14(TestVyosModule):
"delete service ntp server time1.vyos.net",
"delete service ntp server time2.vyos.net",
"delete service ntp server time3.vyos.net",
+ "delete service ntp",
]
self.execute_module(changed=True, commands=commands)