# Test code for the ACI modules # Copyright: (c) 2018, Dag Wieers (dagwieers) # 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: 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: 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.changed == nm_add_dynamic_vlan_pool.changed == true - '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.changed == nm_add_dynamic_vlan_pool_again.changed == false - 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.changed == nm_add_dynamic_vlan_pool_descr.changed == true - '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.changed == nm_add_dynamic_vlan_pool_descr_again.changed == false - 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.changed == nm_add_dynamic_vlan_pool_again_no_descr.changed == false - 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) }}' 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.changed == nm_query_all_dynamic_vlan_pools.changed == false - 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 ourdynamic 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.changed == nm_query_dynamic_vlan_pool.changed == false - 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.changed == nm_remove_dynamic_vlan_pool.changed == true - '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.changed == nm_remove_dynamic_vlan_pool_again.changed == false - 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.changed == nm_query_non_dynamic_vlan_pool.changed == false - 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: info state: present ignore_errors: yes register: error_on_missing_required_param - name: Assertion test - present assert: that: - error_on_missing_required_param.failed == true - '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: 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.failed == true - error_on_missing_together_param.msg == "ACI requires the 'pool_allocation_mode' when 'pool' is provided"