Project

General

Profile

Actions

action #40364

closed

[functional][y] boot_from_pxe.pm broken host installation by autoyast method for virtualization test on ipmi backend.

Added by XGWang0 over 5 years ago. Updated over 5 years ago.

Status:
Resolved
Priority:
High
Assignee:
Category:
-
Target version:
-
Start date:
2018-08-29
Due date:
2018-09-11
% Done:

0%

Estimated time:
1.00 h
Difficulty:

Description

The PR ([[https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/5537]]) caused hang to host installation by autoyast method on ipmi backend, the root cause is subroutine bootmenu_default_params and autoyast_boot_params both added autoyast= kernel parameters for host installation and second subroutine inputted incorrect url address for autoyast file.

Related code content for both subroutine:
=========bootmenu_default_params==============
377 if (!get_var("NICEVIDEO")) {
378 if (is_caasp) {
379 bootmenu_type_console_params $args{baud_rate};
380 }
381 elsif (!is_jeos) {
382 # make plymouth go graphical
383 type_string_very_slow "plymouth.ignore-serial-consoles " unless $args{pxe};
384 type_string_very_slow "linuxrc.log=/dev/$serialdev ";
385 bootmenu_type_console_params $args{baud_rate};
386 # Do not assert on pxe boot as it's unreliable due to multiline input
387 assert_screen "inst-consolesettingstyped", 30 unless $args{pxe};
388
389 # Enable linuxrc core dumps https://en.opensuse.org/SDB:Linuxrc#p_linuxrccore
390 type_string_very_slow "linuxrc.core=/dev/$serialdev ";
391 type_string_very_slow "linuxrc.debug=4,trace ";
392 }
393 bootmenu_type_extra_boot_params; # This api type autoyast= to boot prompt
394 }
395 }

=========autoyast_boot_params==============
491 sub autoyast_boot_params {
492 my $ay_var = get_var("AUTOYAST");
493 return '' unless $ay_var;
494
495 my $autoyast_args = 'autoyast=';
496 # In case of SUPPORT_SERVER, profiles are available on another VM
497 if (get_var('USE_SUPPORT_SERVER')) {
498 my $proto = get_var("PROTO") || 'http';
499 $autoyast_args .= "$proto://10.0.2.1/";
500 $autoyast_args .= 'data/' if $ay_var !~ /aytests\//;
501 $autoyast_args .= $ay_var;
502 } elsif ($ay_var !~ /slp$|:\/\//) {
503 $autoyast_args .= data_url($ay_var); # Getting profile from the worker as openQA asset
504 } else {
505 $autoyast_args .= $ay_var; # Getting profile by direct url or slp
506 }
507 return $autoyast_args . " ";
508 }

Failed cases url : https://openqa.suse.de/tests/2007109 ,https://openqa.suse.de/tests/2007108, https://openqa.suse.de/tests/2007152
PR of github : https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/5537

Actions #1

Updated by cachen over 5 years ago

  • Project changed from 46 to openQA Tests
Actions #2

Updated by XGWang0 over 5 years ago

XGWang0 wrote:

The PR ([[https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/5537]]) caused hang to host installation by autoyast method on ipmi backend, the root cause is subroutine bootmenu_default_params and autoyast_boot_params both added autoyast= kernel parameters for host installation and second subroutine inputted incorrect url address for autoyast file.

Related code content for both subroutine:
=========bootmenu_default_params==============
377 if (!get_var("NICEVIDEO")) {
378 if (is_caasp) {
379 bootmenu_type_console_params $args{baud_rate};
380 }
381 elsif (!is_jeos) {
382 # make plymouth go graphical
383 type_string_very_slow "plymouth.ignore-serial-consoles " unless $args{pxe};
384 type_string_very_slow "linuxrc.log=/dev/$serialdev ";
385 bootmenu_type_console_params $args{baud_rate};
386 # Do not assert on pxe boot as it's unreliable due to multiline input
387 assert_screen "inst-consolesettingstyped", 30 unless $args{pxe};
388
389 # Enable linuxrc core dumps https://en.opensuse.org/SDB:Linuxrc#p_linuxrccore
390 type_string_very_slow "linuxrc.core=/dev/$serialdev ";
391 type_string_very_slow "linuxrc.debug=4,trace ";
392 }
393 bootmenu_type_extra_boot_params; # This api type autoyast= to boot prompt
394 }
395 }

