mirror of
https://github.com/kubevirt/kubevirt.core.git
synced 2026-03-26 19:03:16 +00:00
inventory_kubevirt: Run integration test in random namespace
Run the integration tests for inventory_kubevirt in a random namespace and cleanup after the tests finish. Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
This commit is contained in:
7
.gitignore
vendored
7
.gitignore
vendored
@@ -147,8 +147,15 @@ kubevirt.core
|
|||||||
/tests/integration/targets/inventory_kubevirt/all.yml
|
/tests/integration/targets/inventory_kubevirt/all.yml
|
||||||
/tests/integration/targets/inventory_kubevirt/cache_after.yml
|
/tests/integration/targets/inventory_kubevirt/cache_after.yml
|
||||||
/tests/integration/targets/inventory_kubevirt/cache_before.yml
|
/tests/integration/targets/inventory_kubevirt/cache_before.yml
|
||||||
|
/tests/integration/targets/inventory_kubevirt/cleanup.yml
|
||||||
/tests/integration/targets/inventory_kubevirt/empty.yml
|
/tests/integration/targets/inventory_kubevirt/empty.yml
|
||||||
/tests/integration/targets/inventory_kubevirt/label.yml
|
/tests/integration/targets/inventory_kubevirt/label.yml
|
||||||
/tests/integration/targets/inventory_kubevirt/net.yml
|
/tests/integration/targets/inventory_kubevirt/net.yml
|
||||||
|
/tests/integration/targets/inventory_kubevirt/playbook.yml
|
||||||
|
/tests/integration/targets/inventory_kubevirt/test.cache.kubevirt.yml
|
||||||
|
/tests/integration/targets/inventory_kubevirt/test.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/verify.yml
|
||||||
/tests/integration/targets/kubevirt_vm/files
|
/tests/integration/targets/kubevirt_vm/files
|
||||||
kubevirt-cache
|
kubevirt-cache
|
||||||
|
|||||||
@@ -8,19 +8,19 @@
|
|||||||
kubevirt.core.kubevirt_vm:
|
kubevirt.core.kubevirt_vm:
|
||||||
state: absent
|
state: absent
|
||||||
name: testvm1
|
name: testvm1
|
||||||
namespace: default
|
namespace: {{ NAMESPACE }}
|
||||||
wait: true
|
wait: true
|
||||||
|
|
||||||
- name: Delete another VM
|
- name: Delete another VM
|
||||||
kubevirt.core.kubevirt_vm:
|
kubevirt.core.kubevirt_vm:
|
||||||
state: absent
|
state: absent
|
||||||
name: testvm2
|
name: testvm2
|
||||||
namespace: default
|
namespace: {{ NAMESPACE }}
|
||||||
wait: true
|
wait: true
|
||||||
|
|
||||||
- name: Delete the stopped VM
|
- name: Delete the stopped VM
|
||||||
kubevirt.core.kubevirt_vm:
|
kubevirt.core.kubevirt_vm:
|
||||||
state: absent
|
state: absent
|
||||||
name: testvm-stopped
|
name: testvm-stopped
|
||||||
namespace: default
|
namespace: {{ NAMESPACE }}
|
||||||
wait: true
|
wait: true
|
||||||
19
tests/integration/targets/inventory_kubevirt/generate.yml
Normal file
19
tests/integration/targets/inventory_kubevirt/generate.yml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
- 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:
|
||||||
|
- cleanup
|
||||||
|
- playbook
|
||||||
|
- test.cache.kubevirt
|
||||||
|
- test.kubevirt
|
||||||
|
- test.label.kubevirt
|
||||||
|
- test.net.kubevirt
|
||||||
|
- verify
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
kubevirt.core.kubevirt_vm:
|
kubevirt.core.kubevirt_vm:
|
||||||
state: present
|
state: present
|
||||||
name: testvm1
|
name: testvm1
|
||||||
namespace: default
|
namespace: {{ NAMESPACE }}
|
||||||
labels:
|
labels:
|
||||||
app: test
|
app: test
|
||||||
spec:
|
spec:
|
||||||
@@ -26,7 +26,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
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
kubevirt.core.kubevirt_vm:
|
kubevirt.core.kubevirt_vm:
|
||||||
state: present
|
state: present
|
||||||
name: testvm2
|
name: testvm2
|
||||||
namespace: default
|
namespace: {{ NAMESPACE }}
|
||||||
labels:
|
labels:
|
||||||
foo: bar
|
foo: bar
|
||||||
spec:
|
spec:
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
kubevirt.core.kubevirt_vm:
|
kubevirt.core.kubevirt_vm:
|
||||||
state: present
|
state: present
|
||||||
name: testvm-stopped
|
name: testvm-stopped
|
||||||
namespace: default
|
namespace: {{ NAMESPACE }}
|
||||||
running: false
|
running: false
|
||||||
spec:
|
spec:
|
||||||
domain:
|
domain:
|
||||||
@@ -1,10 +1,28 @@
|
|||||||
#!/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
|
||||||
|
|
||||||
|
NAMESPACE="test-inventory-kubevirt-$(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 all.yml cache_after.yml cache_before.yml cleanup.yml empty.yml label.yml net.yml playbook.yml \
|
||||||
|
test.cache.kubevirt.yml test.kubevirt.yml test.label.kubevirt.yml test.net.kubevirt.yml verify.yml \
|
||||||
|
kubevirt-cache
|
||||||
|
}
|
||||||
|
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
|
||||||
|
|
||||||
|
# Run the tests
|
||||||
ansible-inventory -i test.kubevirt.yml -y --list --output empty.yml "$@"
|
ansible-inventory -i test.kubevirt.yml -y --list --output empty.yml "$@"
|
||||||
|
|
||||||
ansible-playbook playbook.yml "$@"
|
ansible-playbook playbook.yml "$@"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
plugin: kubevirt.core.kubevirt
|
plugin: kubevirt.core.kubevirt
|
||||||
name: test
|
name: test
|
||||||
namespaces:
|
namespaces:
|
||||||
- default
|
- {{ NAMESPACE }}
|
||||||
create_groups: true
|
create_groups: true
|
||||||
cache: true
|
cache: true
|
||||||
cache_plugin: ansible.builtin.jsonfile
|
cache_plugin: ansible.builtin.jsonfile
|
||||||
@@ -2,5 +2,5 @@
|
|||||||
plugin: kubevirt.core.kubevirt
|
plugin: kubevirt.core.kubevirt
|
||||||
name: test
|
name: test
|
||||||
namespaces:
|
namespaces:
|
||||||
- default
|
- {{ NAMESPACE }}
|
||||||
create_groups: true
|
create_groups: true
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
plugin: kubevirt.core.kubevirt
|
plugin: kubevirt.core.kubevirt
|
||||||
namespaces:
|
namespaces:
|
||||||
- default
|
- {{ NAMESPACE }}
|
||||||
create_groups: true
|
create_groups: true
|
||||||
label_selector: app=test
|
label_selector: app=test
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
plugin: kubevirt.core.kubevirt
|
plugin: kubevirt.core.kubevirt
|
||||||
namespaces:
|
namespaces:
|
||||||
- default
|
- {{ NAMESPACE }}
|
||||||
create_groups: true
|
create_groups: true
|
||||||
network_name: bridge-network
|
network_name: bridge-network
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
- name: Assert empty inventory
|
- name: Assert empty inventory
|
||||||
ansible.builtin.assert:
|
ansible.builtin.assert:
|
||||||
that:
|
that:
|
||||||
- inv_empty['all'] is not defined or inv_empty['all']['children']['test']['children']['namespace_default']['hosts'] is not defined
|
- inv_empty['all'] is not defined or inv_empty['all']['children']['test']['children']['namespace_{{ NAMESPACE | replace("-", "_") }}']['hosts'] is not defined
|
||||||
- name: Read inventory after VM creation
|
- name: Read inventory after VM creation
|
||||||
ansible.builtin.include_vars:
|
ansible.builtin.include_vars:
|
||||||
file: all.yml
|
file: all.yml
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
that:
|
that:
|
||||||
- inv_all['all']['children']['label_app_test']['hosts'] | length == 1
|
- inv_all['all']['children']['label_app_test']['hosts'] | length == 1
|
||||||
- inv_all['all']['children']['label_foo_bar']['hosts'] | length == 1
|
- inv_all['all']['children']['label_foo_bar']['hosts'] | length == 1
|
||||||
- "'default-testvm-stopped' in inv_all['all']['children']['test']['children']['namespace_default']['hosts']"
|
- "'{{ NAMESPACE }}-testvm-stopped' in inv_all['all']['children']['test']['children']['namespace_{{ NAMESPACE | replace("-", "_") }}']['hosts']"
|
||||||
- name: Read filtered inventory
|
- name: Read filtered inventory
|
||||||
ansible.builtin.include_vars:
|
ansible.builtin.include_vars:
|
||||||
file: label.yml
|
file: label.yml
|
||||||
Reference in New Issue
Block a user