Package: fai-client
Version: 5.8.4~bpo9+2
Severity: normal

Dear Maintainer,

Today I discovered that a task error raised in a class definition
script does not stop the installation/softupdate.

In my example (see log excerpt below) the class script
/var/lib/fai/config/class/95-dep.sh sets an error calling
"task_error 800". FAI detects this and uploads log files, however then
continues with the next task (the remaining class definition scripts
are not executed). The softupdate continues as usual and the log files
are finally uploaded again (causing a conflict).

Looking at the code, `/usr/lib/fai/subroutines` apparently calls
`fai-class` but does not check if a fatal task error was set (or if
`fai-class` exited with error). As far as I can tell, the issue still
seems to be present in version 5.9.4.

Thanks for your help!

Best,
Maximilian


-- fai.log

             -------------------------------------------------
                   Fully Automatic Installation  -  FAI

                   5.8.4~bpo9+2   (c) 1999-2019
               Thomas Lange  <la...@informatik.uni-koeln.de>
             -------------------------------------------------
Starting FAI execution - 20200520_140231

Using configuration files from /etc/fai
Calling task_confdir
FAI_FLAGS: 
Setting SERVER=fai.example.org. Value extracted from FAI_CONFIG_SRC.
Monitoring to server fai-monitor.example.org enabled.
FAI_CONFIG_SRC is set to git+ssh://f...@fai.example.org/srv/git/fai.git
Updating git copy in /var/lib/fai/config
HEAD is now at 12345678... foobar
Source hook: setup.DEFAULT.sh
hostname: examplehost
setup.DEFAULT.sh     OK.
Calling task_setup
FAI_FLAGS: 
Calling task_defclass
fai-class: Defining classes.
Executing /var/lib/fai/config/class/10-base-classes.sh.
./10-base-classes.sh defined classes:  LINUX AMD64 DHCPC
10-base-classes.sh   OK.
...
Executing /var/lib/fai/config/class/70-custom-classes.sh.
70-custom-classes.sh OK.
Executing /var/lib/fai/config/class/95-dep.sh.
FATAL ERROR: class ABC conflicts with DEF
Error in task defclass. Code: 800
Traceback: task_error conflicts source main
Calling hook: savelog.DEFAULT
'//var/log/fai/last-localhost' -> 'localhost/last'
savelog.DEFAULT      OK.
Source hook: savelog.ADBASE.sh
savelog.ADBASE.sh    OK.
Save log files via ssh to 
f...@fai.example.org:log//examplehost/softupdate-2020-05-20T14:02:33+02:00
FATAL ERROR. Installation stopped.
List of all classes:  DEFAULT LINUX AMD64 DHCPC GRUB ARCH_PC DEBIAN STRETCH ABC 
DEF
Calling task_defvar
Executing DEBIAN.var
...

Reply via email to