allow failure when uploading anaconda logs

Summary:
This requires a PR I sent upstream:
https://github.com/os-autoinst/os-autoinst/pull/490
This change is in os-autoinst -10. However, with older packages
it won't crash or anything, it'll just behave as before.

With the change, this allows log upload to fail, so if one of
the logs is missing, the hook doesn't immediately die and fail
to upload the rest of the logs. Various anaconda logs are not
always present: the DNF logs are not present for Atomic or live
installs, and the X.log and syslog are not present for live
installs. Adding a fail-tolerant mode to upstream upload_logs
seemed a better option than testing for the existence of each
log file prior to uploading it, or adding a bunch of GET_VAR
calls to try and figure out which log files 'should' exist.

Test Plan:
Run an Atomic or live install test that fails, and
check what logs get uploaded. You can just test a current
Rawhide Atomic installer ISO, as they're crashing right now.
Without this patch (and the os-autoinst update) the hook dies
when it tries to upload dnf.log, so the traceback and /var/tmp
archive don't get uploaded; with this patch all the present
logs should get uploaded. Compare:
https://openqa.fedoraproject.org/tests/14834
https://openqa.stg.fedoraproject.org/tests/15371
(I tested this out on staging).

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D834
This commit is contained in:
Adam Williamson 2016-05-06 13:44:06 -07:00
parent 92ba718de3
commit 9871c48433

View File

@ -20,15 +20,15 @@ sub post_fail_hook {
$self->root_console(check=>0);
if (check_screen "root_console", 10) {
upload_logs "/tmp/X.log";
upload_logs "/tmp/anaconda.log";
upload_logs "/tmp/packaging.log";
upload_logs "/tmp/storage.log";
upload_logs "/tmp/syslog";
upload_logs "/tmp/program.log";
upload_logs "/tmp/dnf.log";
upload_logs "/tmp/dnf.librepo.log";
upload_logs "/tmp/dnf.rpm.log";
upload_logs "/tmp/X.log", failok=>1;
upload_logs "/tmp/anaconda.log", failok=>1;
upload_logs "/tmp/packaging.log", failok=>1;
upload_logs "/tmp/storage.log", failok=>1;
upload_logs "/tmp/syslog", failok=>1;
upload_logs "/tmp/program.log", failok=>1;
upload_logs "/tmp/dnf.log", failok=>1;
upload_logs "/tmp/dnf.librepo.log", failok=>1;
upload_logs "/tmp/dnf.rpm.log", failok=>1;
if ($has_traceback) {
# Upload Anaconda traceback logs
@ -46,7 +46,7 @@ sub post_fail_hook {
# Upload anaconda core dump, if there is one
script_run "ls /tmp/anaconda.core.* && tar czf /tmp/anaconda.core.tar.gz /tmp/anaconda.core.*";
upload_logs "/tmp/anaconda.core.tar.gz";
upload_logs "/tmp/anaconda.core.tar.gz", failok=>1;
}
else {
save_screenshot;