From 6311e330faaefb50ba6c593101535f56321dab6b Mon Sep 17 00:00:00 2001 From: Ivan Lausuch Date: Wed, 28 Jun 2023 16:01:33 +0200 Subject: [PATCH] Prepare two synchronized machines to test PCW PCW is executed in a microos and is setup using ansible. This PR creates the environment for two VMs to test the ansible playbooks and selenium tests. The microos is ready with all the needed packages. https://progress.opensuse.org/issues/130144 --- data/publiccloud/pcw/sshd_config | 2 ++ lib/network_utils.pm | 2 +- tests/publiccloud/ansible_client.pm | 37 ++++++++++++++++++++++++++ tests/publiccloud/ansible_target.pm | 41 +++++++++++++++++++++++++++++ 4 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 data/publiccloud/pcw/sshd_config create mode 100644 tests/publiccloud/ansible_client.pm create mode 100644 tests/publiccloud/ansible_target.pm diff --git a/data/publiccloud/pcw/sshd_config b/data/publiccloud/pcw/sshd_config new file mode 100644 index 000000000000..50d0312c0756 --- /dev/null +++ b/data/publiccloud/pcw/sshd_config @@ -0,0 +1,2 @@ +PubkeyAuthentication yes +PermitRootLogin yes diff --git a/lib/network_utils.pm b/lib/network_utils.pm index c8035893ace0..2732ba480336 100644 --- a/lib/network_utils.pm +++ b/lib/network_utils.pm @@ -60,7 +60,7 @@ sub iface { my ($quantity) = @_; $quantity ||= 1; # bonding_masters showing up in ppc64le jobs in 15-SP5: bsc#1210641 - return script_output('ls /sys/class/net/ | grep -v lo | grep -v bonding_masters | head -' . $quantity); + return script_output('ls /sys/class/net/ | grep -v -e lo -e bonding_masters -e docker | head -' . $quantity); } =head2 can_upload_logs diff --git a/tests/publiccloud/ansible_client.pm b/tests/publiccloud/ansible_client.pm new file mode 100644 index 000000000000..4dae9bdd0e19 --- /dev/null +++ b/tests/publiccloud/ansible_client.pm @@ -0,0 +1,37 @@ +use base "consoletest"; +use serial_terminal 'select_serial_terminal'; +use strict; +use warnings; +use testapi; +use mmapi; +use utils qw(zypper_call); +use network_utils qw(setup_static_network); +use lockapi; + +sub run { + my ($self, $args) = @_; + select_serial_terminal; + + record_info('system', script_output('cat /etc/os-release')); + setup_static_network(ip => '10.0.2.15/15', gw => '10.0.2.2'); #, iface => 'eth0' + assert_script_run('echo "10.0.2.20 microos" >> /etc/hosts'); + zypper_call('in -y iputils git'); + + assert_script_run('mkdir /root/.ssh'); + assert_script_run('curl -f -v ' . autoinst_url . '/data/slenkins/ssh/id_rsa > /root/.ssh/id_rsa'); + assert_script_run('chmod 600 /root/.ssh/id_rsa'); + + my $children = get_children(); + my $child_id = (keys %$children)[0]; + mutex_wait('target_is_ready', $child_id); + + # Testing target is accessible + assert_script_run('ping -c 1 microos'); + assert_script_run('ssh -v -o StrictHostKeyChecking=accept-new root@microos cat /etc/os-release'); + + mutex_create 'job_completed'; + + wait_for_children; +} + +1; diff --git a/tests/publiccloud/ansible_target.pm b/tests/publiccloud/ansible_target.pm new file mode 100644 index 000000000000..c04dfd590ec1 --- /dev/null +++ b/tests/publiccloud/ansible_target.pm @@ -0,0 +1,41 @@ +use base "consoletest"; +use serial_terminal 'select_serial_terminal'; +use transactional qw(trup_call process_reboot); +use strict; +use warnings; +use testapi; +use lockapi; +use mm_network qw(setup_static_mm_network); +use utils qw(zypper_call); + +sub run { + my ($self, $args) = @_; + select_serial_terminal; + record_info('system', script_output('cat /etc/os-release')); + record_info('device', script_output('nmcli -t device')); + + setup_static_mm_network('10.0.2.20/15'); + + record_info('ip', script_output('ip a')); + record_info('route', script_output('ip r')); + script_run('ping -c 1 10.0.2.15'); + script_run('ping -c 1 download.suse.de'); + + assert_script_run('curl -f -v ' . autoinst_url . '/data/slenkins/ssh/authorized_keys >> /root/.ssh/authorized_keys'); + assert_script_run('curl -f -v ' . autoinst_url . '/data/publiccloud/pcw/sshd_config >/etc/ssh/sshd_config'); + + zypper_call('ar http://download.suse.de/ibs/SUSE:/CA/openSUSE_Tumbleweed/ SUSE_CA'); + zypper_call('--gpg-auto-import-keys ref'); + trup_call('pkg install ca-certificates-suse htop iftop iotop atop telnet nmap jq git rsync wget parted tcpdump screen sqlite3 fortune iputils nginx dehydrated dehydrated-nginx podman podman-cni-config cockpit cockpit-podman toolbox python3-selinux'); + process_reboot(trigger => 1); + + script_run('systemctl restart sshd'); + sleep 10; + assert_script_run('systemctl status sshd'); + mutex_create 'target_is_ready'; + + assert_script_run('ping -c 1 10.0.2.15'); + mutex_wait 'job_completed'; +} + +1;