Hello FAI devs,<br><br>As I was looking at the list of FAI classes and dependencies we use for our production, I found that the system was a bit flat and that adding a recursive class declaration would make it more powerful.<br>
<br>I&#39;m attaching a patch to make fai-class work recursively (patch based on FAI 3.2.4). <br><br>This patch modifies the addclass() function to make it recursive, i.e. whenever a new class is added, it checks for the presence of a $classdir/$class file and includes the classes listed there, that way it is done with $classdir/$HOSTNAME. Additionaly, a file named /tmp/fai/parsed_classes is used to store the parsed files in order to prevent loops.<br>
<br>Attached is a graphviz graph (test_class.png) showing the kind of dependencies it allows<br><br>- the $classdir/10-base-classes script dynamiquely declares the DEBIAN_4 class. The $classdir/DEBIAN_4 file is found and contains GRUB, so the GRUB class is defined ;<br>
- &quot;test&quot; is $HOSTNAME given in the kernel arguments. The $classdir/test file contains three classes: HEBEX, KERNEL and PART_CCISS_C0D0_defosof ;<br>- when the HEBEX class is added, a file $classdir/HEBEX is found and parsed, declaring the 4 new classes: BOOT, MBR, NETWORK and CFD ;<br>
<br><br>Eventually, FAI_CLASS contains (# are added commentaries) :<br><br>----<br># DEFAULT<br>DEFAULT<br># Begin 10-base-classes<br>SOPHIA<br>LINUX<br>SOPHIA<br>AMD64<br>DEBIAN<br>DEBIAN_4<br># File /var/lib/fai/config/class/DEBIAN_4 found<br>
GRUB<br># Back to 10-base-classes<br>DEBIAN_4_0<br>DEBIAN_AMD64<br>DEBIAN_4_AMD64<br>DEBIAN_4_0_AMD64<br>SOPHIA_AMD64<br>SOPHIA_DEBIAN<br>SOPHIA_DEBIAN_4<br>SOPHIA_DEBIAN_4_0<br>SOPHIA_DEBIAN_AMD64<br>SOPHIA_DEBIAN_4_AMD64<br>
SOPHIA_DEBIAN_4_0_AMD64<br>SOPHIA_test<br># Begin 25-disk-classes<br>PART_CCISS_C0D0_test<br># Reading $classdir/test<br>HEBEX<br># File /var/lib/fai/config/class/HEBEX found<br>BOOT<br>MBR<br>NETWORK<br>CFD<br># Back to $classdir/test<br>
KERNEL<br>PART_CCISS_C0D0_defosof<br># $HOSTNAME<br>test<br># LAST<br>LAST<br>----<br><br><br>I&#39;d be happy if some of you can test the patch and give some feedback.<br><br><br>Cheers,<br><br><br>Raphaël<br><br><br><br>
<br><br><br>