mirror of
https://github.com/kubevirt/kubevirt.core.git
synced 2026-03-26 19:03:16 +00:00
51 lines
1.6 KiB
Bash
Executable File
51 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eux
|
|
|
|
export ANSIBLE_CALLBACKS_ENABLED=ansible.posix.profile_tasks
|
|
export ANSIBLE_INVENTORY_ENABLED=kubevirt.core.kubevirt
|
|
export ANSIBLE_HOST_KEY_CHECKING=False
|
|
|
|
if [ -f "extra_vars.sh" ]; then
|
|
source extra_vars.sh
|
|
fi
|
|
|
|
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 "$@"
|
|
|
|
# Retry connection to VM until a login is possible
|
|
# This is necessary since wait_for is not enough to wait for logins to be possible.
|
|
# wait_for is only able to wait until sshd accepts connections.
|
|
retries=0
|
|
while ! ansible-playbook wait_for_vm.yml -i test.kubevirt.yml --private-key=files/testkey "$@"; do
|
|
if [ "$retries" -ge "10" ]; then
|
|
echo "Maximum retries reached, giving up"
|
|
exit 1
|
|
fi
|
|
echo "Failed to wait for VM, retrying..."
|
|
sleep 10
|
|
((retries+=1))
|
|
done
|
|
|
|
ansible-playbook verify.yml --diff -i test.kubevirt.yml --private-key=files/testkey "$@"
|