ansible/test/integration/targets/aci_vlan_pool/tasks/dynamic.yml
Dag Wieers d8ba8c03f3
ACI: Make querying links and nodes possible (#43441)
This functionality was not considered when the module was written, but
there's no reason why it shouldn't be supported.

We had to rework the query string construction and object filtering.
This new functionality allows to filter on arbitrary keys and supports
None values.

This PR fixes various issues with the existing framework, including
querying specific objects using construct_url_4 (i.e.
aci_epg_to_contract and aci_static_binding_to_epg)
2018-08-07 23:54:54 +02:00

296 lines
12 KiB
YAML

# Test code for the ACI modules
# Copyright: (c) 2018, Dag Wieers (dagwieers) <dag@wieers.com>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
# CLEAN ENVIRONMENT
- name: Remove dynamic vlan pool
aci_vlan_pool: &dynamic_vlan_pool_absent
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: '{{ aci_output_level | default("info") }}'
pool: anstest
pool_allocation_mode: dynamic
state: absent
# ADD VLAN POOL
- name: Add dynamic vlan pool (check_mode)
aci_vlan_pool: &dynamic_vlan_pool_present
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: '{{ aci_output_level | default("info") }}'
pool: anstest
pool_allocation_mode: dynamic
state: present
check_mode: yes
register: cm_add_dynamic_vlan_pool
- name: Add dynamic vlan pool (normal mode)
aci_vlan_pool: *dynamic_vlan_pool_present
register: nm_add_dynamic_vlan_pool
- name: Verify add_dynamic_vlan_pool
assert:
that:
- cm_add_dynamic_vlan_pool is changed
- nm_add_dynamic_vlan_pool is changed
- 'cm_add_dynamic_vlan_pool.sent == nm_add_dynamic_vlan_pool.sent == {"fvnsVlanInstP": {"attributes": {"allocMode": "dynamic", "name": "anstest"}}}'
- 'cm_add_dynamic_vlan_pool.proposed == nm_add_dynamic_vlan_pool.proposed == {"fvnsVlanInstP": {"attributes": {"allocMode": "dynamic", "name": "anstest"}}}'
- cm_add_dynamic_vlan_pool.previous == nm_add_dynamic_vlan_pool.previous == []
# NOTE: We cannot fix this easily
- cm_add_dynamic_vlan_pool.current == []
- nm_add_dynamic_vlan_pool.current.0.fvnsVlanInstP.attributes.allocMode == 'dynamic'
- nm_add_dynamic_vlan_pool.current.0.fvnsVlanInstP.attributes.descr == ''
- nm_add_dynamic_vlan_pool.current.0.fvnsVlanInstP.attributes.dn == 'uni/infra/vlanns-[anstest]-dynamic'
- nm_add_dynamic_vlan_pool.current.0.fvnsVlanInstP.attributes.name == 'anstest'
- name: Add dynamic_vlan_pool again (check_mode)
aci_vlan_pool: *dynamic_vlan_pool_present
check_mode: yes
register: cm_add_dynamic_vlan_pool_again
- name: Add dynamic vlan pool again (normal mode)
aci_vlan_pool: *dynamic_vlan_pool_present
register: nm_add_dynamic_vlan_pool_again
- name: Verify add_dynamic_vlan_pool_again
assert:
that:
- cm_add_dynamic_vlan_pool_again is not changed
- nm_add_dynamic_vlan_pool_again is not changed
- cm_add_dynamic_vlan_pool_again.current == nm_add_dynamic_vlan_pool_again.current == nm_add_dynamic_vlan_pool.current
# CHANGE VLAN POOL
- name: Change description of dynamic vlan pool (check_mode)
aci_vlan_pool:
<<: *dynamic_vlan_pool_present
description: Ansible test dynamic vlan pool
check_mode: yes
register: cm_add_dynamic_vlan_pool_descr
- name: Change description of dynamic vlan pool (normal mode)
aci_vlan_pool:
<<: *dynamic_vlan_pool_present
description: Ansible test dynamic vlan pool
register: nm_add_dynamic_vlan_pool_descr
- name: Verify add_dynamic_vlan_pool_descr
assert:
that:
- cm_add_dynamic_vlan_pool_descr is changed
- nm_add_dynamic_vlan_pool_descr is changed
- 'cm_add_dynamic_vlan_pool_descr.sent == nm_add_dynamic_vlan_pool_descr.sent == {"fvnsVlanInstP": {"attributes": {"descr": "Ansible test dynamic vlan pool"}}}'
- 'cm_add_dynamic_vlan_pool_descr.proposed == nm_add_dynamic_vlan_pool_descr.proposed == {"fvnsVlanInstP": {"attributes": {"allocMode": "dynamic", "descr": "Ansible test dynamic vlan pool", "name": "anstest"}}}'
- cm_add_dynamic_vlan_pool_descr.previous == nm_add_dynamic_vlan_pool_descr.previous == cm_add_dynamic_vlan_pool_descr.current == nm_add_dynamic_vlan_pool.current
- nm_add_dynamic_vlan_pool_descr.current.0.fvnsVlanInstP.attributes.allocMode == 'dynamic'
- nm_add_dynamic_vlan_pool_descr.current.0.fvnsVlanInstP.attributes.descr == 'Ansible test dynamic vlan pool'
- nm_add_dynamic_vlan_pool_descr.current.0.fvnsVlanInstP.attributes.dn == 'uni/infra/vlanns-[anstest]-dynamic'
- nm_add_dynamic_vlan_pool_descr.current.0.fvnsVlanInstP.attributes.name == 'anstest'
- name: Change description of dynamic vlan pool again (check_mode)
aci_vlan_pool:
<<: *dynamic_vlan_pool_present
description: Ansible test dynamic vlan pool
check_mode: yes
register: cm_add_dynamic_vlan_pool_descr_again
- name: Change description of dynamic vlan pool again (normal mode)
aci_vlan_pool:
<<: *dynamic_vlan_pool_present
description: Ansible test dynamic vlan pool
register: nm_add_dynamic_vlan_pool_descr_again
- name: Verify add_dynamic_vlan_pool_descr_again
assert:
that:
- cm_add_dynamic_vlan_pool_descr_again is not changed
- nm_add_dynamic_vlan_pool_descr_again is not changed
- cm_add_dynamic_vlan_pool_descr_again.current == nm_add_dynamic_vlan_pool_descr_again.current == nm_add_dynamic_vlan_pool_descr.current
# ADD VLAN POOL AGAIN
- name: Add dynamic vlan pool again with no description (check_mode)
aci_vlan_pool: *dynamic_vlan_pool_present
check_mode: yes
register: cm_add_dynamic_vlan_pool_again_no_descr
- name: Add dynamic vlan pool again with no description (normal mode)
aci_vlan_pool: *dynamic_vlan_pool_present
register: nm_add_dynamic_vlan_pool_again_no_descr
- name: Verify add_dynamic_vlan_pool_again_no_descr
assert:
that:
- cm_add_dynamic_vlan_pool_again_no_descr is not changed
- nm_add_dynamic_vlan_pool_again_no_descr is not changed
- cm_add_dynamic_vlan_pool_again_no_descr.current == nm_add_dynamic_vlan_pool_again_no_descr.current == nm_add_dynamic_vlan_pool_descr.current
# QUERY ALL VLAN POOLS
- name: Query all dynamic vlan pools (check_mode)
aci_vlan_pool: &dynamic_vlan_pool_query
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: '{{ aci_output_level | default("info") }}'
state: query
check_mode: yes
register: cm_query_all_dynamic_vlan_pools
- name: Query all dynamic vlan pools (normal mode)
aci_vlan_pool: *dynamic_vlan_pool_query
register: nm_query_all_dynamic_vlan_pools
- name: Verify query_all_dynamic_vlan_pools
assert:
that:
- cm_query_all_dynamic_vlan_pools is not changed
- nm_query_all_dynamic_vlan_pools is not changed
- cm_query_all_dynamic_vlan_pools == nm_query_all_dynamic_vlan_pools
- cm_query_all_dynamic_vlan_pools.current|length >= 1
# QUERY A VLAN POOL
- name: Query our dynamic vlan pool
aci_vlan_pool:
<<: *dynamic_vlan_pool_query
pool: anstest
pool_allocation_mode: dynamic
check_mode: yes
register: cm_query_dynamic_vlan_pool
- name: Query our dynamic vlan pool
aci_vlan_pool:
<<: *dynamic_vlan_pool_query
pool: anstest
pool_allocation_mode: dynamic
register: nm_query_dynamic_vlan_pool
- name: Verify query_dynamic_vlan_pool
assert:
that:
- cm_query_dynamic_vlan_pool is not changed
- nm_query_dynamic_vlan_pool is not changed
- cm_query_dynamic_vlan_pool == nm_query_dynamic_vlan_pool
- nm_query_dynamic_vlan_pool.current.0.fvnsVlanInstP.attributes.allocMode == 'dynamic'
- nm_query_dynamic_vlan_pool.current.0.fvnsVlanInstP.attributes.descr == 'Ansible test dynamic vlan pool'
- nm_query_dynamic_vlan_pool.current.0.fvnsVlanInstP.attributes.dn == 'uni/infra/vlanns-[anstest]-dynamic'
- nm_query_dynamic_vlan_pool.current.0.fvnsVlanInstP.attributes.name == 'anstest'
# REMOVE VLAN POOL
- name: Remove dynamic vlan pool (check_mode)
aci_vlan_pool: *dynamic_vlan_pool_absent
check_mode: yes
register: cm_remove_dynamic_vlan_pool
- name: Remove dynamic vlan pool (normal mode)
aci_vlan_pool: *dynamic_vlan_pool_absent
register: nm_remove_dynamic_vlan_pool
- name: Verify remove_dynamic_vlan_pool
assert:
that:
- cm_remove_dynamic_vlan_pool is changed
- nm_remove_dynamic_vlan_pool is changed
- 'cm_remove_dynamic_vlan_pool.current == cm_remove_dynamic_vlan_pool.previous == nm_remove_dynamic_vlan_pool.previous == [{"fvnsVlanInstP": {"attributes": {"allocMode": "dynamic", "descr": "Ansible test dynamic vlan pool", "dn": "uni/infra/vlanns-[anstest]-dynamic", "name": "anstest", "nameAlias": "", "ownerKey": "", "ownerTag": ""}}}]'
- nm_remove_dynamic_vlan_pool.current == []
- name: Remove dynamic vlan pool again (check_mode)
aci_vlan_pool: *dynamic_vlan_pool_absent
check_mode: yes
register: cm_remove_dynamic_vlan_pool_again
- name: Remove dynamic vlan pool again (normal mode)
aci_vlan_pool: *dynamic_vlan_pool_absent
register: nm_remove_dynamic_vlan_pool_again
- name: Verify remove_dynamic_vlan_pool_again
assert:
that:
- cm_remove_dynamic_vlan_pool_again is not changed
- nm_remove_dynamic_vlan_pool_again is not changed
- cm_remove_dynamic_vlan_pool_again.proposed == nm_remove_dynamic_vlan_pool_again.proposed == {}
- cm_remove_dynamic_vlan_pool_again.sent == nm_remove_dynamic_vlan_pool_again.sent == {}
- cm_remove_dynamic_vlan_pool_again.previous == nm_remove_dynamic_vlan_pool_again.previous == []
- cm_remove_dynamic_vlan_pool_again.current == nm_remove_dynamic_vlan_pool_again.current == []
# QUERY NON-EXISTING VLAN POOL
- name: Query non-existing dynamic vlan pool (check_mode)
aci_vlan_pool:
<<: *dynamic_vlan_pool_query
pool: anstest
pool_allocation_mode: dynamic
check_mode: yes
register: cm_query_non_dynamic_vlan_pool
- name: Query non-existing dynamic vlan pool (normal mode)
aci_vlan_pool:
<<: *dynamic_vlan_pool_query
pool: anstest
pool_allocation_mode: dynamic
register: nm_query_non_dynamic_vlan_pool
# TODO: Implement more tests
- name: Verify query_non_dynamic_vlan_pool
assert:
that:
- cm_query_non_dynamic_vlan_pool is not changed
- nm_query_non_dynamic_vlan_pool is not changed
- cm_remove_dynamic_vlan_pool_again.previous == nm_remove_dynamic_vlan_pool_again.previous == []
- cm_remove_dynamic_vlan_pool_again.current == nm_remove_dynamic_vlan_pool_again.current == []
# PROVOKE ERRORS
- name: Error when required parameter is missing
aci_vlan_pool:
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: '{{ aci_output_level | default("info") }}'
state: present
ignore_errors: yes
register: error_on_missing_required_param
- name: Verify error_on_missing_required_param
assert:
that:
- error_on_missing_required_param is failed
- 'error_on_missing_required_param.msg == "state is present but all of the following are missing: pool"'
- name: Error when together parameter is missing
aci_vlan_pool:
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: '{{ aci_output_level | default("info") }}'
pool: anstest
state: present
ignore_errors: yes
register: error_on_missing_together_param
- name: Verify error_on_missing_together_param
assert:
that:
- error_on_missing_together_param is failed
- error_on_missing_together_param.msg == "ACI requires the 'pool_allocation_mode' when 'pool' is provided"