ci: integration tests

Signed-off-by: Guido Grazioli <ggraziol@redhat.com>
This commit is contained in:
Guido Grazioli
2023-07-27 14:50:08 +02:00
parent f5b8372a75
commit 198d885b8f
26 changed files with 626 additions and 703 deletions

View File

@@ -0,0 +1,43 @@
---
- name: Create VM
connection: local
gather_facts: false
hosts: localhost
tasks:
- name: Create a VirtualMachine
kubevirt.core.kubevirt_vm:
state: present
name: testvm3
namespace: default
labels:
app: test
wait: true
wait_timeout: 600
spec:
domain:
cpu:
sockets: 1
memory:
guest: 1536Mi
devices:
interfaces:
- name: default
masquerade: {}
- name: bridge-network
bridge: {}
networks:
- name: default
pod: {}
- name: bridge-network
multus:
networkName: kindexgw
volumes:
- containerDisk:
image: quay.io/containerdisks/centos-stream:9
name: containerdisk
- cloudInitNoCloud:
userData: |-
#cloud-config
ssh_authorized_keys:
- {{ lookup('file', 'pub_key') }}
name: cloudinit

View File

@@ -0,0 +1,21 @@
#!/usr/bin/env bash
set -eux
set -o pipefail
{
export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
export ANSIBLE_INVENTORY_ENABLED=kubevirt.core.kubevirt,yaml
[ -d files ] || mkdir files
[ -f files/priv_key ] || (ssh-keygen -t ed25519 -C test@test -f files/priv_key ; ssh-keygen -y -f files/priv_key > files/pub_key)
ansible-playbook playbook.yml "$@"
ansible-inventory -i test.kubevirt.yml -y --list "$@"
ansible-playbook verify.yml -i test.kubevirt.yml --private-key=files/priv_key "$@"
rm "$HOME/.ssh/known_hosts"
} || {
exit 1
}

View File

@@ -0,0 +1,5 @@
plugin: kubevirt.core.kubevirt
connections:
- namespaces:
- default
network_name: bridge-network

View File

@@ -0,0 +1,69 @@
---
- name: Wait for ssh
connection: local
gather_facts: false
hosts: localhost
tasks:
- name: Wait up to 900 seconds for port 22 to become open
ansible.builtin.wait_for:
port: 22
host: "{{ hostvars['default-testvm3'].ansible_host }}"
delay: 30
timeout: 900
- name: Connect to VM
gather_facts: true
hosts: default-testvm3
remote_user: centos
vars:
ansible_python_interpreter: /usr/bin/python3
tasks:
- name: Print out virtual machine facts
ansible.builtin.debug:
var: ansible_facts
- name: Verify creation with existing VM
connection: local
gather_facts: false
hosts: localhost
tasks:
- name: Create a VirtualMachine
kubevirt.core.kubevirt_vm:
state: present
name: testvm3
namespace: default
labels:
app: test
register: recreate
- name: Assert module reported no changes
ansible.builtin.assert:
that:
- not recreate.changed
- name: Delete VM
connection: local
gather_facts: false
hosts: localhost
tasks:
- name: Delete a VirtualMachine
kubevirt.core.kubevirt_vm:
state: absent
name: testvm3
namespace: default
wait: true
- name: Verify VM deletion
connection: local
gather_facts: false
hosts: localhost
tasks:
- name: Delete a VirtualMachine
kubevirt.core.kubevirt_vm:
state: absent
name: testvm3
namespace: default
register: delete
- name: Assert module reported no changes
ansible.builtin.assert:
that:
- not delete.changed