=========autoyast_boot_params==============
491 sub autoyast_boot_params {
492 my $ay_var = get_var("AUTOYAST");
493 return '' unless $ay_var;
494
495 my $autoyast_args = 'autoyast=';
496 # In case of SUPPORT_SERVER, profiles are available on another VM
497 if (get_var('USE_SUPPORT_SERVER')) {
498 my $proto = get_var("PROTO") || 'http';
499 $autoyast_args .= "$proto://10.0.2.1/";
500 $autoyast_args .= 'data/' if $ay_var !~ /aytests\//;
501 $autoyast_args .= $ay_var;
502 } elsif ($ay_var !~ /slp$|:\/\//) {
503 $autoyast_args .= data_url($ay_var); # Getting profile from the worker as openQA asset
504 } else {
505 $autoyast_args .= $ay_var; # Getting profile by direct url or slp
506 }
507 return $autoyast_args . " ";
508 }

Failed cases url : https://openqa.suse.de/tests/2007109 ,https://openqa.suse.de/tests/2007108, https://openqa.suse.de/tests/2007152
PR of github : https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/5537

Above failed cases set AUTOYAST=1 and EXTRABOOTPARAMS=autoyast=http://xxxxxx.xml for host installation by autoyast method, these two parameters will cause boot_from_pxe.pm add autoyast related boot parameter twice and subroutine autoyast_boot_params did not concatenate correct autoyast boot parameter.

Actions #3

Updated by riafarov over 5 years ago

  • Subject changed from boot_from_pxe.pm broken host installation by autoyast method for virtualization test on ipmi backend. to [functional][y] boot_from_pxe.pm broken host installation by autoyast method for virtualization test on ipmi backend.
  • Due date set to 2018-09-11
  • Assignee set to riafarov
Actions #4

Updated by riafarov over 5 years ago

Coping explanation from PR comment:
ok, actually the problem is that there is EXTRABOOTPARAMS set with autoyast, which is not the way it's designed to work. Profile with full url or under data folder can be provided in AUTOYAST variable. So we type EXTRABOOTPARAMS and the trying to get url for '1' as a profile name, which is wrong. Sorry, that I haven't expected such a use case. I will update test suite settings once I have verification run.

I've found 7 test suites which are affected by the same issue and require reconfiguration. I will clone them with proper set of parameters, so we get results for current build.
Please, use AUTOYAST setting to specify profiles and not EXTRABOOTPARAMS which is designed to be used for parameters which are specific for the particular hardware and not common boot parameters.

Actions #5

Updated by riafarov over 5 years ago

  • Status changed from New to Feedback
Actions #6

Updated by riafarov over 5 years ago

  • Estimated time set to 1.00 h
Actions #7

Updated by cachen over 5 years ago

The test seems still pending in autoyast->installation step https://openqa.nue.suse.com/tests/2009008#live

Is it because the boot_from_pxe.pm:

 if (check_var('SCC_REGISTER', 'installation') && !(check_var('VIRT_AUTOTEST', 1) && check_var('INSTALL_TO_OTHERS', 1))) {
     type_string(registration_bootloader_cmdline, $type_speed);
 }

 specific_bootmenu_params;

 send_key 'ret';
 save_screenshot;
Actions #8

Updated by riafarov over 5 years ago

@cachen, yep, found it out too, fix is merged: https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/5666
I've re-triggered the jobs, should be fine now.

Actions #10

Updated by riafarov over 5 years ago

  • Status changed from Feedback to Resolved

Please, feel free to reopen in case something still doesn't work.

Actions #11

Updated by cachen over 5 years ago

@Rodion, it works, thanks for your fixing.

Actions #12

Updated by riafarov over 5 years ago

Glad to hear, thanks!

Actions

Also available in: Atom PDF