mirror of
https://opendev.org/openstack/ansible-collections-openstack.git
synced 2026-07-25 09:14:31 +00:00
Dropped default values of min_disk and min_ram parameters because it interferes with the update mechanism and glance uses those values anyway [1], [2]. If the image is already present and visibility param is defined we should check its visibility and correct it if needed. Added tests to verify that both is_public and visibility can change the image. If both name and id are specified for the image, we might want to update the image name. This rely on fact that id pram is checked first. Added rename tests to verify this. For some reason if image object is used for the image update, 409 error produced and exception trown, but the change is in place. So instead of image object, update query rely on the image.id [1]75051dd5a2/glance/db/simple/api.py (L226)[2]75051dd5a2/glance/domain/__init__.py (L125)Change-Id: I9ca6b78bec96b69e6946b65796f12314a1ec6ab4
310 lines
7.3 KiB
YAML
310 lines
7.3 KiB
YAML
---
|
|
- name: Ensure image does not exist before tests
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: absent
|
|
name: "{{ image_name }}"
|
|
|
|
- name: Create a test image file
|
|
shell: mktemp
|
|
register: tmp_file
|
|
|
|
- name: Fill test image file to 1MB
|
|
shell: truncate -s 1048576 {{ tmp_file.stdout }}
|
|
|
|
- name: ensure mock kernel and ramdisk images (defaults)
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: present
|
|
name: "{{ item }}"
|
|
filename: "{{ tmp_file.stdout }}"
|
|
disk_format: raw
|
|
loop:
|
|
- cirros-vmlinuz
|
|
- cirros-initrd
|
|
|
|
- name: Create raw image (defaults)
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: present
|
|
name: "{{ image_name }}"
|
|
filename: "{{ tmp_file.stdout }}"
|
|
is_protected: true
|
|
disk_format: raw
|
|
tags: "{{ image_tags }}"
|
|
register: returned_image
|
|
|
|
- debug:
|
|
var: returned_image
|
|
|
|
- name: Assert changed
|
|
assert:
|
|
that: returned_image is changed
|
|
|
|
- name: Assert fields
|
|
assert:
|
|
that:
|
|
- item in returned_image.image
|
|
loop: "{{ expected_fields }}"
|
|
|
|
- name: Get details of created image
|
|
openstack.cloud.image_info:
|
|
cloud: "{{ cloud }}"
|
|
image: "{{ image_name }}"
|
|
register: image_info_result
|
|
|
|
- name: Verify image info
|
|
assert:
|
|
that:
|
|
- "image_info_result.images[0].name == image_name"
|
|
- "image_info_result.images[0].tags | sort == image_tags | sort"
|
|
|
|
- name: Create raw image again (defaults)
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: present
|
|
name: "{{ image_name }}"
|
|
filename: "{{ tmp_file.stdout }}"
|
|
is_protected: true
|
|
disk_format: raw
|
|
tags: "{{ image_tags }}"
|
|
register: returned_image
|
|
|
|
- name: Assert not changed
|
|
assert:
|
|
that: returned_image is not changed
|
|
|
|
- name: Assert fields
|
|
assert:
|
|
that:
|
|
- item in returned_image.image
|
|
loop: "{{ expected_fields }}"
|
|
|
|
- name: Update is_protected on raw image (defaults)
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: present
|
|
name: "{{ image_name }}"
|
|
is_protected: false
|
|
register: returned_image
|
|
|
|
- name: Assert changed
|
|
assert:
|
|
that:
|
|
- returned_image is changed
|
|
- returned_image.image.is_protected == false
|
|
|
|
- name: Assert changed
|
|
assert:
|
|
that:
|
|
- returned_image is changed
|
|
|
|
- name: Update visibility on raw image (defaults)
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: present
|
|
name: "{{ image_name }}"
|
|
is_public: false
|
|
register: returned_image
|
|
|
|
- name: Assert changed
|
|
assert:
|
|
that:
|
|
- returned_image.image.visibility == 'private'
|
|
|
|
- name: Update again visibility on raw image (defaults)
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: present
|
|
name: "{{ image_name }}"
|
|
is_public: true
|
|
register: returned_image
|
|
|
|
- name: Assert changed
|
|
assert:
|
|
that:
|
|
- returned_image is changed
|
|
- returned_image.image.visibility == 'public'
|
|
|
|
- name: Define visibility on raw image (defaults)
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: present
|
|
name: "{{ image_name }}"
|
|
visibility: shared
|
|
register: returned_image
|
|
|
|
- name: Assert changed
|
|
assert:
|
|
that:
|
|
- returned_image is changed
|
|
- returned_image.image.visibility == 'shared'
|
|
|
|
- name: Rename raw image (defaults)
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: present
|
|
id: "{{ returned_image.id }}"
|
|
name: "{{ image_name }}-changed"
|
|
register: returned_image
|
|
|
|
- name: Assert changed
|
|
assert:
|
|
that:
|
|
- returned_image is changed
|
|
- returned_image.image.name == "{{ image_name }}-changed"
|
|
|
|
- name: Rename back raw image (defaults)
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: present
|
|
id: "{{ returned_image.id }}"
|
|
name: "{{ image_name }}"
|
|
register: returned_image
|
|
|
|
- name: Delete raw image (defaults)
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: absent
|
|
name: "{{ image_name }}"
|
|
register: returned_image
|
|
|
|
- name: assert image changed
|
|
assert:
|
|
that: returned_image is changed
|
|
|
|
- name: Delete raw image again (defaults)
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: absent
|
|
name: "{{ image_name }}"
|
|
register: returned_image
|
|
|
|
- name: assert image not changed
|
|
assert:
|
|
that: returned_image is not changed
|
|
|
|
- name: Create raw image (complex)
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: present
|
|
name: "{{ image_name }}"
|
|
filename: "{{ tmp_file.stdout }}"
|
|
disk_format: raw
|
|
is_public: True
|
|
min_disk: 10
|
|
min_ram: 1024
|
|
# TODO(rcastillo): upload cirros-vmlinuz, cirros-initrd in test setup
|
|
kernel: cirros-vmlinuz
|
|
ramdisk: cirros-initrd
|
|
properties:
|
|
cpu_arch: x86_64
|
|
distro: ubuntu
|
|
register: returned_image
|
|
|
|
- name: Assert visibility
|
|
assert:
|
|
that: returned_image.image.visibility == 'public'
|
|
|
|
- name: Assert fields
|
|
assert:
|
|
that:
|
|
- item in returned_image.image
|
|
loop: "{{ expected_fields }}"
|
|
|
|
- name: Delete raw image (complex)
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: absent
|
|
name: "{{ image_name }}"
|
|
|
|
- name: Try to get details of deleted image
|
|
openstack.cloud.image_info:
|
|
cloud: "{{ cloud }}"
|
|
image: "{{ image_name }}"
|
|
register: deleted_image_info_result
|
|
|
|
- name: Verify image is deleted
|
|
assert:
|
|
that:
|
|
- not deleted_image_info_result.images
|
|
|
|
- name: Create owner project
|
|
openstack.cloud.project:
|
|
cloud: "{{ cloud }}"
|
|
state: present
|
|
name: image_owner_project
|
|
description: Project owning test image
|
|
domain_id: default
|
|
enabled: True
|
|
register: owner_project
|
|
|
|
- name: Create raw image (owner by project name)
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: present
|
|
name: "{{ image_name }}"
|
|
filename: "{{ tmp_file.stdout }}"
|
|
disk_format: raw
|
|
tags: "{{ image_tags }}"
|
|
project: image_owner_project
|
|
register: returned_image
|
|
|
|
- name: Get details of created image (owner by project name)
|
|
openstack.cloud.image_info:
|
|
cloud: "{{ cloud }}"
|
|
image: "{{ image_name }}"
|
|
register: image_info_result
|
|
|
|
- name: Verify image owner (owner by project name)
|
|
assert:
|
|
that:
|
|
- image_info_result.images[0].owner == owner_project.project.id
|
|
|
|
- name: Delete raw image (owner by project name)
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: absent
|
|
name: "{{ image_name }}"
|
|
|
|
- name: Create raw image (owner by project name and domain name)
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: present
|
|
name: "{{ image_name }}"
|
|
filename: "{{ tmp_file.stdout }}"
|
|
disk_format: raw
|
|
tags: "{{ image_tags }}"
|
|
project: image_owner_project
|
|
project_domain: default
|
|
register: returned_image
|
|
|
|
- name: Get details of created image (owner by project name and domain name)
|
|
openstack.cloud.image_info:
|
|
cloud: "{{ cloud }}"
|
|
image: "{{ image_name }}"
|
|
register: image_info_result
|
|
|
|
- name: Verify image owner (owner by project name and domain name)
|
|
assert:
|
|
that:
|
|
- image_info_result.images[0].owner == owner_project.project.id
|
|
|
|
- name: Delete raw image (owner by project name and domain name)
|
|
openstack.cloud.image:
|
|
cloud: "{{ cloud }}"
|
|
state: absent
|
|
name: "{{ image_name }}"
|
|
|
|
- name: Delete owner project
|
|
openstack.cloud.project:
|
|
cloud: "{{ cloud }}"
|
|
state: absent
|
|
name: image_owner_project
|
|
domain_id: default
|
|
|
|
- name: Delete test image file
|
|
file:
|
|
name: "{{ tmp_file.stdout }}"
|
|
state: absent
|