d8ba8c03f3
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)
264 lines
8.1 KiB
YAML
264 lines
8.1 KiB
YAML
---
|
|
- name: ensure vlan pool does not exist for tests to kick off
|
|
aci_encap_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
|
|
pool_type: vlan
|
|
pool_allocation_mode: static
|
|
|
|
- name: ensure vlan pool does not exist for tests to kick off
|
|
aci_encap_pool: &aci_pool_absent_dynamic
|
|
<<: *aci_pool_absent_static
|
|
pool_allocation_mode: dynamic
|
|
|
|
- name: create static vlan pool - check mode works
|
|
aci_encap_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 is changed
|
|
- 'create_check_mode.sent == {"fvnsVlanInstP": {"attributes": {"allocMode": "static", "descr": "Ansible Test", "name": "anstest"}}}'
|
|
|
|
- name: create static vlan pool - creation works
|
|
aci_encap_pool:
|
|
<<: *aci_pool_present_static
|
|
register: create_static
|
|
|
|
- name: assertion test - present
|
|
assert:
|
|
that:
|
|
- create_static is changed
|
|
- create_static.previous == []
|
|
- create_static.sent == create_check_mode.sent
|
|
|
|
- name: create dynamic vlan pool - creation works
|
|
aci_encap_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 is changed
|
|
- create_dynamic.previous == []
|
|
- 'create_dynamic.sent == {"fvnsVlanInstP": {"attributes": {"allocMode": "dynamic", "descr": "Ansible Test", "name": "anstest"}}}'
|
|
|
|
- name: create static vlan pool again - idempotency works
|
|
aci_encap_pool:
|
|
<<: *aci_pool_present_static
|
|
register: idempotent_static
|
|
|
|
- name: assertion test - present
|
|
assert:
|
|
that:
|
|
- idempotent_static is not changed
|
|
- '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_encap_pool:
|
|
<<: *aci_pool_present_dynamic
|
|
register: idempotent_dynamic
|
|
|
|
- name: assertion test - present
|
|
assert:
|
|
that:
|
|
- idempotent_dynamic is not changed
|
|
- '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_encap_pool:
|
|
<<: *aci_pool_present_static
|
|
descr: Ansible Test Change
|
|
register: update_static
|
|
|
|
- name: assertion test - present
|
|
assert:
|
|
that:
|
|
- update_static is changed
|
|
- 'update_static.sent == {"fvnsVlanInstP": {"attributes": {"descr": "Ansible Test Change"}}}'
|
|
|
|
- name: update dynamic vlan pool - update works
|
|
aci_encap_pool:
|
|
<<: *aci_pool_present_dynamic
|
|
descr: Ansible Test Change
|
|
register: update_dynamic
|
|
|
|
- name: assertion test - present
|
|
assert:
|
|
that:
|
|
- update_dynamic is changed
|
|
- 'update_dynamic.sent == {"fvnsVlanInstP": {"attributes": {"descr": "Ansible Test Change"}}}'
|
|
|
|
- name: missing param - failure message works
|
|
aci_encap_pool:
|
|
<<: *aci_pool_present_dynamic
|
|
pool_allocation_mode: "{{ fake_var | default(omit) }}"
|
|
ignore_errors: yes
|
|
register: vlan_alloc_fail
|
|
|
|
- name: assertion test - present
|
|
assert:
|
|
that:
|
|
- vlan_alloc_fail is failed
|
|
- "vlan_alloc_fail.msg == 'ACI requires parameter \\'pool_allocation_mode\\' for \\'pool_type\\' of \\'vlan\\' and \\'vsan\\' when parameter \\'pool\\' is provided'"
|
|
|
|
- name: missing param - failure message works
|
|
aci_encap_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 is failed
|
|
- 'vlan_pool_fail.msg == "state is present but all of the following are missing: pool"'
|
|
|
|
- name: missing param - failure message works
|
|
aci_encap_pool:
|
|
<<: *aci_pool_present_dynamic
|
|
pool_type: "{{ fake_var | default(omit) }}"
|
|
ignore_errors: yes
|
|
register: vlan_pool_type_fail
|
|
|
|
- name: assertion test - present
|
|
assert:
|
|
that:
|
|
- vlan_pool_type_fail is failed
|
|
- 'vlan_pool_type_fail.msg == "missing required arguments: pool_type"'
|
|
|
|
- name: get all vlan pools - get class works
|
|
aci_encap_pool:
|
|
<<: *aci_pool_absent_static
|
|
state: query
|
|
pool: "{{ fake_var | default(omit) }}"
|
|
pool_allocation_mode: "{{ fake_var | default(omit) }}"
|
|
register: get_all_pools
|
|
|
|
- name: assertion test - query
|
|
assert:
|
|
that:
|
|
- get_all_pools is not changed
|
|
- get_all_pools.method == "GET"
|
|
- get_all_pools.current | length > 1
|
|
|
|
- name: get created static vlan pool - get mo works
|
|
aci_encap_pool:
|
|
<<: *aci_pool_absent_static
|
|
state: query
|
|
register: get_static_pool
|
|
|
|
- name: assertion test - query
|
|
assert:
|
|
that:
|
|
- get_static_pool is not changed
|
|
- get_static_pool.method == "GET"
|
|
- get_static_pool.current | length == 1
|
|
- get_static_pool.current.0.fvnsVlanInstP.attributes.allocMode == "static"
|
|
- get_static_pool.current.0.fvnsVlanInstP.attributes.name == "anstest"
|
|
|
|
- name: get created dynamic vlan pool - get mo works
|
|
aci_encap_pool:
|
|
<<: *aci_pool_absent_dynamic
|
|
state: query
|
|
register: get_dynamic_pool
|
|
|
|
- name: assertion test - query
|
|
assert:
|
|
that:
|
|
- get_dynamic_pool is not changed
|
|
- get_dynamic_pool.method == "GET"
|
|
- get_dynamic_pool.current | length == 1
|
|
- get_dynamic_pool.current.0.fvnsVlanInstP.attributes.allocMode == "dynamic"
|
|
- get_dynamic_pool.current.0.fvnsVlanInstP.attributes.name == "anstest"
|
|
|
|
- name: get created dynamic vlan pool - get mo works
|
|
aci_encap_pool:
|
|
<<: *aci_pool_absent_dynamic
|
|
state: query
|
|
pool_type: "{{ fake_var | default(omit) }}"
|
|
ignore_errors: yes
|
|
register: vlan_query_pool_type_fail
|
|
|
|
- name: assertion test - query
|
|
assert:
|
|
that:
|
|
- vlan_query_pool_type_fail is failed
|
|
- 'vlan_query_pool_type_fail.msg == "missing required arguments: pool_type"'
|
|
|
|
- name: delete static vlan pool - deletion works
|
|
aci_encap_pool:
|
|
<<: *aci_pool_absent_static
|
|
register: delete_static
|
|
|
|
- name: assertion test - absent
|
|
assert:
|
|
that:
|
|
- delete_static is changed
|
|
- 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_encap_pool:
|
|
<<: *aci_pool_absent_dynamic
|
|
check_mode: yes
|
|
register: delete_check_mode
|
|
|
|
- name: assertion test - absent
|
|
assert:
|
|
that:
|
|
- delete_check_mode is changed
|
|
|
|
- name: delete dynamic vlan pool - deletion works
|
|
aci_encap_pool:
|
|
<<: *aci_pool_absent_dynamic
|
|
register: delete_dynamic
|
|
|
|
- name: assertion test - absent
|
|
assert:
|
|
that:
|
|
- delete_dynamic is changed
|
|
- 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_encap_pool:
|
|
<<: *aci_pool_absent_static
|
|
register: idempotent_delete_static
|
|
|
|
- name: assertion test - absent
|
|
assert:
|
|
that:
|
|
- idempotent_delete_static is not changed
|
|
- idempotent_delete_static.previous == []
|
|
|
|
- name: delete dynamic vlan pool again - idempotency works
|
|
aci_encap_pool:
|
|
<<: *aci_pool_absent_dynamic
|
|
register: idempotent_delete_dynamic
|
|
|
|
- name: assertion test - absent
|
|
assert:
|
|
that:
|
|
- idempotent_delete_dynamic is not changed
|
|
- idempotent_delete_dynamic.previous == []
|