You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/integration/targets/aci_contract_subject_to_filter/tasks/main.yml

194 lines
6.1 KiB
YAML

# Test code for the ACI modules
# Copyright: (c) 2017, Jacob McGill (@jmcgill298)
# 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
- name: ensure tenant exists for tests to kick off
aci_tenant: &aci_tenant_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") }}'
tenant: anstest
state: present
register: tenant_present
- name: ensure filter exists for tests to kick off
aci_filter: &aci_filter_present
<<: *aci_tenant_present
filter: anstest
register: filter_present
- name: ensure filter exists for tests to kick off
aci_filter: &aci_filter_present_2
<<: *aci_tenant_present
filter: anstest2
register: filter_present_2
- name: ensure contract exists for tests to kick off
aci_contract: &aci_contract_present
<<: *aci_tenant_present
contract: anstest
register: contract_present
- name: ensure subject exists for tests to kick off
aci_contract_subject: &aci_subject_present
<<: *aci_contract_present
subject: anstest
register: subject_present
- name: create subject filter binding - check mode works
aci_contract_subject_to_filter: &aci_subject_filter_present
<<: *aci_subject_present
filter: anstest
log: log
check_mode: yes
register: subject_filter_present_check_mode
- name: create subject filter binding - creation works
aci_contract_subject_to_filter:
<<: *aci_subject_filter_present
register: subject_filter_present
- name: create subject filter binding - additional testing
aci_contract_subject_to_filter: &aci_subject_filter_present_2
<<: *aci_subject_filter_present
filter: anstest2
register: subject_filter_present_2
- name: create subject filter binding - idempotency works
aci_contract_subject_to_filter:
<<: *aci_subject_filter_present
register: subject_filter_present_idempotent
- name: update subject filter binding - update works
aci_contract_subject_to_filter:
<<: *aci_subject_filter_present
log: none
register: subject_filter_update
- name: missing param - failure message works
aci_contract_subject_to_filter:
<<: *aci_tenant_present
ignore_errors: yes
register: present_missing_param
- name: present assertions
assert:
that:
- subject_filter_present_check_mode is changed
- subject_filter_present_check_mode.previous == []
- 'subject_filter_present_check_mode.sent == {"vzRsSubjFiltAtt": {"attributes": {"directives": "log", "tnVzFilterName": "anstest"}}}'
- subject_filter_present is changed
- subject_filter_present.previous == []
- subject_filter_present.sent == subject_filter_present_check_mode.sent
- subject_filter_present_2 is changed
- subject_filter_present_idempotent is not changed
- subject_filter_present_idempotent.previous != []
- subject_filter_update is changed
- 'subject_filter_update.sent.vzRsSubjFiltAtt.attributes == {"directives": ""}'
- present_missing_param is failed
- 'present_missing_param.msg == "state is present but all of the following are missing: contract, filter, subject"'
- name: query all
aci_contract_subject_to_filter:
<<: *aci_tenant_present
state: query
tenant: "{{ fakevar | default(omit) }}"
register: query_all
- name: query binding
aci_contract_subject_to_filter:
<<: *aci_subject_filter_present
state: query
register: query_binding
- name: query assertions
assert:
that:
- query_all is not changed
- query_all.current | length > 1
- query_all.current.0.vzRsSubjFiltAtt is defined
- query_binding is not changed
- query_binding.current != []
- name: delete subject filter binding - check mode works
aci_contract_subject_to_filter: &aci_subject_filter_absent
<<: *aci_subject_filter_present
state: absent
check_mode: yes
register: subject_filter_absent_check_mode
- name: delete subject filter binding - deletion works
aci_contract_subject_to_filter:
<<: *aci_subject_filter_absent
register: subject_filter_absent
- name: delete subject filter binding - idempotency works
aci_contract_subject_to_filter:
<<: *aci_subject_filter_absent
register: subject_filter_absent_idempotent
- name: missing param - failure message works
aci_contract_subject_to_filter:
<<: *aci_subject_filter_absent
filter: "{{ fakevar | default(omit) }}"
ignore_errors: yes
register: absent_missing_param
- name: cleanup subject filter binding
aci_contract_subject_to_filter:
<<: *aci_subject_filter_present_2
state: absent
- name: absent assertions
assert:
that:
- subject_filter_absent_check_mode is changed
- subject_filter_absent_check_mode.proposed == {}
- subject_filter_absent_check_mode.previous != []
- subject_filter_absent is changed
- subject_filter_absent.previous != []
- subject_filter_absent_idempotent is not changed
- subject_filter_absent_idempotent.previous == []
- absent_missing_param is failed
- 'absent_missing_param.msg == "state is absent but all of the following are missing: filter"'
- name: cleanup subject
aci_contract_subject:
<<: *aci_subject_present
state: absent
when: subject_present is changed
- name: cleanup contract
aci_contract:
<<: *aci_contract_present
state: absent
when: contract_present is changed
- name: cleanup filter
aci_filter:
<<: *aci_filter_present
state: absent
when: filter_present is changed
- name: cleanup filter
aci_filter:
<<: *aci_filter_present_2
state: absent
when: filter_present_2 is changed
- name: cleanup tenant
aci_tenant:
<<: *aci_tenant_present
state: absent
when: tenant_present is changed