# Test code for the ACI modules # Copyright: (c) 2017, Jacob McGill (jmcgill298) # Copyright: (c) 2018, Dag Wieers (dagwieers) # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - name: Test that we have an aci apic host, aci username and aci password fail: msg: 'Please define the following variables: aci_hostname, aci_username and aci_password.' when: aci_hostname is not defined or aci_username is not defined or aci_password is not defined - name: Ensure vlan pool does not exist for tests to kick off aci_vlan_pool: &aci_pool_absent_static host: "{{ aci_hostname }}" username: "{{ aci_username }}" password: "{{ aci_password }}" validate_certs: '{{ aci_validate_certs | default(false) }}' use_ssl: '{{ aci_use_ssl | default(true) }}' use_proxy: '{{ aci_use_proxy | default(true) }}' output_level: debug state: absent pool: anstest allocation_mode: static - name: Ensure vlan pool does not exist for tests to kick off aci_vlan_pool: &aci_pool_absent_dynamic <<: *aci_pool_absent_static allocation_mode: dynamic - name: Create static vlan pool - check mode works aci_vlan_pool: &aci_pool_present_static <<: *aci_pool_absent_static state: present descr: Ansible Test check_mode: yes register: create_check_mode - name: Assertion test - present assert: that: - create_check_mode.changed == true - 'create_check_mode.sent == {"fvnsVlanInstP": {"attributes": {"allocMode": "static", "descr": "Ansible Test", "name": "anstest"}}}' - name: Create static vlan pool - creation works aci_vlan_pool: <<: *aci_pool_present_static register: create_static - name: Assertion test - present assert: that: - create_static.changed == true - create_static.previous == [] - create_static.sent == create_check_mode.sent - name: Create dynamic vlan pool - creation works aci_vlan_pool: &aci_pool_present_dynamic <<: *aci_pool_absent_dynamic state: present descr: Ansible Test register: create_dynamic - name: Assertion test - present assert: that: - create_dynamic.changed == true - create_dynamic.previous == [] - 'create_dynamic.sent == {"fvnsVlanInstP": {"attributes": {"allocMode": "dynamic", "descr": "Ansible Test", "name": "anstest"}}}' - name: Create static vlan pool again - idempotency works aci_vlan_pool: <<: *aci_pool_present_static register: idempotent_static - name: Assertion test - present assert: that: - idempotent_static.changed == false - 'idempotent_static.previous == [{"fvnsVlanInstP": {"attributes": {"allocMode": "static", "descr": "Ansible Test", "dn": "uni/infra/vlanns-[anstest]-static", "name": "anstest", "nameAlias": "", "ownerKey": "", "ownerTag": ""}}}]' - idempotent_static.sent == {} - name: Create dynamic vlan pool again - idempotency works aci_vlan_pool: <<: *aci_pool_present_dynamic register: idempotent_dynamic - name: Assertion test - present assert: that: - idempotent_dynamic.changed == false - 'idempotent_dynamic.previous == [{"fvnsVlanInstP": {"attributes": {"allocMode": "dynamic", "descr": "Ansible Test", "dn": "uni/infra/vlanns-[anstest]-dynamic", "name": "anstest", "nameAlias": "", "ownerKey": "", "ownerTag": ""}}}]' - idempotent_dynamic.sent == {} - name: Update static vlan pool - update works aci_vlan_pool: <<: *aci_pool_present_static descr: Ansible Test Change register: update_static - name: Assertion test - present assert: that: - update_static.changed == true - 'update_static.sent == {"fvnsVlanInstP": {"attributes": {"descr": "Ansible Test Change"}}}' - name: Update dynamic vlan pool - update works aci_vlan_pool: <<: *aci_pool_present_dynamic descr: Ansible Test Change register: update_dynamic - name: Assertion test - present assert: that: - update_dynamic.changed == true - 'update_dynamic.sent == {"fvnsVlanInstP": {"attributes": {"descr": "Ansible Test Change"}}}' - name: Missing param - failure message works aci_vlan_pool: <<: *aci_pool_present_dynamic allocation_mode: "{{ fake_var | default(omit) }}" ignore_errors: yes register: vlan_alloc_fail - name: Assertion test - present assert: that: - vlan_alloc_fail.failed == true - vlan_alloc_fail.msg == "ACI requires the 'allocation_mode' when 'pool' is provided" - name: Missing param - failure message works aci_vlan_pool: <<: *aci_pool_present_dynamic pool: "{{ fake_var | default(omit) }}" ignore_errors: yes register: vlan_pool_fail - name: Assertion test - present assert: that: - vlan_pool_fail.failed == true - 'vlan_pool_fail.msg == "state is present but all of the following are missing: pool"' - name: Get all vlan pools - get class works aci_vlan_pool: <<: *aci_pool_absent_static state: query pool: "{{ fake_var | default(omit) }}" allocation_mode: "{{ fake_var | default(omit) }}" register: get_all_pools - name: Assertion test - query assert: that: - get_all_pools.changed == false - get_all_pools.method == "GET" - get_all_pools.previous | length > 1 - name: Get created static vlan pool - get mo works aci_vlan_pool: <<: *aci_pool_absent_static state: query register: get_static_pool - name: Assertion test - query assert: that: - get_static_pool.changed == false - get_static_pool.method == "GET" - get_static_pool.previous | length == 1 - get_static_pool.previous.0.fvnsVlanInstP.attributes.allocMode == "static" - get_static_pool.previous.0.fvnsVlanInstP.attributes.name == "anstest" - name: Get created dynamic vlan pool - get mo works aci_vlan_pool: <<: *aci_pool_absent_dynamic state: query register: get_dynamic_pool - name: Assertion test - query assert: that: - get_dynamic_pool.changed == false - get_dynamic_pool.method == "GET" - get_dynamic_pool.previous | length == 1 - get_dynamic_pool.previous.0.fvnsVlanInstP.attributes.allocMode == "dynamic" - get_dynamic_pool.previous.0.fvnsVlanInstP.attributes.name == "anstest" - name: Delete static vlan pool - deletion works aci_vlan_pool: <<: *aci_pool_absent_static register: delete_static - name: Assertion test - absent assert: that: - delete_static.changed == true - delete_static.method == "DELETE" - delete_static.previous.0.fvnsVlanInstP.attributes.allocMode == "static" - delete_static.previous.0.fvnsVlanInstP.attributes.name == "anstest" - name: Delete dynamic vlan pool - check mode works aci_vlan_pool: <<: *aci_pool_absent_dynamic check_mode: yes register: delete_check_mode - name: Assertion test - absent assert: that: - delete_check_mode.changed == true - name: Delete dynamic vlan pool - deletion works aci_vlan_pool: <<: *aci_pool_absent_dynamic register: delete_dynamic - name: Assertion test - absent assert: that: - delete_dynamic.changed == true - delete_dynamic.method == "DELETE" - delete_dynamic.previous.0.fvnsVlanInstP.attributes.allocMode == "dynamic" - delete_dynamic.previous.0.fvnsVlanInstP.attributes.name == "anstest" - name: Delete static vlan pool again - idempotency works aci_vlan_pool: <<: *aci_pool_absent_static register: idempotent_delete_static - name: Assertion test - absent assert: that: - idempotent_delete_static.changed == false - idempotent_delete_static.previous == [] - name: Delete dynamic vlan pool again - idempotency works aci_vlan_pool: <<: *aci_pool_absent_dynamic register: idempotent_delete_dynamic - name: Assertion test - absent assert: that: - idempotent_delete_dynamic.changed == false - idempotent_delete_dynamic.previous == []