mirror of
https://github.com/kubevirt/kubevirt.core.git
synced 2026-03-26 19:03:16 +00:00
fix(tests,kubevirt_vm): Make waiting for VM more robust
This changes the runme.sh of the kubevirt_vm integration tests to retry the connection to the VM until a login is possible. This is necessary since it is not possible with Ansible alone to retry a task in case the connection failed with the unreachable status. This can happen when the sshd of the VM already accepts connections but a login is not yet possible because the VM is still booting up. Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
This commit is contained in:
@@ -13,4 +13,18 @@ ansible-playbook playbook.yml "$@"
|
||||
|
||||
ansible-inventory -i test.kubevirt.yml -y --list "$@"
|
||||
|
||||
ansible-playbook verify.yml -i test.kubevirt.yml --private-key=files/testkey "$@"
|
||||
# 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 "$@"
|
||||
|
||||
@@ -1,27 +1,4 @@
|
||||
---
|
||||
- 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-testvm'].ansible_host }}"
|
||||
delay: 30
|
||||
timeout: 900
|
||||
|
||||
- name: Connect to VM
|
||||
gather_facts: true
|
||||
hosts: default-testvm
|
||||
remote_user: cloud-user
|
||||
vars:
|
||||
ansible_python_interpreter: /usr/bin/python3
|
||||
tasks:
|
||||
- name: Print VM facts
|
||||
ansible.builtin.debug:
|
||||
var: ansible_facts
|
||||
|
||||
- name: Verify creation with existing VM
|
||||
connection: local
|
||||
gather_facts: false
|
||||
|
||||
24
tests/integration/targets/kubevirt_vm/wait_for_vm.yml
Normal file
24
tests/integration/targets/kubevirt_vm/wait_for_vm.yml
Normal file
@@ -0,0 +1,24 @@
|
||||
---
|
||||
- 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-testvm'].ansible_host }}"
|
||||
search_regex: OpenSSH
|
||||
delay: 10
|
||||
timeout: 900
|
||||
|
||||
- name: Connect to VM
|
||||
gather_facts: true
|
||||
hosts: default-testvm
|
||||
remote_user: cloud-user
|
||||
vars:
|
||||
ansible_python_interpreter: /usr/bin/python3
|
||||
tasks:
|
||||
- name: Print VM facts
|
||||
ansible.builtin.debug:
|
||||
var: ansible_facts
|
||||
Reference in New Issue
Block a user