# Test code for the vmware_vswitch module.
# Copyright: (c) 2017, Abhijeet Kasurde <akasurde@redhat.com>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)

- when: vcsim is not defined
  block:
  - import_role:
      name: prepare_vmware_tests
    vars:
      setup_attach_host: true

  # TODO: akasurde: VCSIM does not suport network manager system
  - name: Ensure the vswitch is not already here
    vmware_vswitch:
      validate_certs: no
      hostname: '{{ item.host }}'
      username: '{{ esxi_user }}'
      password: '{{ esxi_password }}'
      switch: '{{ item.switch }}'
      state: absent
    with_items:
      - {host: "{{ esxi1 }}", switch: "vmswitch_0001"}
      - {host: "{{ esxi2 }}", switch: "vmswitch_0002"}

  - name: Add a nic to a switch
    vmware_vswitch:
      hostname: '{{ esxi1 }}'
      username: '{{ esxi_user }}'
      password: '{{ esxi_password }}'
      validate_certs: no
      switch: vmswitch_0001
      nics: vmnic1
      state: present
    register: add_nic_run
  - debug: var=add_nic_run
  - assert:
      that:
      - add_nic_run.changed == true

  - name: Add a nic to a switch again
    vmware_vswitch:
      hostname: '{{ esxi1 }}'
      username: '{{ esxi_user }}'
      password: '{{ esxi_password }}'
      validate_certs: no
      switch: vmswitch_0001
      nics: vmnic1
      state: present
    register: add_nic_again_run
  - assert:
      that:
      - add_nic_again_run.changed == false

  - name: Remove a switch
    vmware_vswitch:
      hostname: '{{ esxi1 }}'
      username: '{{ esxi_user }}'
      password: '{{ esxi_password }}'
      validate_certs: no
      switch: vmswitch_0001
      state: absent
    register: remove_nic_run
  - assert:
      that:
      - remove_nic_run is changed

  - name: Remove a switch again
    vmware_vswitch:
      hostname: '{{ esxi1 }}'
      username: '{{ esxi_user }}'
      password: '{{ esxi_password }}'
      validate_certs: no
      switch: vmswitch_0001
      state: absent
    register: remove_nic_again_run
  - assert:
      that:
      - not (remove_nic_again_run is changed)

  - name: Add vswitch to a specific host system
    vmware_vswitch:
      validate_certs: False
      hostname: '{{ vcenter_hostname }}'
      username: '{{ vcenter_username }}'
      password: '{{ vcenter_password }}'
      switch: vmswitch_0002
      nics: vmnic1
      esxi_hostname: '{{ esxi2 }}'
    register: add_vswitch_with_host_system
  - debug: var=add_vswitch_with_host_system
  - assert:
      that:
      - add_vswitch_with_host_system is changed
