mirror of
https://github.com/kubevirt/kubevirt.core.git
synced 2026-05-08 22:32:58 +00:00
kubevirt_vm: Run integration test in random namespace
Run the integration tests for kubevirt_vm in a random namespace and cleanup after the tests finish. Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -157,5 +157,9 @@ kubevirt.core
|
|||||||
/tests/integration/targets/inventory_kubevirt/test.label.kubevirt.yml
|
/tests/integration/targets/inventory_kubevirt/test.label.kubevirt.yml
|
||||||
/tests/integration/targets/inventory_kubevirt/test.net.kubevirt.yml
|
/tests/integration/targets/inventory_kubevirt/test.net.kubevirt.yml
|
||||||
/tests/integration/targets/inventory_kubevirt/verify.yml
|
/tests/integration/targets/inventory_kubevirt/verify.yml
|
||||||
|
/tests/integration/targets/kubevirt_vm/playbook.yml
|
||||||
|
/tests/integration/targets/kubevirt_vm/test.kubevirt.yml
|
||||||
|
/tests/integration/targets/kubevirt_vm/verify.yml
|
||||||
|
/tests/integration/targets/kubevirt_vm/wait_for_vm.yml
|
||||||
/tests/integration/targets/kubevirt_vm/files
|
/tests/integration/targets/kubevirt_vm/files
|
||||||
kubevirt-cache
|
kubevirt-cache
|
||||||
|
|||||||
16
tests/integration/targets/kubevirt_vm/generate.yml
Normal file
16
tests/integration/targets/kubevirt_vm/generate.yml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
- 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
|
||||||
|
- test.kubevirt
|
||||||
|
- verify
|
||||||
|
- wait_for_vm
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
- name: Create a VM
|
- name: Create a VM
|
||||||
kubevirt.core.kubevirt_vm:
|
kubevirt.core.kubevirt_vm:
|
||||||
name: testvm
|
name: testvm
|
||||||
namespace: default
|
namespace: {{ NAMESPACE }}
|
||||||
labels:
|
labels:
|
||||||
app: test
|
app: test
|
||||||
instancetype:
|
instancetype:
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
pod: {}
|
pod: {}
|
||||||
- name: bridge-network
|
- name: bridge-network
|
||||||
multus:
|
multus:
|
||||||
networkName: kindexgw
|
networkName: {{ SECONDARY_NETWORK }}
|
||||||
volumes:
|
volumes:
|
||||||
- containerDisk:
|
- containerDisk:
|
||||||
image: quay.io/containerdisks/centos-stream:9
|
image: quay.io/containerdisks/centos-stream:9
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
userData: |-
|
userData: |-
|
||||||
#cloud-config
|
#cloud-config
|
||||||
ssh_authorized_keys:
|
ssh_authorized_keys:
|
||||||
- {{ lookup('file', 'testkey.pub') }}
|
- {{ '{{' }} lookup('file', 'testkey.pub') {{ '}}' }}
|
||||||
name: cloudinitdisk
|
name: cloudinitdisk
|
||||||
wait: true
|
wait: true
|
||||||
wait_timeout: 600
|
wait_timeout: 600
|
||||||
@@ -1,14 +1,30 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eux
|
set -eux
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
export ANSIBLE_CALLBACKS_ENABLED=ansible.posix.profile_tasks
|
export ANSIBLE_CALLBACKS_ENABLED=ansible.posix.profile_tasks
|
||||||
export ANSIBLE_INVENTORY_ENABLED=kubevirt.core.kubevirt
|
export ANSIBLE_INVENTORY_ENABLED=kubevirt.core.kubevirt
|
||||||
export ANSIBLE_HOST_KEY_CHECKING=False
|
export ANSIBLE_HOST_KEY_CHECKING=False
|
||||||
|
|
||||||
|
NAMESPACE="test-kubevirt-vm-$(tr -dc '[:lower:]' < /dev/urandom | head -c 5)"
|
||||||
|
SECONDARY_NETWORK=${SECONDARY_NETWORK:-default/kindexgw}
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
ansible localhost -m kubernetes.core.k8s -a "name=${NAMESPACE} api_version=v1 kind=Namespace state=absent"
|
||||||
|
rm -rf playbook.yml test.kubevirt.yml verify.yml wait_for_vm.yml files
|
||||||
|
}
|
||||||
|
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}" \
|
||||||
|
-e "SECONDARY_NETWORK=${SECONDARY_NETWORK}" \
|
||||||
|
generate.yml
|
||||||
|
|
||||||
[ -d files ] || mkdir files
|
[ -d files ] || mkdir files
|
||||||
[ -f files/testkey ] || (ssh-keygen -t rsa -C test@test -f files/testkey -N "")
|
[ -f files/testkey ] || (ssh-keygen -t rsa -C test@test -f files/testkey -N "")
|
||||||
|
|
||||||
|
# Run the tests
|
||||||
ansible-playbook playbook.yml "$@"
|
ansible-playbook playbook.yml "$@"
|
||||||
|
|
||||||
ansible-inventory -i test.kubevirt.yml -y --list "$@"
|
ansible-inventory -i test.kubevirt.yml -y --list "$@"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
plugin: kubevirt.core.kubevirt
|
plugin: kubevirt.core.kubevirt
|
||||||
namespaces:
|
namespaces:
|
||||||
- default
|
- {{ NAMESPACE }}
|
||||||
network_name: bridge-network
|
network_name: bridge-network
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
- name: Create a VM
|
- name: Create a VM
|
||||||
kubevirt.core.kubevirt_vm:
|
kubevirt.core.kubevirt_vm:
|
||||||
name: testvm
|
name: testvm
|
||||||
namespace: default
|
namespace: {{ NAMESPACE }}
|
||||||
labels:
|
labels:
|
||||||
app: test
|
app: test
|
||||||
register: recreate
|
register: recreate
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
- name: Delete a VM
|
- name: Delete a VM
|
||||||
kubevirt.core.kubevirt_vm:
|
kubevirt.core.kubevirt_vm:
|
||||||
name: testvm
|
name: testvm
|
||||||
namespace: default
|
namespace: {{ NAMESPACE }}
|
||||||
state: absent
|
state: absent
|
||||||
wait: true
|
wait: true
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
- name: Delete a VM
|
- name: Delete a VM
|
||||||
kubevirt.core.kubevirt_vm:
|
kubevirt.core.kubevirt_vm:
|
||||||
name: testvm
|
name: testvm
|
||||||
namespace: default
|
namespace: {{ NAMESPACE }}
|
||||||
state: absent
|
state: absent
|
||||||
register: delete
|
register: delete
|
||||||
- name: Assert module reported no changes
|
- name: Assert module reported no changes
|
||||||
@@ -7,14 +7,14 @@
|
|||||||
- name: Wait up to 900 seconds for port 22 to become open
|
- name: Wait up to 900 seconds for port 22 to become open
|
||||||
ansible.builtin.wait_for:
|
ansible.builtin.wait_for:
|
||||||
port: 22
|
port: 22
|
||||||
host: "{{ hostvars['default-testvm'].ansible_host }}"
|
host: "{{ '{{' }} hostvars['{{ NAMESPACE }}-testvm'].ansible_host {{ '}}' }}"
|
||||||
search_regex: OpenSSH
|
search_regex: OpenSSH
|
||||||
delay: 10
|
delay: 10
|
||||||
timeout: 900
|
timeout: 900
|
||||||
|
|
||||||
- name: Connect to VM
|
- name: Connect to VM
|
||||||
gather_facts: true
|
gather_facts: true
|
||||||
hosts: default-testvm
|
hosts: {{ NAMESPACE }}-testvm
|
||||||
remote_user: cloud-user
|
remote_user: cloud-user
|
||||||
vars:
|
vars:
|
||||||
ansible_python_interpreter: /usr/bin/python3
|
ansible_python_interpreter: /usr/bin/python3
|
||||||
Reference in New Issue
Block a user