From b958ce3039a99c7b3f9d79c77bfecddc29469277 Mon Sep 17 00:00:00 2001 From: Michel Jouvin Date: Mon, 31 Oct 2016 19:49:29 +0100 Subject: [PATCH 1/2] aii-ks: fix logging of pre and post script actions for EL7 - Fixes #120 --- aii-ks/src/main/perl/ks.pm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/aii-ks/src/main/perl/ks.pm b/aii-ks/src/main/perl/ks.pm index a855d631..471c5580 100755 --- a/aii-ks/src/main/perl/ks.pm +++ b/aii-ks/src/main/perl/ks.pm @@ -692,8 +692,14 @@ sub log_action { } if ($consolelogging) { + # In EL7, /dev/console doesn't add the carriage return for each line feed (new line) + # resulting in unreadable messages on the console. /dev/pts/0 must be used instead. + # But on prior versions, /dev/pts/0 doesn't exist at installation time and cannot be used. + # The following code allows to use /dev/pts/0 if it exists else to revert to /dev/console. + push(@logactions, "console='/dev/console'"); + push(@logactions, "[ -c /dev/pts/0 ] && console='/dev/pts/0'"); push(@logactions, '# Make sure messages show up on the serial console', - "tail -f $logfile > /dev/console &"); + "tail -f $logfile > \$console &"); } push(@logactions,"drainsleep=$drainsleep"); # add trailing newline From 6f316e36bbcb9c097cb0683326aa0eab72513678 Mon Sep 17 00:00:00 2001 From: Michel Jouvin Date: Wed, 2 Nov 2016 11:03:01 +0100 Subject: [PATCH 2/2] aii-ks: fix unit tests after console fix --- aii-ks/src/test/perl/kickstart_logging.t | 2 +- .../test/perl/kickstart_nologging_just_method_and_protocol.t | 4 ++-- aii-ks/src/test/resources/regexps/pre_noblock_logging | 4 +++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/aii-ks/src/test/perl/kickstart_logging.t b/aii-ks/src/test/perl/kickstart_logging.t index 65f645e5..6a2344da 100644 --- a/aii-ks/src/test/perl/kickstart_logging.t +++ b/aii-ks/src/test/perl/kickstart_logging.t @@ -33,7 +33,7 @@ like($fh, qr{^%packages\s--ignoremissing\s--resolvedeps\n^package\n^package2\n^b # logaction tests my $logaction = NCM::Component::ks::log_action($cfg, 'mylogfile', 1); like($logaction, qr{^exec\s>mylogfile\s2>&1}, 'start with exec redirection'); # no multiline search! -like($logaction, qr{^tail\s-f\smylogfile\s>\s/dev/console\s&}m, 'console logging enabled'); +like($logaction, qr{^tail\s-f\smylogfile\s>\s\$console\s&}m, 'logfile displayed on console'); like($logaction, qr{^wait_for_network\slogserver}m, 'Insert sleep to make sure network is up'); like($logaction, qr{^\(tail\s-f\smylogfile.*?usleep.*?\snc\s-u\slogserver\s514\)\s&$}m, 'netcat udp logsending'); diff --git a/aii-ks/src/test/perl/kickstart_nologging_just_method_and_protocol.t b/aii-ks/src/test/perl/kickstart_nologging_just_method_and_protocol.t index 6ef08035..e2851c67 100644 --- a/aii-ks/src/test/perl/kickstart_nologging_just_method_and_protocol.t +++ b/aii-ks/src/test/perl/kickstart_nologging_just_method_and_protocol.t @@ -33,8 +33,8 @@ my $logaction = NCM::Component::ks::log_action($cfg, 'mylogfile', 1); like($logaction, qr{^exec\s>mylogfile\s2>&1}, 'start with exec redirection'); # no multiline search! # hmm, first test might be too specific in case of subtle changes -unlike($logaction, qr{^tail\s-f\smylogfile\s>\s/dev/console\s&}m, 'no console logging enabled'); -unlike($logaction, qr{/dev/console}, 'no /dev/console at all'); +unlike($logaction, qr{^tail\s-f\smylogfile\s>\s\$console\s&}m, 'no console logging enabled'); +unlike($logaction, qr{\$console}, 'console not defined'); unlike($logaction, qr{^\(tail\s-f\smylogfile.*?usleep.*\)\s&$}m, 'no logsending'); unlike($logaction, qr{usleep}, 'no usleep at all'); diff --git a/aii-ks/src/test/resources/regexps/pre_noblock_logging b/aii-ks/src/test/resources/regexps/pre_noblock_logging index 2888a7da..6af3a9cb 100644 --- a/aii-ks/src/test/resources/regexps/pre_noblock_logging +++ b/aii-ks/src/test/resources/regexps/pre_noblock_logging @@ -2,8 +2,10 @@ Test the logging in the pre section --- --- ^exec >/tmp/pre-log.log 2>&1$ +^console='/dev/console'$ +^\[ -c /dev/pts/0 \] && console='/dev/pts/0'$ ^\# Make sure messages show up on the serial console$ -^tail -f /tmp/pre-log.log > /dev/console &$ +^tail -f /tmp/pre-log.log > \$console &$ ^drainsleep=0$ ^$ ^echo 'Begin of pre section'$