mirror of
https://github.com/kubevirt/kubevirt.core.git
synced 2026-03-26 19:03:16 +00:00
Merge pull request #130 from 0xFelix/test-in-ns
Run integration tests in random namespaces
This commit is contained in:
12
.gitignore
vendored
12
.gitignore
vendored
@@ -147,8 +147,20 @@ kubevirt.core
|
||||
/tests/integration/targets/inventory_kubevirt/all.yml
|
||||
/tests/integration/targets/inventory_kubevirt/cache_after.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/label.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/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_info/playbook.yml
|
||||
kubevirt-cache
|
||||
|
||||
@@ -8,19 +8,19 @@
|
||||
kubevirt.core.kubevirt_vm:
|
||||
state: absent
|
||||
name: testvm1
|
||||
namespace: default
|
||||
namespace: {{ NAMESPACE }}
|
||||
wait: true
|
||||
|
||||
- name: Delete another VM
|
||||
kubevirt.core.kubevirt_vm:
|
||||
state: absent
|
||||
name: testvm2
|
||||
namespace: default
|
||||
namespace: {{ NAMESPACE }}
|
||||
wait: true
|
||||
|
||||
- name: Delete the stopped VM
|
||||
kubevirt.core.kubevirt_vm:
|
||||
state: absent
|
||||
name: testvm-stopped
|
||||
namespace: default
|
||||
namespace: {{ NAMESPACE }}
|
||||
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:
|
||||
state: present
|
||||
name: testvm1
|
||||
namespace: default
|
||||
namespace: {{ NAMESPACE }}
|
||||
labels:
|
||||
app: test
|
||||
spec:
|
||||
@@ -26,7 +26,7 @@
|
||||
pod: {}
|
||||
- name: bridge-network
|
||||
multus:
|
||||
networkName: kindexgw
|
||||
networkName: {{ SECONDARY_NETWORK }}
|
||||
volumes:
|
||||
- containerDisk:
|
||||
image: quay.io/containerdisks/centos-stream:9
|
||||
@@ -38,7 +38,7 @@
|
||||
kubevirt.core.kubevirt_vm:
|
||||
state: present
|
||||
name: testvm2
|
||||
namespace: default
|
||||
namespace: {{ NAMESPACE }}
|
||||
labels:
|
||||
foo: bar
|
||||
spec:
|
||||
@@ -57,7 +57,7 @@
|
||||
kubevirt.core.kubevirt_vm:
|
||||
state: present
|
||||
name: testvm-stopped
|
||||
namespace: default
|
||||
namespace: {{ NAMESPACE }}
|
||||
running: false
|
||||
spec:
|
||||
domain:
|
||||
@@ -1,10 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eux
|
||||
set -o pipefail
|
||||
|
||||
export ANSIBLE_CALLBACKS_ENABLED=ansible.posix.profile_tasks
|
||||
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-playbook playbook.yml "$@"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
plugin: kubevirt.core.kubevirt
|
||||
name: test
|
||||
namespaces:
|
||||
- default
|
||||
- {{ NAMESPACE }}
|
||||
create_groups: true
|
||||
cache: true
|
||||
cache_plugin: ansible.builtin.jsonfile
|
||||
@@ -2,5 +2,5 @@
|
||||
plugin: kubevirt.core.kubevirt
|
||||
name: test
|
||||
namespaces:
|
||||
- default
|
||||
- {{ NAMESPACE }}
|
||||
create_groups: true
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
plugin: kubevirt.core.kubevirt
|
||||
namespaces:
|
||||
- default
|
||||
- {{ NAMESPACE }}
|
||||
create_groups: true
|
||||
label_selector: app=test
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
plugin: kubevirt.core.kubevirt
|
||||
namespaces:
|
||||
- default
|
||||
- {{ NAMESPACE }}
|
||||
create_groups: true
|
||||
network_name: bridge-network
|
||||
@@ -11,7 +11,7 @@
|
||||
- name: Assert empty inventory
|
||||
ansible.builtin.assert:
|
||||
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
|
||||
ansible.builtin.include_vars:
|
||||
file: all.yml
|
||||
@@ -21,7 +21,7 @@
|
||||
that:
|
||||
- inv_all['all']['children']['label_app_test']['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
|
||||
ansible.builtin.include_vars:
|
||||
file: label.yml
|
||||
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
|
||||
kubevirt.core.kubevirt_vm:
|
||||
name: testvm
|
||||
namespace: default
|
||||
namespace: {{ NAMESPACE }}
|
||||
labels:
|
||||
app: test
|
||||
instancetype:
|
||||
@@ -27,7 +27,7 @@
|
||||
pod: {}
|
||||
- name: bridge-network
|
||||
multus:
|
||||
networkName: kindexgw
|
||||
networkName: {{ SECONDARY_NETWORK }}
|
||||
volumes:
|
||||
- containerDisk:
|
||||
image: quay.io/containerdisks/centos-stream:9
|
||||
@@ -36,7 +36,7 @@
|
||||
userData: |-
|
||||
#cloud-config
|
||||
ssh_authorized_keys:
|
||||
- {{ lookup('file', 'testkey.pub') }}
|
||||
- {{ '{{' }} lookup('file', 'testkey.pub') {{ '}}' }}
|
||||
name: cloudinitdisk
|
||||
wait: true
|
||||
wait_timeout: 600
|
||||
@@ -1,14 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eux
|
||||
set -o pipefail
|
||||
|
||||
export ANSIBLE_CALLBACKS_ENABLED=ansible.posix.profile_tasks
|
||||
export ANSIBLE_INVENTORY_ENABLED=kubevirt.core.kubevirt
|
||||
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
|
||||
[ -f files/testkey ] || (ssh-keygen -t rsa -C test@test -f files/testkey -N "")
|
||||
|
||||
# Run the tests
|
||||
ansible-playbook playbook.yml "$@"
|
||||
|
||||
ansible-inventory -i test.kubevirt.yml -y --list "$@"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
plugin: kubevirt.core.kubevirt
|
||||
namespaces:
|
||||
- default
|
||||
- {{ NAMESPACE }}
|
||||
network_name: bridge-network
|
||||
@@ -7,7 +7,7 @@
|
||||
- name: Create a VM
|
||||
kubevirt.core.kubevirt_vm:
|
||||
name: testvm
|
||||
namespace: default
|
||||
namespace: {{ NAMESPACE }}
|
||||
labels:
|
||||
app: test
|
||||
register: recreate
|
||||
@@ -29,7 +29,7 @@
|
||||
- name: Delete a VM
|
||||
kubevirt.core.kubevirt_vm:
|
||||
name: testvm
|
||||
namespace: default
|
||||
namespace: {{ NAMESPACE }}
|
||||
state: absent
|
||||
wait: true
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
- name: Delete a VM
|
||||
kubevirt.core.kubevirt_vm:
|
||||
name: testvm
|
||||
namespace: default
|
||||
namespace: {{ NAMESPACE }}
|
||||
state: absent
|
||||
register: delete
|
||||
- name: Assert module reported no changes
|
||||
@@ -7,14 +7,14 @@
|
||||
- name: Wait up to 900 seconds for port 22 to become open
|
||||
ansible.builtin.wait_for:
|
||||
port: 22
|
||||
host: "{{ hostvars['default-testvm'].ansible_host }}"
|
||||
host: "{{ '{{' }} hostvars['{{ NAMESPACE }}-testvm'].ansible_host {{ '}}' }}"
|
||||
search_regex: OpenSSH
|
||||
delay: 10
|
||||
timeout: 900
|
||||
|
||||
- name: Connect to VM
|
||||
gather_facts: true
|
||||
hosts: default-testvm
|
||||
hosts: {{ NAMESPACE }}-testvm
|
||||
remote_user: cloud-user
|
||||
vars:
|
||||
ansible_python_interpreter: /usr/bin/python3
|
||||
13
tests/integration/targets/kubevirt_vm_info/generate.yml
Normal file
13
tests/integration/targets/kubevirt_vm_info/generate.yml
Normal 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
|
||||
@@ -7,7 +7,7 @@
|
||||
- name: Create a VM
|
||||
kubevirt.core.kubevirt_vm:
|
||||
name: testvm
|
||||
namespace: default
|
||||
namespace: {{ NAMESPACE }}
|
||||
instancetype:
|
||||
name: u1.small
|
||||
preference:
|
||||
@@ -30,7 +30,7 @@
|
||||
- name: Describe a VM
|
||||
kubevirt.core.kubevirt_vm_info:
|
||||
name: testvm
|
||||
namespace: default
|
||||
namespace: {{ NAMESPACE }}
|
||||
register: describe
|
||||
- name: Assert module reported no changes
|
||||
ansible.builtin.assert:
|
||||
@@ -46,7 +46,7 @@
|
||||
- name: Delete a VM
|
||||
kubevirt.core.kubevirt_vm:
|
||||
name: testvm
|
||||
namespace: default
|
||||
namespace: {{ NAMESPACE }}
|
||||
state: absent
|
||||
wait: true
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
- name: Delete a VM
|
||||
kubevirt.core.kubevirt_vm:
|
||||
name: testvm
|
||||
namespace: default
|
||||
namespace: {{ NAMESPACE }}
|
||||
state: absent
|
||||
register: delete
|
||||
- name: Assert module reported no changes
|
||||
@@ -1,7 +1,19 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eux
|
||||
set -o pipefail
|
||||
|
||||
export ANSIBLE_CALLBACKS_ENABLED=ansible.posix.profile_tasks
|
||||
|
||||
NAMESPACE="test-kubevirt-vm-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 "$@"
|
||||
|
||||
Reference in New Issue
Block a user