---
- debug: msg="START connection={{ ansible_connection }} nxos_ntp sanity test"
- debug: msg="Using provider={{ connection.transport }}"
  when: ansible_connection == "local"

- name: Setup - Remove ntp if configured
  nxos_ntp: &remove
    server: 1.2.3.4
    key_id: 32
    prefer: disabled
    vrf_name: management
    source_addr: 192.0.2.5
    provider: "{{ connection }}"
    state: absent
  ignore_errors: yes

- block:

  - name: Configure ntp
    nxos_ntp: &config
      server: 1.2.3.4
      key_id: 32
      prefer: enabled
      vrf_name: management
      source_addr: 192.0.2.5
      provider: "{{ connection }}"
      state: present
    register: result

  - assert: &true
      that:
        - "result.changed == true"

  - name: Idempotence Check
    nxos_ntp: *config
    register: result

  - assert: &false
      that:
        - "result.changed == false"

  - name: Configure ntp with some defaults
    nxos_ntp: &config1
      peer: 1.2.3.4
      key_id: default
      prefer: enabled
      vrf_name: default
      source_addr: default
      provider: "{{ connection }}"
      state: present
    register: result

  - assert: *true

  - name: Idempotence Check
    nxos_ntp: *config1
    register: result

  - assert: *false

  - name: Remove ntp config
    nxos_ntp: *remove
    register: result

  - assert: *true

  - name: Remove Idempotence Check
    nxos_ntp: *remove
    register: result

  - assert: *false

  - name: Configure ntp again
    nxos_ntp: &config2
      source_int: Ethernet1/3
      peer: 1.2.3.4
      prefer: enabled
      provider: "{{ connection }}"
      state: present
    register: result

  - assert: *true

  - name: Idempotence Check
    nxos_ntp: *config2
    register: result

  - assert: *false

  - name: Remove source interface
    nxos_ntp: &config3
      source_int: default
      provider: "{{ connection }}"
      state: present
    register: result

  - assert: *true

  - name: Idempotence Check
    nxos_ntp: *config3
    register: result

  - assert: *false

  - name: Remove ntp
    nxos_ntp: *remove
    register: result

  - assert: *true

  - name: Remove Idempotence Check
    nxos_ntp: *remove
    register: result

  - assert: *false

  always:
  - name: Remove ntp config
    nxos_ntp: *remove

  - debug: msg="END connection={{ ansible_connection }} nxos_ntp sanity test"
