From 48d6b6303049eb9c3c7833fbf69f3f8ac4f144a2 Mon Sep 17 00:00:00 2001 From: xu yang Date: Thu, 18 Apr 2024 16:18:17 -0600 Subject: [PATCH] Add tests for new iPXE template variables Signed-off-by: Jonathon Anderson --- internal/pkg/warewulfd/provision_test.go | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/internal/pkg/warewulfd/provision_test.go b/internal/pkg/warewulfd/provision_test.go index 27ad6d33..4ef4437a 100644 --- a/internal/pkg/warewulfd/provision_test.go +++ b/internal/pkg/warewulfd/provision_test.go @@ -31,6 +31,7 @@ var provisionSendTests = []struct { {"find grub", "/efiboot/grub.efi", "", 200, "10.10.10.10:9873"}, {"find grub", "/efiboot/grub.efi", "", 404, "10.10.10.11:9873"}, {"find initramfs", "/provision/00:00:00:ff:ff:ff?stage=initramfs", "", 200, "10.10.10.10:9873"}, + {"ipxe test with NetDevs and KernelOverrides", "/provision/00:00:00:00:00:ff?stage=ipxe", "1.1.1 ifname=net:00:00:00:00:00:ff ", 200, "10.10.10.12:9873"}, } func Test_ProvisionSend(t *testing.T) { @@ -51,7 +52,15 @@ nodes: network devices: default: hwaddr: 00:00:00:00:ff:ff - container name: none`) + container name: none + n3: + network devices: + default: + hwaddr: 00:00:00:00:00:ff + device: net + ipxe template: test + kernel: + override: 1.1.1`) assert.NoError(t, err) } assert.NoError(t, conf_file.Sync()) @@ -64,7 +73,8 @@ nodes: { _, err := arp_file.WriteString(`IP address HW type Flags HW address Mask Device 10.10.10.10 0x1 0x2 00:00:00:ff:ff:ff * dummy -10.10.10.11 0x1 0x2 00:00:00:00:ff:ff * dummy`) +10.10.10.11 0x1 0x2 00:00:00:00:ff:ff * dummy +10.10.10.12 0x1 0x2 00:00:00:00:00:ff * dummy`) assert.NoError(t, err) } assert.NoError(t, arp_file.Sync()) @@ -75,6 +85,12 @@ nodes: assert.NoError(t, imageDirErr) defer os.RemoveAll(containerDir) conf.Paths.WWChrootdir = containerDir + + sysConfDir, sysConfDirErr := os.MkdirTemp(os.TempDir(), "ww-test-sysconf-*") + assert.NoError(t, sysConfDirErr) + defer os.RemoveAll(sysConfDir) + conf.Paths.Sysconfdir = sysConfDir + assert.NoError(t, os.MkdirAll(path.Join(containerDir, "suse/rootfs/usr/lib64/efi"), 0700)) { _, err := os.Create(path.Join(containerDir, "suse/rootfs/usr/lib64/efi", "shim.efi")) @@ -90,6 +106,10 @@ nodes: _, err := os.Create(path.Join(containerDir, "suse/rootfs/boot", "initramfs-.img")) assert.NoError(t, err) } + assert.NoError(t, os.MkdirAll(path.Join(conf.Paths.Sysconfdir, "warewulf/ipxe"), 0700)) + { + assert.NoError(t, os.WriteFile(path.Join(conf.Paths.Sysconfdir, "warewulf/ipxe", "test.ipxe"), []byte("{{.KernelOverride}}{{range $devname, $netdev := .NetDevs}}{{if and $netdev.Hwaddr $netdev.Device}} ifname={{$netdev.Device}}:{{$netdev.Hwaddr}} {{end}}{{end}}"), 0600)) + } dbErr := LoadNodeDB() assert.NoError(t, dbErr)