164 lines
5.1 KiB
YAML
164 lines
5.1 KiB
YAML
|
---
|
||
|
- name: Fetch all images
|
||
|
one_image_facts:
|
||
|
register: all_images
|
||
|
|
||
|
- name: Print all images
|
||
|
debug:
|
||
|
var: all_images
|
||
|
|
||
|
- name: Gather facts about an image using a name
|
||
|
one_image_facts:
|
||
|
name: '{{ one_image_name }}'
|
||
|
register: image_with_name
|
||
|
|
||
|
- name: Verify image's facts
|
||
|
assert:
|
||
|
that:
|
||
|
- not image_with_name is changed
|
||
|
- image_with_name.images|length == 1
|
||
|
- image_with_name.images[0].name == '{{ one_image_name }}'
|
||
|
- not image_with_name.images[0].used|bool
|
||
|
- image_with_name.images[0].running_vms == 0
|
||
|
|
||
|
- name: Gather facts about the image using ID
|
||
|
one_image_facts:
|
||
|
id: '{{ image_with_name.images[0].id }}'
|
||
|
register: image_with_ids
|
||
|
|
||
|
- name: Verify image's facts
|
||
|
assert:
|
||
|
that:
|
||
|
- not image_with_ids is changed
|
||
|
- image_with_ids.images|length == 1
|
||
|
- image_with_ids.images[0].name == '{{ one_image_name }}'
|
||
|
- not image_with_ids.images[0].used|bool
|
||
|
- image_with_ids.images[0].running_vms == 0
|
||
|
|
||
|
- name: Try to gather facts about an image using a name and ids
|
||
|
one_image_facts:
|
||
|
name: '{{ one_image_name }}'
|
||
|
id: '{{ image_with_name.images[0].id }}'
|
||
|
register: image_name_ids
|
||
|
failed_when: not image_name_ids is failed
|
||
|
|
||
|
- name: Try to fetch non-existent image by name
|
||
|
one_image_facts:
|
||
|
name: non-existent-vm-{{ ansible_date_time.iso8601_basic_short }}
|
||
|
register: image_missing
|
||
|
failed_when: not image_missing is failed
|
||
|
|
||
|
- name: Try to gather facts about non-existent images by regex
|
||
|
one_image_facts:
|
||
|
name: ~non-existent-vm-{{ ansible_date_time.iso8601_basic_short }}-*
|
||
|
register: images_with_regex
|
||
|
|
||
|
- name: Verify that images list is empty
|
||
|
assert:
|
||
|
that:
|
||
|
- not images_with_regex is changed
|
||
|
- images_with_regex.images|length == 0
|
||
|
|
||
|
- name: Try to fetch non-existent image by id
|
||
|
one_image_facts:
|
||
|
id: -999
|
||
|
register: image_missing
|
||
|
failed_when: not image_missing is failed
|
||
|
|
||
|
- block:
|
||
|
- name: Clone the image first time
|
||
|
one_image:
|
||
|
name: '{{ one_image_name }}'
|
||
|
state: cloned
|
||
|
new_name: '{{ one_image_name }}-clone-1'
|
||
|
|
||
|
- name: Clone the image second time
|
||
|
one_image:
|
||
|
name: '{{ one_image_name }}'
|
||
|
state: cloned
|
||
|
new_name: '{{ one_image_name }}-clone-2'
|
||
|
|
||
|
- name: Fetch all images whose name matches regex
|
||
|
one_image_facts:
|
||
|
name: '~{{ one_image_name }}-clone-[12]$'
|
||
|
register: cloned_instances
|
||
|
|
||
|
- name: Check there are 2 matched instances
|
||
|
assert:
|
||
|
that:
|
||
|
- not cloned_instances is changed
|
||
|
- cloned_instances.images|length == 2
|
||
|
- cloned_instances.images[0].name == "{{ one_image_name }}-clone-1"
|
||
|
- cloned_instances.images[1].name == "{{ one_image_name }}-clone-2"
|
||
|
msg: "There should be 2 cloned instances"
|
||
|
|
||
|
- name: Gather facts about all images using IDs
|
||
|
one_image_facts:
|
||
|
ids:
|
||
|
- '{{ cloned_instances.images[0].id }}'
|
||
|
- '{{ cloned_instances.images[1].id }}'
|
||
|
register: cloned_instances_with_ids
|
||
|
|
||
|
- name: Check there are 2 matched instances
|
||
|
assert:
|
||
|
that:
|
||
|
- not cloned_instances_with_ids is changed
|
||
|
- cloned_instances_with_ids.images|length == 2
|
||
|
- cloned_instances_with_ids.images[0].name == "{{ one_image_name }}-clone-1"
|
||
|
- cloned_instances_with_ids.images[1].name == "{{ one_image_name }}-clone-2"
|
||
|
msg: "There should be 2 cloned instances"
|
||
|
|
||
|
- name: Rename the second image
|
||
|
one_image:
|
||
|
id: '{{ cloned_instances_with_ids.images[1].id }}'
|
||
|
state: renamed
|
||
|
new_name: '{{ one_image_name }}-CLONE-2'
|
||
|
|
||
|
- name: Fetch all images whose name matches regex
|
||
|
one_image_facts:
|
||
|
name: '~{{ one_image_name }}-clone-[12]$'
|
||
|
register: cloned_instances
|
||
|
|
||
|
- name: Check there is only 1 matched instance
|
||
|
assert:
|
||
|
that:
|
||
|
- not cloned_instances is changed
|
||
|
- cloned_instances.images|length == 1
|
||
|
- cloned_instances.images[0].name == "{{ one_image_name }}-clone-1"
|
||
|
msg: "There should be 1 cloned instance"
|
||
|
|
||
|
- name: Fetch all images whose name matches regex ignoring cases
|
||
|
one_image_facts:
|
||
|
name: '~*{{ one_image_name }}-clone-[12]$'
|
||
|
register: cloned_instances_case_insensitive
|
||
|
|
||
|
- name: Check there are 2 matched instances
|
||
|
assert:
|
||
|
that:
|
||
|
- not cloned_instances_case_insensitive is changed
|
||
|
- cloned_instances_case_insensitive.images|length == 2
|
||
|
- cloned_instances_case_insensitive.images[0].name == "{{ one_image_name }}-clone-1"
|
||
|
- cloned_instances_case_insensitive.images[1].name == "{{ one_image_name }}-CLONE-2"
|
||
|
msg: "There should be 2 cloned instances"
|
||
|
|
||
|
- name: Delete cloned instances
|
||
|
one_image:
|
||
|
id: '{{ item.id }}'
|
||
|
state: absent
|
||
|
with_items: '{{ cloned_instances.images }}'
|
||
|
always:
|
||
|
- name: Delete the first cloned image
|
||
|
one_image:
|
||
|
name: '{{ one_image_name }}-clone-1'
|
||
|
state: absent
|
||
|
|
||
|
- name: Delete the second cloned image
|
||
|
one_image:
|
||
|
name: '{{ one_image_name }}-clone-2'
|
||
|
state: absent
|
||
|
|
||
|
- name: Delete the second cloned image
|
||
|
one_image:
|
||
|
name: '{{ one_image_name }}-CLONE-2'
|
||
|
state: absent
|