mirror of
https://opendev.org/openstack/ansible-collections-openstack.git
synced 2026-04-12 20:01:17 +00:00
A ValueError is raised when running the object_container module with the
`metadata` param against a container with existing metadata.
When the module attempts to enumerate the existing container metadata, a
ValueError exception is raised, because the code is iterating over the
metadata keys, instead of `dict_items`.
Compare to the iteration through another dict `metadata` on the next
line:
new_metadata = dict((k, v) for k, v in metadata.items()
This change adds a call to `items()` on the dictionary.
Note that this is added outside the parentheses so that the behaviour of the
`or` statement is not affected, and that another exception isn't caused
if `container.metadata` is not a dict.
Closes-Bug: #2071934
Change-Id: Ie5e1f275839e38340a75ab18c3b9ec9bc7745d68
109 lines
2.9 KiB
YAML
109 lines
2.9 KiB
YAML
---
|
|
- name: Create an empty container with public access
|
|
openstack.cloud.object_container:
|
|
cloud: "{{ cloud }}"
|
|
name: ansible_container
|
|
read_ACL: ".r:*,.rlistings"
|
|
register: container
|
|
|
|
- name: Assert return values of container module
|
|
assert:
|
|
that:
|
|
- container is changed
|
|
- container.container.name == "ansible_container"
|
|
- container.container.read_ACL == ".r:*,.rlistings"
|
|
# allow new fields to be introduced but prevent fields from being removed
|
|
- expected_fields|difference(container.container.keys())|length == 0
|
|
|
|
- name: Set container metadata aka container properties
|
|
openstack.cloud.object_container:
|
|
cloud: "{{ cloud }}"
|
|
name: ansible_container
|
|
metadata:
|
|
'Cache-Control': 'no-cache'
|
|
'foo': 'bar'
|
|
register: container
|
|
|
|
- name: Verify container metadata was set
|
|
assert:
|
|
that:
|
|
- container is changed
|
|
- ('cache-control' in container.container.metadata.keys()|map('lower'))
|
|
- container.container.metadata['foo'] == 'bar'
|
|
|
|
- name: Update container metadata
|
|
openstack.cloud.object_container:
|
|
cloud: "{{ cloud }}"
|
|
name: ansible_container
|
|
metadata:
|
|
'foo': 'baz'
|
|
register: container
|
|
|
|
- name: Verify container metadata was updated
|
|
assert:
|
|
that:
|
|
- container is changed
|
|
- ('cache-control' in container.container.metadata.keys()|map('lower'))
|
|
- container.container.metadata['foo'] == 'baz'
|
|
|
|
- name: Update a container
|
|
openstack.cloud.object_container:
|
|
cloud: "{{ cloud }}"
|
|
name: ansible_container
|
|
delete_metadata_keys:
|
|
- 'Cache-Control'
|
|
read_ACL: ""
|
|
register: container
|
|
|
|
- name: Verify updated container
|
|
assert:
|
|
that:
|
|
- container is changed
|
|
- ('cache-control' not in container.container.metadata.keys()|map('lower'))
|
|
- "container.container.metadata == {'foo': 'baz'}"
|
|
- container.container.read_ACL is none or container.container.read_ACL == ""
|
|
|
|
- name: Delete container
|
|
openstack.cloud.object_container:
|
|
cloud: "{{ cloud }}"
|
|
name: ansible_container
|
|
state: absent
|
|
register: container
|
|
|
|
- name: Verify container was deleted
|
|
assert:
|
|
that:
|
|
- container is changed
|
|
|
|
- name: Delete container again
|
|
openstack.cloud.object_container:
|
|
cloud: "{{ cloud }}"
|
|
name: ansible_container
|
|
state: absent
|
|
register: container
|
|
|
|
- name: Verify container was not deleted again
|
|
assert:
|
|
that:
|
|
- container is not changed
|
|
|
|
- name: Create another container for recursive deletion
|
|
openstack.cloud.object_container:
|
|
cloud: "{{ cloud }}"
|
|
name: ansible_container2
|
|
|
|
- name: Load an object into container
|
|
openstack.cloud.object:
|
|
cloud: "{{ cloud }}"
|
|
state: present
|
|
name: ansible_object
|
|
data: "this is another test"
|
|
container: ansible_container2
|
|
|
|
- name: Delete container recursively
|
|
openstack.cloud.object_container:
|
|
cloud: "{{ cloud }}"
|
|
state: absent
|
|
name: ansible_container2
|
|
delete_with_all_objects: true
|