---
- debug: msg="START TRANSPORT:{{ connection.transport }} nxos_vlan sanity test"

- block:
  - name: "Enable feature vn segment"
    nxos_config: 
      commands:
        - feature vn-segment-vlan-based
      provider: "{{ connection }}"
      match: none
    when: platform | search('N9K')

  - name: Ensure a range of VLANs are present on the switch
    nxos_vlan: &conf_vlan
      vlan_range: "2-10,20,50,55-60,100-150"
      provider: "{{ connection }}"
    register: result

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

  - name: "Vlan Idempotence"
    nxos_vlan: *conf_vlan
    register: result

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

  - name: Ensure VLAN 50 exists with the name WEB and is in the shutdown state
    nxos_vlan: &web1
      vlan_id: 50
      vlan_state: suspend
      admin_state: down
      name: WEB
      mapped_vni: 5555
      provider: "{{ connection }}"
    register: result
    when: platform | search('N9K')

  - assert: *true
    when: platform | search('N9K')

  - name: "web Idempotence"
    nxos_vlan: *web1
    register: result
    when: platform | search('N9K')

  - assert: *false
    when: platform | search('N9K')

  - name: Ensure VLAN 50 exists with the name WEB and is in the shutdown state
    nxos_vlan: &web2
      vlan_id: 50
      vlan_state: suspend
      admin_state: down
      name: WEB
      provider: "{{ connection }}"
    register: result
    when: platform | search('N3K|N7K')

  - assert: *true
    when: platform | search('N3K|N7K')

  - name: "web Idempotence"
    nxos_vlan: *web2
    register: result
    when: platform | search('N3K|N7K')

  - assert: *false
    when: platform | search('N3K|N7K')

  - name: Ensure VLAN is NOT on the device
    nxos_vlan: &no_vlan
      vlan_id: 50
      state: absent
      provider: "{{ connection }}"
    register: result

  - assert: *true

  - name: "no vlan Idempotence"
    nxos_vlan: *no_vlan
    register: result

  - assert: *false

  always:
    - name: remove vlans
      nxos_vlan:
        vlan_range: "2-10,20,50,55-60,100-150"
        state: absent
        provider: "{{ connection }}"
      ignore_errors: yes

    - name: "Disable feature vn segement"
      nxos_feature: 
        feature: vn-segment-vlan-based
        state: disabled
        provider: "{{ connection }}"
      ignore_errors: yes
      when: platform | search('N9K')

- debug: msg="END TRANSPORT:{{ connection.transport }} nxos_vlan sanity test"
