2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-10-21 07:08:12 +00:00

test(xcat-core): capture the install source shim in the Genesis boot script

The shell, discover, standby and runcmd destinies load the Genesis kernel
through the same UEFI script as an osimage kernel. setstate asks for a shim
with the os of the node, so an install source answers for a kernel that no
distribution signed.

The new node keeps the install source of the first node of the test, so both
shims are on disk and the order decides the answer. Two assertions of twelve
fail: the script names /install/alma9.8/x86_64/EFI/BOOT/BOOTX64.EFI.

The nodeset helper takes currstate and provmethod, so the node reads as the
shell destiny it is.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
This commit is contained in:
Daniel Hilst
2026-10-07 14:49:28 -03:00
parent 24701cc23e
commit ebcc2e1d0e
+27 -3
View File
@@ -77,9 +77,13 @@ sub install_source {
sub nodeset {
my ( $plugin, $node, %attrib ) = @_;
$rows{noderes}{$node} = { tftpdir => $tftp, netboot => $plugin };
$rows{chain}{$node} = { currstate => 'install rhels9-x86_64-compute' };
$rows{nodetype}{$node} =
{ provmethod => 'install', os => $attrib{os}, arch => $attrib{arch} };
$rows{chain}{$node} =
{ currstate => $attrib{currstate} || 'install rhels9-x86_64-compute' };
$rows{nodetype}{$node} = {
provmethod => exists( $attrib{provmethod} ) ? $attrib{provmethod} : 'install',
os => $attrib{os},
arch => $attrib{arch},
};
my $subreq = sub {
my ($request) = @_;
$request->{bootparams}{$node} = [ { map { $_ => $attrib{$_} } qw(kernel initrd kcmdline) } ]
@@ -163,6 +167,26 @@ like(
'the install source answers even when the shim of ipxe-xcat is also on disk'
);
# The shell, discover, standby and runcmd destinies load the Genesis kernel through the same UEFI
# script. No distribution signs that kernel, so the vendor certificate of an install source cannot
# verify it and only the shim of ipxe-xcat can. cn08 keeps the install source of cn01, which does
# carry a shim.
nodeset(
ipxe => 'cn08',
os => 'alma9.8', arch => 'x86_64',
currstate => 'shell',
provmethod => '',
kernel => kernel_with_efistub('xcat/genesis.kernel.x86_64'),
initrd => 'xcat/genesis.fs.x86_64.gz', kcmdline => 'quiet destiny=shell',
);
like(
script('xcat/ipxe/nodes/cn08.uefi'),
ipxe_shim_line('/tftpboot/xcat/ipxe/x86_64-sb/shimx64.efi'),
'a node that loads the Genesis kernel names the shim of ipxe-xcat'
);
unlike( script('xcat/ipxe/nodes/cn08.uefi'), qr{^shim \S*/install/}m,
'and never the shim of an install source, which signs no Genesis kernel' );
# ppc64le has no UEFI shim, and netboot=xnba loads an unsigned loader that Secure Boot refuses.
nodeset(
ipxe => 'cn04',