diff options
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) |