--- - module_defaults: # meta/action_groups.yml glue seems to be missing # group/os: # cloud: "{{ cloud }}" openstack.cloud.federation_mapping: cloud: "{{ cloud }}" openstack.cloud.federation_mapping_info: cloud: "{{ cloud }}" block: - name: "Ensure mapping doesn't exist to start" openstack.cloud.federation_mapping: state: 'absent' name: '{{ mapping_name }}' register: delete_mapping - assert: that: - delete_mapping is successful - name: 'Create mapping - CHECK_MODE' openstack.cloud.federation_mapping: state: 'present' name: '{{ mapping_name }}' rules: '{{ mapping_rules_1 }}' register: create_mapping check_mode: yes - assert: that: - create_mapping is successful - create_mapping is changed - name: 'Fetch mapping info (mapping should be absent)' openstack.cloud.federation_mapping_info: name: '{{ mapping_name }}' register: mapping_info ignore_errors: yes - assert: that: - mapping_info is failed - name: 'Create mapping' openstack.cloud.federation_mapping: state: 'present' name: '{{ mapping_name }}' rules: '{{ mapping_rules_1 }}' register: create_mapping - assert: that: - create_mapping is successful - create_mapping is changed - '"id" in create_mapping.mapping' - '"name" in create_mapping.mapping' - '"rules" in create_mapping.mapping' - create_mapping.mapping.id == mapping_name - create_mapping.mapping.name == mapping_name - create_mapping.mapping.rules | length == 1 - name: 'Fetch mapping info - with name' openstack.cloud.federation_mapping_info: name: '{{ mapping_name }}' register: mapping_info - assert: that: - mapping_info is successful - '"mappings" in mapping_info' - mapping_info.mappings | length == 1 - '"id" in mapping_0' - '"name" in mapping_0' - '"rules" in mapping_0' - mapping_0.id == mapping_name - mapping_0.name == mapping_name - mapping_0.rules | length == 1 vars: mapping_0: '{{ mapping_info.mappings[0] }}' - name: 'Fetch mapping info - without name' openstack.cloud.federation_mapping_info: {} register: mapping_info - assert: that: - mapping_info is successful - '"mappings" in mapping_info' # In CI we generally have a clean slate, but this might # not be true for everyone... - mapping_info.mappings | length >= 1 - '"id" in mapping_0' - '"name" in mapping_0' - '"rules" in mapping_0' - mapping_name in (mapping_info.mappings | map(attribute='id')) - mapping_name in (mapping_info.mappings | map(attribute='name')) vars: mapping_0: '{{ mapping_info.mappings[0] }}' - name: 'Create mapping (retry - no change) - CHECK_MODE' openstack.cloud.federation_mapping: state: 'present' name: '{{ mapping_name }}' rules: '{{ mapping_rules_1 }}' register: create_mapping check_mode: yes - assert: that: - create_mapping is successful - create_mapping is not changed - name: 'Create mapping (retry - no change)' openstack.cloud.federation_mapping: state: 'present' name: '{{ mapping_name }}' rules: '{{ mapping_rules_1 }}' register: create_mapping - assert: that: - create_mapping is successful - create_mapping is not changed - '"id" in create_mapping.mapping' - '"name" in create_mapping.mapping' - '"rules" in create_mapping.mapping' - create_mapping.mapping.id == mapping_name - create_mapping.mapping.name == mapping_name - create_mapping.mapping.rules | length == 1 - name: 'Update mapping - CHECK_MODE' openstack.cloud.federation_mapping: state: 'present' name: '{{ mapping_name }}' rules: '{{ mapping_rules_2 }}' register: update_mapping check_mode: yes - assert: that: - update_mapping is successful - update_mapping is changed - name: 'Update mapping' openstack.cloud.federation_mapping: state: 'present' name: '{{ mapping_name }}' rules: '{{ mapping_rules_2 }}' register: update_mapping - assert: that: - update_mapping is successful - update_mapping is changed - '"id" in update_mapping.mapping' - '"name" in update_mapping.mapping' - '"rules" in update_mapping.mapping' - update_mapping.mapping.id == mapping_name - update_mapping.mapping.name == mapping_name - update_mapping.mapping.rules | length == 1 - name: 'Update mapping (retry - no change)' openstack.cloud.federation_mapping: state: 'present' name: '{{ mapping_name }}' rules: '{{ mapping_rules_2 }}' register: update_mapping - assert: that: - update_mapping is successful - update_mapping is not changed - '"id" in update_mapping.mapping' - '"name" in update_mapping.mapping' - '"rules" in update_mapping.mapping' - update_mapping.mapping.id == mapping_name - update_mapping.mapping.name == mapping_name - update_mapping.mapping.rules | length == 1 - name: 'Create second mapping' openstack.cloud.federation_mapping: state: 'present' name: '{{ mapping_name_2 }}' rules: '{{ mapping_rules_1 }}' register: create_mapping - assert: that: - create_mapping is successful - create_mapping is changed - '"id" in create_mapping.mapping' - '"name" in create_mapping.mapping' - '"rules" in create_mapping.mapping' - create_mapping.mapping.id == mapping_name_2 - create_mapping.mapping.name == mapping_name_2 - create_mapping.mapping.rules | length == 1 - name: 'Fetch mapping (2) info - with name' openstack.cloud.federation_mapping_info: name: '{{ mapping_name_2 }}' register: mapping_info - assert: that: - mapping_info is successful - '"mappings" in mapping_info' - mapping_info.mappings | length == 1 - '"id" in mapping_0' - '"name" in mapping_0' - '"rules" in mapping_0' - mapping_0.id == mapping_name_2 - mapping_0.name == mapping_name_2 - mapping_0.rules | length == 1 vars: mapping_0: '{{ mapping_info.mappings[0] }}' - name: 'Fetch mapping info - without name' openstack.cloud.federation_mapping_info: {} register: mapping_info - assert: that: - mapping_info is successful - '"mappings" in mapping_info' # In CI we generally have a clean slate, but this might # not be true for everyone... - mapping_info.mappings | length >= 2 - '"id" in mapping_0' - '"name" in mapping_0' - '"rules" in mapping_0' - '"id" in mapping_1' - '"name" in mapping_1' - '"rules" in mapping_1' - mapping_name in (mapping_info.mappings | map(attribute='id')) - mapping_name in (mapping_info.mappings | map(attribute='name')) - mapping_name_2 in (mapping_info.mappings | map(attribute='id')) - mapping_name_2 in (mapping_info.mappings | map(attribute='name')) vars: mapping_0: '{{ mapping_info.mappings[0] }}' mapping_1: '{{ mapping_info.mappings[1] }}' - name: 'Delete mapping - CHECK_MODE' openstack.cloud.federation_mapping: state: 'absent' name: '{{ mapping_name }}' register: delete_mapping check_mode: yes - assert: that: - delete_mapping is successful - delete_mapping is changed - name: 'Delete mapping' openstack.cloud.federation_mapping: state: 'absent' name: '{{ mapping_name }}' register: delete_mapping - assert: that: - delete_mapping is successful - delete_mapping is changed - name: 'Delete mapping (retry - no change) - CHECK_MODE' openstack.cloud.federation_mapping: state: 'absent' name: '{{ mapping_name }}' register: delete_mapping check_mode: yes - assert: that: - delete_mapping is successful - delete_mapping is not changed - name: 'Delete mapping (retry - no change) ' openstack.cloud.federation_mapping: state: 'absent' name: '{{ mapping_name }}' register: delete_mapping - assert: that: - delete_mapping is successful - delete_mapping is not changed - name: 'Fetch mapping info after deletion' openstack.cloud.federation_mapping_info: name: '{{ mapping_name }}' register: mapping_info ignore_errors: True - assert: that: - mapping_info is failed - name: 'Delete second mapping' openstack.cloud.federation_mapping: state: 'absent' name: '{{ mapping_name_2 }}' register: delete_mapping - assert: that: - delete_mapping is successful - delete_mapping is changed always: - name: 'Delete mapping' openstack.cloud.federation_mapping: state: 'absent' name: '{{ mapping_name }}' ignore_errors: yes - name: 'Delete second mapping' openstack.cloud.federation_mapping: state: 'absent' name: '{{ mapping_name_2 }}' ignore_errors: yes