From d8649adf104f891c08a1b5c4dbe336f39c7c6372 Mon Sep 17 00:00:00 2001 From: Dag Wieers Date: Tue, 5 Sep 2017 00:24:48 -0700 Subject: [PATCH] aci_rest: More tests related to input types Now test inline YAML, inline JSON, YAML string, JSON string and XML string input. --- .../targets/aci_rest/tasks/json_inline.yml | 156 +++++++++++++++++ .../targets/aci_rest/tasks/json_string.yml | 156 +++++++++++++++++ .../targets/aci_rest/tasks/main.yml | 157 ++---------------- .../targets/aci_rest/tasks/xml_string.yml | 143 ++++++++++++++++ .../targets/aci_rest/tasks/yaml_inline.yml | 148 +++++++++++++++++ .../targets/aci_rest/tasks/yaml_string.yml | 148 +++++++++++++++++ 6 files changed, 761 insertions(+), 147 deletions(-) create mode 100644 test/integration/targets/aci_rest/tasks/json_inline.yml create mode 100644 test/integration/targets/aci_rest/tasks/json_string.yml create mode 100644 test/integration/targets/aci_rest/tasks/xml_string.yml create mode 100644 test/integration/targets/aci_rest/tasks/yaml_inline.yml create mode 100644 test/integration/targets/aci_rest/tasks/yaml_string.yml diff --git a/test/integration/targets/aci_rest/tasks/json_inline.yml b/test/integration/targets/aci_rest/tasks/json_inline.yml new file mode 100644 index 00000000000..ca0f623eeb6 --- /dev/null +++ b/test/integration/targets/aci_rest/tasks/json_inline.yml @@ -0,0 +1,156 @@ +# Test code for the ACI modules +# Copyright 2017, Dag Wieers + +# 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 tenant + aci_rest: &tenant_absent + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: delete + delegate_to: localhost + +# ADD TENANT +- name: Add tenant (normal mode) + aci_rest: &tenant_present + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: post + content: + { + "fvTenant": { + "attributes": { + "name": "ansible_test" + } + } + } + delegate_to: localhost + register: nm_add_tenant + +- name: Add tenant again (normal mode) + aci_rest: *tenant_present + delegate_to: localhost + register: nm_add_tenant_again + +- name: Verify add_tenant + assert: + that: + - nm_add_tenant.changed == true + - nm_add_tenant_again.changed == false + +# CHANGE TENANT +- name: Change description of tenant (normal mode) + aci_rest: &tenant_changed + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: post + content: + { + "fvTenant": { + "attributes": { + "descr": "Ansible test tenant", + "name": "ansible_test" + } + } + } + delegate_to: localhost + register: nm_add_tenant_descr + +- name: Change description of tenant again (normal mode) + aci_rest: *tenant_changed + delegate_to: localhost + register: nm_add_tenant_descr_again + +- name: Verify add_tenant_descr + assert: + that: + - nm_add_tenant_descr.changed == true + - nm_add_tenant_descr_again.changed == false + +# ADD TENANT AGAIN +- name: Add tenant again with no description (normal mode) + aci_rest: *tenant_present + delegate_to: localhost + register: nm_add_tenant_again_no_descr + +- name: Verify add_tenant_again_no_descr + assert: + that: + - nm_add_tenant_again_no_descr.changed == false + +# QUERY ALL TENANTS +- name: Query all tenants (normal mode) + aci_rest: &tenant_query_all + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: get + delegate_to: localhost + register: nm_query_all_tenants + +- name: Verify query_all_tenants + assert: + that: + - nm_query_all_tenants.changed == false + +# QUERY A TENANT +- name: Query our tenant + aci_rest: &tenant_query + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: get + delegate_to: localhost + register: nm_query_tenant + +- name: Verify query_tenant + assert: + that: + - nm_query_tenant.changed == false + +# REMOVE TENANT +- name: Remove tenant (normal mode) + aci_rest: *tenant_absent + delegate_to: localhost + register: nm_remove_tenant + +- name: Remove tenant again (normal mode) + aci_rest: *tenant_absent + delegate_to: localhost + register: nm_remove_tenant_again + +- name: Verify remove_tenant + assert: + that: + - nm_remove_tenant.changed == true + - nm_remove_tenant_again.changed == false + +# QUERY NON-EXISTING TENANT +- name: Query non-existing tenant (normal mode) + aci_rest: *tenant_query + delegate_to: localhost + register: nm_query_non_tenant + +- name: Verify query_non_tenant + assert: + that: + - nm_query_non_tenant.changed == false diff --git a/test/integration/targets/aci_rest/tasks/json_string.yml b/test/integration/targets/aci_rest/tasks/json_string.yml new file mode 100644 index 00000000000..d0275aa9ab8 --- /dev/null +++ b/test/integration/targets/aci_rest/tasks/json_string.yml @@ -0,0 +1,156 @@ +# Test code for the ACI modules +# Copyright 2017, Dag Wieers + +# 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 tenant + aci_rest: &tenant_absent + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: delete + delegate_to: localhost + +# ADD TENANT +- name: Add tenant (normal mode) + aci_rest: &tenant_present + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: post + content: | + { + "fvTenant": { + "attributes": { + "name": "ansible_test" + } + } + } + delegate_to: localhost + register: nm_add_tenant + +- name: Add tenant again (normal mode) + aci_rest: *tenant_present + delegate_to: localhost + register: nm_add_tenant_again + +- name: Verify add_tenant + assert: + that: + - nm_add_tenant.changed == true + - nm_add_tenant_again.changed == false + +# CHANGE TENANT +- name: Change description of tenant (normal mode) + aci_rest: &tenant_changed + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: post + content: | + { + "fvTenant": { + "attributes": { + "descr": "Ansible test tenant", + "name": "ansible_test" + } + } + } + delegate_to: localhost + register: nm_add_tenant_descr + +- name: Change description of tenant again (normal mode) + aci_rest: *tenant_changed + delegate_to: localhost + register: nm_add_tenant_descr_again + +- name: Verify add_tenant_descr + assert: + that: + - nm_add_tenant_descr.changed == true + - nm_add_tenant_descr_again.changed == false + +# ADD TENANT AGAIN +- name: Add tenant again with no description (normal mode) + aci_rest: *tenant_present + delegate_to: localhost + register: nm_add_tenant_again_no_descr + +- name: Verify add_tenant_again_no_descr + assert: + that: + - nm_add_tenant_again_no_descr.changed == false + +# QUERY ALL TENANTS +- name: Query all tenants (normal mode) + aci_rest: &tenant_query_all + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: get + delegate_to: localhost + register: nm_query_all_tenants + +- name: Verify query_all_tenants + assert: + that: + - nm_query_all_tenants.changed == false + +# QUERY A TENANT +- name: Query our tenant + aci_rest: &tenant_query + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: get + delegate_to: localhost + register: nm_query_tenant + +- name: Verify query_tenant + assert: + that: + - nm_query_tenant.changed == false + +# REMOVE TENANT +- name: Remove tenant (normal mode) + aci_rest: *tenant_absent + delegate_to: localhost + register: nm_remove_tenant + +- name: Remove tenant again (normal mode) + aci_rest: *tenant_absent + delegate_to: localhost + register: nm_remove_tenant_again + +- name: Verify remove_tenant + assert: + that: + - nm_remove_tenant.changed == true + - nm_remove_tenant_again.changed == false + +# QUERY NON-EXISTING TENANT +- name: Query non-existing tenant (normal mode) + aci_rest: *tenant_query + delegate_to: localhost + register: nm_query_non_tenant + +- name: Verify query_non_tenant + assert: + that: + - nm_query_non_tenant.changed == false diff --git a/test/integration/targets/aci_rest/tasks/main.yml b/test/integration/targets/aci_rest/tasks/main.yml index d0275aa9ab8..940b66760fc 100644 --- a/test/integration/targets/aci_rest/tasks/main.yml +++ b/test/integration/targets/aci_rest/tasks/main.yml @@ -3,154 +3,17 @@ # 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 +- include_tasks: yaml_inline.yml + tags: yaml_inline -# CLEAN ENVIRONMENT -- name: Remove tenant - aci_rest: &tenant_absent - hostname: '{{ aci_hostname }}' - username: '{{ aci_username }}' - password: '{{ aci_password }}' - validate_certs: no - path: /api/mo/uni/tn-[ansible_test].json - method: delete - delegate_to: localhost +- include_tasks: yaml_string.yml + tags: yaml_string -# ADD TENANT -- name: Add tenant (normal mode) - aci_rest: &tenant_present - hostname: '{{ aci_hostname }}' - username: '{{ aci_username }}' - password: '{{ aci_password }}' - validate_certs: no - path: /api/mo/uni/tn-[ansible_test].json - method: post - content: | - { - "fvTenant": { - "attributes": { - "name": "ansible_test" - } - } - } - delegate_to: localhost - register: nm_add_tenant +- include_tasks: json_inline.yml + tags: json_inline -- name: Add tenant again (normal mode) - aci_rest: *tenant_present - delegate_to: localhost - register: nm_add_tenant_again +- include_tasks: json_string.yml + tags: json_string -- name: Verify add_tenant - assert: - that: - - nm_add_tenant.changed == true - - nm_add_tenant_again.changed == false - -# CHANGE TENANT -- name: Change description of tenant (normal mode) - aci_rest: &tenant_changed - hostname: '{{ aci_hostname }}' - username: '{{ aci_username }}' - password: '{{ aci_password }}' - validate_certs: no - path: /api/mo/uni/tn-[ansible_test].json - method: post - content: | - { - "fvTenant": { - "attributes": { - "descr": "Ansible test tenant", - "name": "ansible_test" - } - } - } - delegate_to: localhost - register: nm_add_tenant_descr - -- name: Change description of tenant again (normal mode) - aci_rest: *tenant_changed - delegate_to: localhost - register: nm_add_tenant_descr_again - -- name: Verify add_tenant_descr - assert: - that: - - nm_add_tenant_descr.changed == true - - nm_add_tenant_descr_again.changed == false - -# ADD TENANT AGAIN -- name: Add tenant again with no description (normal mode) - aci_rest: *tenant_present - delegate_to: localhost - register: nm_add_tenant_again_no_descr - -- name: Verify add_tenant_again_no_descr - assert: - that: - - nm_add_tenant_again_no_descr.changed == false - -# QUERY ALL TENANTS -- name: Query all tenants (normal mode) - aci_rest: &tenant_query_all - hostname: '{{ aci_hostname }}' - username: '{{ aci_username }}' - password: '{{ aci_password }}' - validate_certs: no - path: /api/mo/uni/tn-[ansible_test].json - method: get - delegate_to: localhost - register: nm_query_all_tenants - -- name: Verify query_all_tenants - assert: - that: - - nm_query_all_tenants.changed == false - -# QUERY A TENANT -- name: Query our tenant - aci_rest: &tenant_query - hostname: '{{ aci_hostname }}' - username: '{{ aci_username }}' - password: '{{ aci_password }}' - validate_certs: no - path: /api/mo/uni/tn-[ansible_test].json - method: get - delegate_to: localhost - register: nm_query_tenant - -- name: Verify query_tenant - assert: - that: - - nm_query_tenant.changed == false - -# REMOVE TENANT -- name: Remove tenant (normal mode) - aci_rest: *tenant_absent - delegate_to: localhost - register: nm_remove_tenant - -- name: Remove tenant again (normal mode) - aci_rest: *tenant_absent - delegate_to: localhost - register: nm_remove_tenant_again - -- name: Verify remove_tenant - assert: - that: - - nm_remove_tenant.changed == true - - nm_remove_tenant_again.changed == false - -# QUERY NON-EXISTING TENANT -- name: Query non-existing tenant (normal mode) - aci_rest: *tenant_query - delegate_to: localhost - register: nm_query_non_tenant - -- name: Verify query_non_tenant - assert: - that: - - nm_query_non_tenant.changed == false +- include_tasks: xml_string.yml + tags: xml_string diff --git a/test/integration/targets/aci_rest/tasks/xml_string.yml b/test/integration/targets/aci_rest/tasks/xml_string.yml new file mode 100644 index 00000000000..dc5021994f1 --- /dev/null +++ b/test/integration/targets/aci_rest/tasks/xml_string.yml @@ -0,0 +1,143 @@ +# Test code for the ACI modules +# Copyright 2017, Dag Wieers + +# 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 tenant + aci_rest: &tenant_absent + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].xml + method: delete + delegate_to: localhost + +# ADD TENANT +- name: Add tenant (normal mode) + aci_rest: &tenant_present + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].xml + method: post + content: | + + delegate_to: localhost + register: nm_add_tenant + +- name: Add tenant again (normal mode) + aci_rest: *tenant_present + delegate_to: localhost + register: nm_add_tenant_again + +- name: Verify add_tenant + assert: + that: + - nm_add_tenant.changed == true + - nm_add_tenant_again.changed == false + +# CHANGE TENANT +- name: Change description of tenant (normal mode) + aci_rest: &tenant_changed + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].xml + method: post + content: | + + delegate_to: localhost + register: nm_add_tenant_descr + +- name: Change description of tenant again (normal mode) + aci_rest: *tenant_changed + delegate_to: localhost + register: nm_add_tenant_descr_again + +- name: Verify add_tenant_descr + assert: + that: + - nm_add_tenant_descr.changed == true + - nm_add_tenant_descr_again.changed == false + +# ADD TENANT AGAIN +- name: Add tenant again with no description (normal mode) + aci_rest: *tenant_present + delegate_to: localhost + register: nm_add_tenant_again_no_descr + +- name: Verify add_tenant_again_no_descr + assert: + that: + - nm_add_tenant_again_no_descr.changed == false + +# QUERY ALL TENANTS +- name: Query all tenants (normal mode) + aci_rest: &tenant_query_all + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].xml + method: get + delegate_to: localhost + register: nm_query_all_tenants + +- name: Verify query_all_tenants + assert: + that: + - nm_query_all_tenants.changed == false + +# QUERY A TENANT +- name: Query our tenant + aci_rest: &tenant_query + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].xml + method: get + delegate_to: localhost + register: nm_query_tenant + +- name: Verify query_tenant + assert: + that: + - nm_query_tenant.changed == false + +# REMOVE TENANT +- name: Remove tenant (normal mode) + aci_rest: *tenant_absent + delegate_to: localhost + register: nm_remove_tenant + +- name: Remove tenant again (normal mode) + aci_rest: *tenant_absent + delegate_to: localhost + register: nm_remove_tenant_again + +- name: Verify remove_tenant + assert: + that: + - nm_remove_tenant.changed == true + - nm_remove_tenant_again.changed == false + +# QUERY NON-EXISTING TENANT +- name: Query non-existing tenant (normal mode) + aci_rest: *tenant_query + delegate_to: localhost + register: nm_query_non_tenant + +- name: Verify query_non_tenant + assert: + that: + - nm_query_non_tenant.changed == false diff --git a/test/integration/targets/aci_rest/tasks/yaml_inline.yml b/test/integration/targets/aci_rest/tasks/yaml_inline.yml new file mode 100644 index 00000000000..962cba70d66 --- /dev/null +++ b/test/integration/targets/aci_rest/tasks/yaml_inline.yml @@ -0,0 +1,148 @@ +# Test code for the ACI modules +# Copyright 2017, Dag Wieers + +# 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 tenant + aci_rest: &tenant_absent + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: delete + delegate_to: localhost + +# ADD TENANT +- name: Add tenant (normal mode) + aci_rest: &tenant_present + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: post + content: + fvTenant: + attributes: + name: ansible_test + delegate_to: localhost + register: nm_add_tenant + +- name: Add tenant again (normal mode) + aci_rest: *tenant_present + delegate_to: localhost + register: nm_add_tenant_again + +- name: Verify add_tenant + assert: + that: + - nm_add_tenant.changed == true + - nm_add_tenant_again.changed == false + +# CHANGE TENANT +- name: Change description of tenant (normal mode) + aci_rest: &tenant_changed + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: post + content: + fvTenant: + attributes: + name: ansible_test + descr: Ansible test tenant + delegate_to: localhost + register: nm_add_tenant_descr + +- name: Change description of tenant again (normal mode) + aci_rest: *tenant_changed + delegate_to: localhost + register: nm_add_tenant_descr_again + +- name: Verify add_tenant_descr + assert: + that: + - nm_add_tenant_descr.changed == true + - nm_add_tenant_descr_again.changed == false + +# ADD TENANT AGAIN +- name: Add tenant again with no description (normal mode) + aci_rest: *tenant_present + delegate_to: localhost + register: nm_add_tenant_again_no_descr + +- name: Verify add_tenant_again_no_descr + assert: + that: + - nm_add_tenant_again_no_descr.changed == false + +# QUERY ALL TENANTS +- name: Query all tenants (normal mode) + aci_rest: &tenant_query_all + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: get + delegate_to: localhost + register: nm_query_all_tenants + +- name: Verify query_all_tenants + assert: + that: + - nm_query_all_tenants.changed == false + +# QUERY A TENANT +- name: Query our tenant + aci_rest: &tenant_query + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: get + delegate_to: localhost + register: nm_query_tenant + +- name: Verify query_tenant + assert: + that: + - nm_query_tenant.changed == false + +# REMOVE TENANT +- name: Remove tenant (normal mode) + aci_rest: *tenant_absent + delegate_to: localhost + register: nm_remove_tenant + +- name: Remove tenant again (normal mode) + aci_rest: *tenant_absent + delegate_to: localhost + register: nm_remove_tenant_again + +- name: Verify remove_tenant + assert: + that: + - nm_remove_tenant.changed == true + - nm_remove_tenant_again.changed == false + +# QUERY NON-EXISTING TENANT +- name: Query non-existing tenant (normal mode) + aci_rest: *tenant_query + delegate_to: localhost + register: nm_query_non_tenant + +- name: Verify query_non_tenant + assert: + that: + - nm_query_non_tenant.changed == false diff --git a/test/integration/targets/aci_rest/tasks/yaml_string.yml b/test/integration/targets/aci_rest/tasks/yaml_string.yml new file mode 100644 index 00000000000..d0bc4a52d36 --- /dev/null +++ b/test/integration/targets/aci_rest/tasks/yaml_string.yml @@ -0,0 +1,148 @@ +# Test code for the ACI modules +# Copyright 2017, Dag Wieers + +# 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 tenant + aci_rest: &tenant_absent + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: delete + delegate_to: localhost + +# ADD TENANT +- name: Add tenant (normal mode) + aci_rest: &tenant_present + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: post + content: | + fvTenant: + attributes: + name: ansible_test + delegate_to: localhost + register: nm_add_tenant + +- name: Add tenant again (normal mode) + aci_rest: *tenant_present + delegate_to: localhost + register: nm_add_tenant_again + +- name: Verify add_tenant + assert: + that: + - nm_add_tenant.changed == true + - nm_add_tenant_again.changed == false + +# CHANGE TENANT +- name: Change description of tenant (normal mode) + aci_rest: &tenant_changed + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: post + content: | + fvTenant: + attributes: + name: ansible_test + descr: Ansible test tenant + delegate_to: localhost + register: nm_add_tenant_descr + +- name: Change description of tenant again (normal mode) + aci_rest: *tenant_changed + delegate_to: localhost + register: nm_add_tenant_descr_again + +- name: Verify add_tenant_descr + assert: + that: + - nm_add_tenant_descr.changed == true + - nm_add_tenant_descr_again.changed == false + +# ADD TENANT AGAIN +- name: Add tenant again with no description (normal mode) + aci_rest: *tenant_present + delegate_to: localhost + register: nm_add_tenant_again_no_descr + +- name: Verify add_tenant_again_no_descr + assert: + that: + - nm_add_tenant_again_no_descr.changed == false + +# QUERY ALL TENANTS +- name: Query all tenants (normal mode) + aci_rest: &tenant_query_all + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: get + delegate_to: localhost + register: nm_query_all_tenants + +- name: Verify query_all_tenants + assert: + that: + - nm_query_all_tenants.changed == false + +# QUERY A TENANT +- name: Query our tenant + aci_rest: &tenant_query + hostname: '{{ aci_hostname }}' + username: '{{ aci_username }}' + password: '{{ aci_password }}' + validate_certs: no + path: /api/mo/uni/tn-[ansible_test].json + method: get + delegate_to: localhost + register: nm_query_tenant + +- name: Verify query_tenant + assert: + that: + - nm_query_tenant.changed == false + +# REMOVE TENANT +- name: Remove tenant (normal mode) + aci_rest: *tenant_absent + delegate_to: localhost + register: nm_remove_tenant + +- name: Remove tenant again (normal mode) + aci_rest: *tenant_absent + delegate_to: localhost + register: nm_remove_tenant_again + +- name: Verify remove_tenant + assert: + that: + - nm_remove_tenant.changed == true + - nm_remove_tenant_again.changed == false + +# QUERY NON-EXISTING TENANT +- name: Query non-existing tenant (normal mode) + aci_rest: *tenant_query + delegate_to: localhost + register: nm_query_non_tenant + +- name: Verify query_non_tenant + assert: + that: + - nm_query_non_tenant.changed == false