diff --git a/test/integration/targets/aci_fabric_node/aliases b/test/integration/targets/aci_fabric_node/aliases new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/integration/targets/aci_fabric_node/tasks/main.yml b/test/integration/targets/aci_fabric_node/tasks/main.yml new file mode 100644 index 00000000000..327565583ad --- /dev/null +++ b/test/integration/targets/aci_fabric_node/tasks/main.yml @@ -0,0 +1,206 @@ +# Test code for the ACI modules +# Copyright: (c) 2017, Bruno Calogero + +# 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 + + +# CLEAN ENVIRONMENT +- name: Remove fabric node + aci_fabric_node: &aci_fabric_node_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) }}' + serial: ansible_test + node_id: 105 + state: absent + + +# ADD FABRIC NODE +- name: Add fabric node (check_mode) + aci_fabric_node: &aci_fabric_node_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) }}' + serial: ansible_test + node_id: 105 + switch: test + state: present + check_mode: yes + register: cm_add_fabric_node + +- name: Add fabric node (normal mode) + aci_fabric_node: *aci_fabric_node_present + register: nm_add_fabric_node + +- name: Add fabric node again (check_mode) + aci_fabric_node: *aci_fabric_node_present + check_mode: yes + register: cm_add_fabric_node_again + +- name: Add fabric node again (normal mode) + aci_fabric_node: *aci_fabric_node_present + register: nm_add_fabric_node_again + +- name: Verify add_fabric_node + assert: + that: + - cm_add_fabric_node.changed == nm_add_fabric_node.changed == true + # FIXME: Module is not idempotent + - cm_add_fabric_node_again.changed == nm_add_fabric_node_again.changed == false + + +# CHANGE FABRIC NODE +- name: Change description of fabric node (check_mode) + aci_fabric_node: + <<: *aci_fabric_node_present + description: Ansible test fabric node + check_mode: yes + register: cm_add_fabric_node_descr + +- name: Change description of fabric node (normal mode) + aci_fabric_node: + <<: *aci_fabric_node_present + description: Ansible test fabric node + register: nm_add_fabric_node_descr + +- name: Change description of fabric nodeagain (check_mode) + aci_fabric_node: + <<: *aci_fabric_node_present + description: Ansible test fabric node + check_mode: yes + register: cm_add_fabric_node_descr_again + +- name: Change description of fabric node again (normal mode) + aci_fabric_node: + <<: *aci_fabric_node_present + description: Ansible test fabric node + register: nm_add_fabric_node_descr_again + +- name: Verify add_fabric_node_descr + assert: + that: + - cm_add_fabric_node_descr.changed == nm_add_fabric_node_descr.changed == true + # FIXME: Module is not idempotent + - cm_add_fabric_node_descr_again.changed == nm_add_fabric_node_descr_again.changed == false + + +# ADD FABRIC NODE AGAIN +- name: Add fabric node again with no description (check_mode) + aci_fabric_node: *aci_fabric_node_present + check_mode: yes + register: cm_add_fabric_node_again_no_descr + +- name: Add fabric node again with no description (normal mode) + aci_fabric_node: *aci_fabric_node_present + register: nm_add_fabric_node_again_no_descr + +- name: Verify add_fabric_node_again_no_descr + assert: + that: + # FIXME: Module is not idempotent + - cm_add_fabric_node_again_no_descr.changed == nm_add_fabric_node_again_no_descr.changed == false + + +# QUERY ALL FABRIC NODES +- name: Query fabric nodes (check_mode) + aci_fabric_node: &aci_fabric_node_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_fabric_nodes + +- name: Query all fabric nodes (normal mode) + aci_fabric_node: *aci_fabric_node_query + register: nm_query_all_fabric_nodes + +- name: Verify query_all_fabric_nodes + assert: + that: + - cm_query_all_fabric_nodes.changed == nm_query_all_fabric_nodes.changed == false # doesn't return necessary information + # NOTE: Order of fabric_nodes is not stable between calls + #- cm_query_all_fabric_nodes == nm_query_all_fabric_nodes + + +# QUERY A FABRIC NODE +- name: Query our fabric_node + aci_fabric_node: + <<: *aci_fabric_node_query + serial: ansible_test # might need node_id too + check_mode: yes + register: cm_query_fabric_node + +- name: Query our fabric_node + aci_fabric_node: + <<: *aci_fabric_node_query + serial: ansible_test + register: nm_query_fabric_node # doesn't return necessary information + +- name: Verify query_fabric_node + assert: + that: + - cm_query_fabric_node.changed == nm_query_fabric_node.changed == false + - cm_query_fabric_node == nm_query_fabric_node + + +# REMOVE FABRIC NODE +- name: Remove fabric_node (check_mode) + aci_fabric_node: *aci_fabric_node_absent + check_mode: yes + register: cm_remove_fabric_node + +- name: Remove fabric_node (normal mode) + aci_fabric_node: *aci_fabric_node_absent + register: nm_remove_fabric_node + +- name: Remove fabric_node again (check_mode) + aci_fabric_node: *aci_fabric_node_absent + check_mode: yes + register: cm_remove_fabric_node_again + +- name: Remove fabric_node again (normal mode) + aci_fabric_node: *aci_fabric_node_absent + register: nm_remove_fabric_node_again + +- name: Verify remove_fabric_node + assert: + that: + - cm_remove_fabric_node.changed == nm_remove_fabric_node.changed == true + - cm_remove_fabric_node_again.changed == nm_remove_fabric_node_again.changed == false + + +# QUERY NON-EXISTING LEAF PROFILE +- name: Query non-existing fabric_node (check_mode) + aci_fabric_node: + <<: *aci_fabric_node_query + serial: ansible_test + check_mode: yes + register: cm_query_non_fabric_node + +- name: Query non-existing fabric_node (normal mode) + aci_fabric_node: + <<: *aci_fabric_node_query + serial: ansible_test + register: nm_query_non_fabric_node + +# TODO: Implement more tests +- name: Verify query_non_fabric_node + assert: + that: + - cm_query_non_fabric_node.changed == nm_query_non_fabric_node.changed == false + - cm_query_non_fabric_node == nm_query_non_fabric_node