<div dir="ltr"><div>Hi All,</div><div><br></div><div>after using this procedure some days I found some "bad" side effects.<br>The most critical one for me was: </div><div>FAI is killed and nobody knows that there is a device / server that has failed with installation.</div><div>(This of course happens mainly if you are using FAI in an automated environment without somebody starting FAI manually)</div><div><br></div><div>After some thinking I came across a better (and more FAI fashion) solution which I of course want to share:<br><br>if any of these invalid class combinations is defined my scripts checks for this and sets a new class:<br>ERRORCLASS </div><div><br></div><div>This class contains a single hook which skips all other tasks except the ones required for logging and correct FAI working.<br>Based on this no bad action is performed during installation and I still have fully functional logging/reporting process.<br>This is how the hook (<a href="http://action.ERRORCLASS.sh">action.ERRORCLASS.sh</a>) looks like:<br><br></div><div><i>#! /bin/bash<br># version: 2019.11.01<br># author: Martin Kraemer, <a href="mailto:mk.maddin@gmail.com">mk.maddin@gmail.com</a><br># description: skip all tasks that change the system - keep only logging etc.<br><br>##--write an error message for logging<br>>&2 echo "$0: error: error within class configuration"<br><br>#skiptask confdir<br>#skiptask setup<br>#skiptask defclass<br>#skiptask defvar<br>#skiptsk action<br>skiptask sysinfo<br>skiptask inventory<br>#skiptask install<br>#skiptask dirinstall<br>#skiptask softupdate<br>skiptask partition<br>skiptask mountdisks<br>skiptask extrbase<br>skiptask debconf<br>skiptask repository<br>skiptask updatebase<br>skiptask instsoft<br>skiptask configure<br>skiptask tests<br>#skiptask finish<br>#skiptask chboot<br>#skiptask savelog<br>#skiptask faiend</i><br></div><div><br><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Am Sa., 26. Okt. 2019 um 22:02 Uhr schrieb Martin Krämer <<a href="mailto:mk.maddin@gmail.com">mk.maddin@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Thomas,<br>
<br>
Thanks for your Investigation.<br>
Yes - I was not able to find any related changes, too.<br>
<br>
Unfortunately as you already expected task_error does not end the full process tree - only fai-class.<br>
Never the less it helped me to find a good workaround which I use as follows:<br>
<br>
>&2 echo "error: my critical message"<br>
(kill -9 $PPID &)<br>
task_error 123<br>
<br>
Kind Regards<br>
<br>
Martin Krämer<br>
<br>
> On 26. Oct 2019, at 19:36, Thomas Lange <<a href="mailto:lange@informatik.uni-koeln.de" target="_blank">lange@informatik.uni-koeln.de</a>> wrote:<br>
> <br>
> Hi Martin,<br>
> <br>
> I can find no change that causes a change in the behaviour for that<br>
> between 5.8.1 and the newest FAI version. As you pointed out an "exit X"<br>
> in a .sh script causes fai-class to stop defining more classes. You<br>
> can try to set an error code inside a .sh file by using a call to<br>
> task_error xxx. I'm not sure if this will work, since fai-class runs in a<br>
> subprocess.<br>
> After looking into the code it seems that fai-class almost always ends<br>
> with exit 0.<br>
> <br>
> -- <br>
> regards Thomas<br>
</blockquote></div></div>