diff --git a/schedule/microos/supportserver.yaml b/schedule/microos/supportserver.yaml new file mode 100644 index 000000000000..6d9db73bc09e --- /dev/null +++ b/schedule/microos/supportserver.yaml @@ -0,0 +1,13 @@ +name: microos_supportserver +description: > + Create a support server for multimachine tests +conditional_schedule: + ssh_enroll: + SSH_ENROLL_PAIR: + '1': + - jeos/ssh_enroll +schedule: + - support_server/login + - support_server/setup + - '{{ssh_enroll}}' + - support_server/wait_children diff --git a/tests/jeos/firstrun.pm b/tests/jeos/firstrun.pm index 96cef920b3a5..e2f8879268ac 100644 --- a/tests/jeos/firstrun.pm +++ b/tests/jeos/firstrun.pm @@ -12,6 +12,7 @@ use base "opensusebasetest"; use strict; use warnings; +use lockapi qw(mutex_create mutex_wait); use testapi; use version_utils qw(is_jeos is_sle is_tumbleweed is_leap is_opensuse is_microos is_sle_micro is_vmware is_bootloader_sdboot is_community_jeos); use Utils::Architectures; @@ -273,10 +274,24 @@ sub run { assert_screen 're-encrypt-finished', 600; } - # Skip ssh key enrollment (for now) unless (is_sle || is_sle_micro('<=6.0') || is_leap) { assert_screen 'jeos-ssh-enroll-or-not', 120; - send_key 'n'; + + if (get_var('SSH_ENROLL_PAIR')) { + mutex_wait 'dhcp'; + sleep 30; # make sure we have an IP + mutex_create 'SSH_ENROLL_PAIR'; + send_key 'y'; + assert_screen 'jeos-ssh-enroll-pairing', 600; + assert_screen 'jeos-ssh-enroll-paired', 120; + send_key 'y'; + assert_screen 'jeos-ssh-enroll-import', 120; + send_key 'y'; + assert_screen 'jeos-ssh-enroll-imported', 120; + send_key 'ret'; + } else { + send_key 'n'; + } } if (is_tumbleweed || is_sle_micro('>6.0') || is_microos) { diff --git a/tests/jeos/ssh_enroll.pm b/tests/jeos/ssh_enroll.pm new file mode 100644 index 000000000000..b2ecfd93cfb3 --- /dev/null +++ b/tests/jeos/ssh_enroll.pm @@ -0,0 +1,27 @@ +# SUSE's openQA tests +# +# Copyright 2024 SUSE LLC +# SPDX-License-Identifier: FSFAP + +# Summary: Run a ssh client to test firstboot wizard ssh enrollment feature +# Maintainer: QE-C team + +use base "consoletest"; +use strict; +use warnings; +use testapi; +use lockapi qw(mutex_wait); +use mmapi; + +sub run { + select_console 'root-console'; + script_run("ssh-keygen -t rsa -b 2048 -f id_rsa -N ''"); + + my $children = get_children(); + my $child_id = (keys %$children)[0]; + mutex_wait('SSH_ENROLL_PAIR', $child_id); + + script_run("ssh -i id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root\@10.0.2.15"); +} + +1;