diff --git a/ci/roles/image/defaults/main.yml b/ci/roles/image/defaults/main.yml index 13efe714..66ba71ab 100644 --- a/ci/roles/image/defaults/main.yml +++ b/ci/roles/image/defaults/main.yml @@ -1 +1,4 @@ image_name: ansible_image +image_tags: + - test + - ansible diff --git a/ci/roles/image/tasks/main.yml b/ci/roles/image/tasks/main.yml index 90265e97..2158b1fb 100644 --- a/ci/roles/image/tasks/main.yml +++ b/ci/roles/image/tasks/main.yml @@ -13,6 +13,7 @@ name: "{{ image_name }}" filename: "{{ tmp_file.stdout }}" disk_format: raw + tags: "{{ image_tags }}" register: image - name: Get details of created image @@ -25,6 +26,7 @@ assert: that: - "image_info_result.openstack_image.name == image_name" + - "image_info_result.openstack_image.tags | sort == image_tags | sort" - name: Delete raw image (defaults) openstack.cloud.image: diff --git a/plugins/modules/image.py b/plugins/modules/image.py index 8d9036f2..31cdf001 100644 --- a/plugins/modules/image.py +++ b/plugins/modules/image.py @@ -85,6 +85,12 @@ options: choices: [present, absent] default: present type: str + tags: + description: + - List of tags to be applied to the image + default: [] + type: list + elements: str volume: description: - ID of a volume to create an image from. @@ -115,6 +121,8 @@ EXAMPLES = ''' filename: cirros-0.3.0-x86_64-disk.img kernel: cirros-vmlinuz ramdisk: cirros-initrd + tags: + - custom properties: cpu_arch: x86_64 distro: ubuntu @@ -171,6 +179,7 @@ class ImageModule(OpenStackModule): kernel=dict(type='str'), properties=dict(type='dict', default={}), volume=dict(type='str'), + tags=dict(type='list', default=[], elements='str'), state=dict(default='present', choices=['absent', 'present']), ) @@ -205,6 +214,7 @@ class ImageModule(OpenStackModule): min_disk=self.params['min_disk'], min_ram=self.params['min_ram'], volume=self.params['volume'], + tags=self.params['tags'], **kwargs ) changed = True @@ -217,6 +227,8 @@ class ImageModule(OpenStackModule): ramdisk=self.params['ramdisk'], protected=self.params['protected'], **self.params['properties']) + if self.params['tags']: + self.conn.image.update_image(image.id, tags=self.params['tags']) image = self.conn.get_image(name_or_id=image.id) self.exit(changed=changed, image=image, id=image.id) diff --git a/plugins/modules/image_info.py b/plugins/modules/image_info.py index 3203711f..90cc506d 100644 --- a/plugins/modules/image_info.py +++ b/plugins/modules/image_info.py @@ -140,6 +140,10 @@ openstack_image: description: Size of the image. returned: success type: int + tags: + description: List of tags assigned to the image + returned: success + type: list ''' from ansible_collections.openstack.cloud.plugins.module_utils.openstack import OpenStackModule