feat: Add kubevirt_vmi_info module

Add the kubevirt_vmi_info module which allows to fetch information about
VirtualMachineInstance(s).

Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
This commit is contained in:
Felix Matouschek
2024-08-14 16:35:56 +02:00
parent cd270e271b
commit e98d9a48bd
12 changed files with 374 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
---
- name: Generate test files
connection: local
gather_facts: false
hosts: localhost
tasks:
- name: Generate test files
ansible.builtin.template:
src: "{{ item }}.yml.j2"
dest: "{{ item }}.yml"
mode: "0644"
with_items:
- playbook

View File

@@ -0,0 +1,67 @@
---
- name: Create VM
connection: local
gather_facts: false
hosts: localhost
tasks:
- name: Create a VM
kubevirt.core.kubevirt_vm:
name: testvm
namespace: {{ NAMESPACE }}
instancetype:
name: u1.small
preference:
name: centos.stream9
spec:
domain:
devices: {}
volumes:
- containerDisk:
image: quay.io/containerdisks/centos-stream:9
name: containerdisk
wait: true
wait_timeout: 600
- name: Describe created VMI
connection: local
gather_facts: false
hosts: localhost
tasks:
- name: Describe a VMI
kubevirt.core.kubevirt_vmi_info:
name: testvm
namespace: {{ NAMESPACE }}
register: describe
- name: Assert module reported no changes
ansible.builtin.assert:
that:
- not describe.changed
- describe.resources | length == 1
- name: Delete VM
connection: local
gather_facts: false
hosts: localhost
tasks:
- name: Delete a VM
kubevirt.core.kubevirt_vm:
name: testvm
namespace: {{ NAMESPACE }}
state: absent
wait: true
- name: Verify VM deletion
connection: local
gather_facts: false
hosts: localhost
tasks:
- name: Delete a VM
kubevirt.core.kubevirt_vm:
name: testvm
namespace: {{ NAMESPACE }}
state: absent
register: delete
- name: Assert module reported no changes
ansible.builtin.assert:
that:
- not delete.changed

View File

@@ -0,0 +1,19 @@
#!/usr/bin/env bash
set -eux
export ANSIBLE_CALLBACKS_ENABLED=ansible.posix.profile_tasks
NAMESPACE="test-kubevirt-vmi-info-$(tr -dc '[:lower:]' < /dev/urandom | head -c 5)"
cleanup() {
ansible localhost -m kubernetes.core.k8s -a "name=${NAMESPACE} api_version=v1 kind=Namespace state=absent"
rm -rf playbook.yml
}
trap cleanup EXIT
# Prepare the test environment
ansible localhost -m kubernetes.core.k8s -a "name=${NAMESPACE} api_version=v1 kind=Namespace state=present"
ansible-playbook -e "NAMESPACE=${NAMESPACE}" generate.yml
# Run the tests
ansible-playbook playbook.yml "$@"