os_image_facts: add ability to filter Openstack images based on properties

pull/61359/merge
Pavel Holica 7 years ago committed by Gonéri Le Bouder
parent 58edfec145
commit 89744b72d3

@ -29,6 +29,12 @@ options:
description: description:
- Name or ID of the image - Name or ID of the image
required: false required: false
properties:
description:
- Dict of properties of the images used for query
type: dict
required: false
version_added: '2.9'
availability_zone: availability_zone:
description: description:
- Ignored. Present for backwards compatibility - Ignored. Present for backwards compatibility
@ -56,6 +62,17 @@ EXAMPLES = '''
os_image_info: os_image_info:
register: result register: result
- name: Show images
debug:
msg: "{{ result.openstack_image }}"
# Show images matching requested properties
- name: Retrieve images having properties with desired values
os_image_facts:
properties:
some_property: some_value
OtherProp: OtherVal
- name: Show images - name: Show images
debug: debug:
msg: "{{ result.openstack_image }}" msg: "{{ result.openstack_image }}"
@ -145,6 +162,7 @@ def main():
argument_spec = openstack_full_argument_spec( argument_spec = openstack_full_argument_spec(
image=dict(required=False), image=dict(required=False),
properties=dict(default=None, type='dict'),
) )
module_kwargs = openstack_module_kwargs() module_kwargs = openstack_module_kwargs()
module = AnsibleModule(argument_spec, **module_kwargs) module = AnsibleModule(argument_spec, **module_kwargs)
@ -163,7 +181,7 @@ def main():
else: else:
module.exit_json(changed=False, openstack_image=image) module.exit_json(changed=False, openstack_image=image)
else: else:
images = cloud.list_images() images = cloud.search_images(filters=module.params['properties'])
if is_old_facts: if is_old_facts:
module.exit_json(changed=False, ansible_facts=dict( module.exit_json(changed=False, ansible_facts=dict(
openstack_image=images)) openstack_image=images))

Loading…
Cancel
Save