Merge --kerneloverride into --kernelversion
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
This commit is contained in:
committed by
Christian Goll
parent
8f21d54243
commit
a844379bc5
@@ -8,26 +8,6 @@ import (
|
||||
"github.com/warewulf/warewulf/internal/pkg/node"
|
||||
)
|
||||
|
||||
func NodeKernelOverride(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
|
||||
var kernelPaths []string
|
||||
registry, err := node.New()
|
||||
if err != nil {
|
||||
return kernelPaths, cobra.ShellCompDirectiveNoFileComp
|
||||
}
|
||||
nodes := hostlist.Expand(args)
|
||||
for _, id := range nodes {
|
||||
if node_, err := registry.GetNode(id); err != nil {
|
||||
continue
|
||||
} else if node_.ContainerName != "" {
|
||||
kernels := kernel.FindKernels(node_.ContainerName)
|
||||
for _, kernel_ := range kernels {
|
||||
kernelPaths = append(kernelPaths, kernel_.Path)
|
||||
}
|
||||
}
|
||||
}
|
||||
return kernelPaths, cobra.ShellCompDirectiveNoFileComp
|
||||
}
|
||||
|
||||
func NodeKernelVersion(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
|
||||
var kernelVersions []string
|
||||
registry, err := node.New()
|
||||
@@ -41,32 +21,13 @@ func NodeKernelVersion(cmd *cobra.Command, args []string, toComplete string) ([]
|
||||
} else if node_.ContainerName != "" {
|
||||
kernels := kernel.FindKernels(node_.ContainerName)
|
||||
for _, kernel_ := range kernels {
|
||||
kernelVersions = append(kernelVersions, kernel_.Version())
|
||||
kernelVersions = append(kernelVersions, kernel_.Version(), kernel_.Path)
|
||||
}
|
||||
}
|
||||
}
|
||||
return kernelVersions, cobra.ShellCompDirectiveNoFileComp
|
||||
}
|
||||
|
||||
func ProfileKernelOverride(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
|
||||
var kernelPaths []string
|
||||
registry, err := node.New()
|
||||
if err != nil {
|
||||
return kernelPaths, cobra.ShellCompDirectiveNoFileComp
|
||||
}
|
||||
for _, id := range args {
|
||||
if profile, err := registry.GetProfile(id); err != nil {
|
||||
continue
|
||||
} else if profile.ContainerName != "" {
|
||||
kernels := kernel.FindKernels(profile.ContainerName)
|
||||
for _, kernel_ := range kernels {
|
||||
kernelPaths = append(kernelPaths, kernel_.Path)
|
||||
}
|
||||
}
|
||||
}
|
||||
return kernelPaths, cobra.ShellCompDirectiveNoFileComp
|
||||
}
|
||||
|
||||
func ProfileKernelVersion(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
|
||||
var kernelVersions []string
|
||||
registry, err := node.New()
|
||||
@@ -79,7 +40,7 @@ func ProfileKernelVersion(cmd *cobra.Command, args []string, toComplete string)
|
||||
} else if profile.ContainerName != "" {
|
||||
kernels := kernel.FindKernels(profile.ContainerName)
|
||||
for _, kernel_ := range kernels {
|
||||
kernelVersions = append(kernelVersions, kernel_.Version())
|
||||
kernelVersions = append(kernelVersions, kernel_.Version(), kernel_.Path)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,9 +38,6 @@ func GetCommand() *cobra.Command {
|
||||
}); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
if err := baseCmd.RegisterFlagCompletionFunc("kerneloverride", completions.NodeKernelOverride); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
if err := baseCmd.RegisterFlagCompletionFunc("kernelversion", completions.NodeKernelVersion); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
|
||||
@@ -274,9 +274,9 @@ nodes:
|
||||
args: []string{"-l"},
|
||||
wantErr: false,
|
||||
stdout: `
|
||||
NODE NAME KERNEL OVERRIDE CONTAINER OVERLAYS (S/R)
|
||||
--------- --------------- --------- --------------
|
||||
n01 -- -- /rop1,rop2
|
||||
NODE NAME KERNEL VERSION CONTAINER OVERLAYS (S/R)
|
||||
--------- -------------- --------- --------------
|
||||
n01 -- -- /rop1,rop2
|
||||
`,
|
||||
inDb: `nodeprofiles:
|
||||
p1:
|
||||
@@ -294,9 +294,9 @@ nodes:
|
||||
args: []string{"-l"},
|
||||
wantErr: false,
|
||||
stdout: `
|
||||
NODE NAME KERNEL OVERRIDE CONTAINER OVERLAYS (S/R)
|
||||
--------- --------------- --------- --------------
|
||||
n01 -- -- sop1/nop1,~rop1,rop1,rop2
|
||||
NODE NAME KERNEL VERSION CONTAINER OVERLAYS (S/R)
|
||||
--------- -------------- --------- --------------
|
||||
n01 -- -- sop1/nop1,~rop1,rop1,rop2
|
||||
`,
|
||||
inDb: `nodeprofiles:
|
||||
p1:
|
||||
|
||||
@@ -54,9 +54,6 @@ func GetCommand() *cobra.Command {
|
||||
}); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
if err := baseCmd.RegisterFlagCompletionFunc("kerneloverride", completions.NodeKernelOverride); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
if err := baseCmd.RegisterFlagCompletionFunc("kernelversion", completions.NodeKernelVersion); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
|
||||
@@ -37,9 +37,6 @@ func GetCommand() *cobra.Command {
|
||||
}); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
if err := baseCmd.RegisterFlagCompletionFunc("kerneloverride", completions.ProfileKernelOverride); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
if err := baseCmd.RegisterFlagCompletionFunc("kernelversion", completions.ProfileKernelVersion); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
|
||||
@@ -59,9 +59,6 @@ func GetCommand() *cobra.Command {
|
||||
}); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
if err := baseCmd.RegisterFlagCompletionFunc("kerneloverride", completions.ProfileKernelOverride); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
if err := baseCmd.RegisterFlagCompletionFunc("kernelversion", completions.ProfileKernelVersion); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
|
||||
@@ -73,11 +73,11 @@ func NodeList(nodeGet *wwapiv1.GetNodeList) (nodeList wwapiv1.NodeList, err erro
|
||||
}
|
||||
} else if nodeGet.Type == wwapiv1.GetNodeList_Long {
|
||||
nodeList.Output = append(nodeList.Output,
|
||||
fmt.Sprintf("%s:=:%s:=:%s:=:%s", "NODE NAME", "KERNEL OVERRIDE", "CONTAINER", "OVERLAYS (S/R)"))
|
||||
fmt.Sprintf("%s:=:%s:=:%s:=:%s", "NODE NAME", "KERNEL VERSION", "CONTAINER", "OVERLAYS (S/R)"))
|
||||
for _, n := range node.FilterNodeListByName(nodes, nodeGet.Nodes) {
|
||||
nodeList.Output = append(nodeList.Output,
|
||||
fmt.Sprintf("%s:=:%s:=:%s:=:%s", n.Id(),
|
||||
n.Kernel.Override,
|
||||
n.Kernel.Version,
|
||||
n.ContainerName,
|
||||
strings.Join(n.SystemOverlay, ",")+"/"+strings.Join(n.RuntimeOverlay, ",")))
|
||||
}
|
||||
|
||||
@@ -75,10 +75,13 @@ func FromNode(node *node.Node) *Kernel {
|
||||
wwlog.Debug("FromNode(%v)", node)
|
||||
if node.ContainerName == "" {
|
||||
return nil
|
||||
} else if node.Kernel.Override != "" {
|
||||
return &Kernel{ContainerName: node.ContainerName, Path: filepath.Join("/", node.Kernel.Override)}
|
||||
} else if node.Kernel.Version != "" {
|
||||
return FindKernels(node.ContainerName).Version(node.Kernel.Version)
|
||||
kernel := &Kernel{ContainerName: node.ContainerName, Path: filepath.Join("/", node.Kernel.Version)}
|
||||
if util.IsFile(kernel.FullPath()) {
|
||||
return kernel
|
||||
} else {
|
||||
return FindKernels(node.ContainerName).Version(node.Kernel.Version)
|
||||
}
|
||||
} else {
|
||||
return FindKernels(node.ContainerName).Preferred()
|
||||
}
|
||||
|
||||
@@ -111,9 +111,9 @@ func Test_FindKernel(t *testing.T) {
|
||||
|
||||
func Test_FromNode(t *testing.T) {
|
||||
tests := map[string]struct {
|
||||
files []string
|
||||
override string
|
||||
path string
|
||||
files []string
|
||||
version string
|
||||
path string
|
||||
}{
|
||||
"default": {
|
||||
files: []string{
|
||||
@@ -121,22 +121,31 @@ func Test_FromNode(t *testing.T) {
|
||||
"/boot/vmlinuz-5.14.0-427.24.1.el9_4.x86_64",
|
||||
"/boot/vmlinuz-4.14.0-427.18.1.el8_4.x86_64",
|
||||
},
|
||||
override: "",
|
||||
path: "/boot/vmlinuz-5.14.0-427.24.1.el9_4.x86_64",
|
||||
version: "",
|
||||
path: "/boot/vmlinuz-5.14.0-427.24.1.el9_4.x86_64",
|
||||
},
|
||||
"override": {
|
||||
"path": {
|
||||
files: []string{
|
||||
"/boot/vmlinuz-5.14.0-427.18.1.el9_4.x86_64",
|
||||
"/boot/vmlinuz-5.14.0-427.24.1.el9_4.x86_64",
|
||||
"/boot/vmlinuz-4.14.0-427.18.1.el8_4.x86_64",
|
||||
},
|
||||
override: "/boot/vmlinuz-4.14.0-427.18.1.el8_4.x86_64",
|
||||
path: "/boot/vmlinuz-4.14.0-427.18.1.el8_4.x86_64",
|
||||
version: "/boot/vmlinuz-4.14.0-427.18.1.el8_4.x86_64",
|
||||
path: "/boot/vmlinuz-4.14.0-427.18.1.el8_4.x86_64",
|
||||
},
|
||||
"version": {
|
||||
files: []string{
|
||||
"/boot/vmlinuz-5.14.0-427.18.1.el9_4.x86_64",
|
||||
"/boot/vmlinuz-5.14.0-427.24.1.el9_4.x86_64",
|
||||
"/boot/vmlinuz-4.14.0-427.18.1.el8_4.x86_64",
|
||||
},
|
||||
version: "4.14.0-427.18.1",
|
||||
path: "/boot/vmlinuz-4.14.0-427.18.1.el8_4.x86_64",
|
||||
},
|
||||
"none": {
|
||||
files: []string{},
|
||||
override: "",
|
||||
path: "",
|
||||
files: []string{},
|
||||
version: "",
|
||||
path: "",
|
||||
},
|
||||
}
|
||||
for name, tt := range tests {
|
||||
@@ -149,7 +158,7 @@ func Test_FromNode(t *testing.T) {
|
||||
}
|
||||
node := node.EmptyNode()
|
||||
node.ContainerName = "testcontainer"
|
||||
node.Kernel.Override = tt.override
|
||||
node.Kernel.Version = tt.version
|
||||
kernel := FromNode(&node)
|
||||
if tt.path == "" {
|
||||
assert.Nil(t, kernel)
|
||||
|
||||
@@ -70,9 +70,8 @@ type IpmiConf struct {
|
||||
}
|
||||
|
||||
type KernelConf struct {
|
||||
Version string `yaml:"version,omitempty" lopt:"kernelversion" comment:"Set kernel version" json:"version,omitempty"`
|
||||
Override string `yaml:"override,omitempty" lopt:"kerneloverride" sopt:"K" comment:"Set kernel override path" json:"override,omitempty"`
|
||||
Args string `yaml:"args,omitempty" lopt:"kernelargs" sopt:"A" comment:"Set kernel arguments" json:"args,omitempty"`
|
||||
Version string `yaml:"version,omitempty" lopt:"kernelversion" comment:"Set kernel version" json:"version,omitempty"`
|
||||
Args string `yaml:"args,omitempty" lopt:"kernelargs" sopt:"A" comment:"Set kernel arguments" json:"args,omitempty"`
|
||||
}
|
||||
|
||||
type NetDev struct {
|
||||
|
||||
@@ -165,16 +165,12 @@ func (this *Node) Upgrade(addDefaults bool, replaceOverlays bool) (upgraded *nod
|
||||
if this.Kernel != nil {
|
||||
upgraded.Kernel = this.Kernel.Upgrade(this.ContainerName)
|
||||
} else {
|
||||
upgraded.Kernel = new(node.KernelConf)
|
||||
}
|
||||
if upgraded.Kernel.Args == "" {
|
||||
upgraded.Kernel.Args = this.KernelArgs
|
||||
}
|
||||
if upgraded.Kernel.Override == "" {
|
||||
upgraded.Kernel.Override = this.KernelOverride
|
||||
}
|
||||
if upgraded.Kernel.Version == "" {
|
||||
upgraded.Kernel.Version = this.KernelVersion
|
||||
inlineKernel := &KernelConf{
|
||||
Args: this.KernelArgs,
|
||||
Version: this.KernelVersion,
|
||||
Override: this.KernelOverride,
|
||||
}
|
||||
upgraded.Kernel = inlineKernel.Upgrade(this.ContainerName)
|
||||
}
|
||||
if this.Keys != nil {
|
||||
for key, value := range this.Keys {
|
||||
@@ -358,16 +354,12 @@ func (this *Profile) Upgrade(addDefaults bool, replaceOverlays bool) (upgraded *
|
||||
if this.Kernel != nil {
|
||||
upgraded.Kernel = this.Kernel.Upgrade(this.ContainerName)
|
||||
} else {
|
||||
upgraded.Kernel = new(node.KernelConf)
|
||||
}
|
||||
if upgraded.Kernel.Args == "" {
|
||||
upgraded.Kernel.Args = this.KernelArgs
|
||||
}
|
||||
if upgraded.Kernel.Override == "" {
|
||||
upgraded.Kernel.Override = this.KernelOverride
|
||||
}
|
||||
if upgraded.Kernel.Version == "" {
|
||||
upgraded.Kernel.Version = this.KernelVersion
|
||||
inlineKernel := &KernelConf{
|
||||
Args: this.KernelArgs,
|
||||
Version: this.KernelVersion,
|
||||
Override: this.KernelOverride,
|
||||
}
|
||||
upgraded.Kernel = inlineKernel.Upgrade(this.ContainerName)
|
||||
}
|
||||
if this.Keys != nil {
|
||||
for key, value := range this.Keys {
|
||||
@@ -500,14 +492,14 @@ func (this *KernelConf) Upgrade(containerName string) (upgraded *node.KernelConf
|
||||
for _, kernel_ := range kernels {
|
||||
wwlog.Debug("checking if kernel '%v' version '%v' from container '%v' matches override '%v'", kernel_, kernel_.Version(), containerName, this.Override)
|
||||
if kernel_.Version() == version.String() {
|
||||
upgraded.Override = kernel_.Path
|
||||
wwlog.Info("kernel override %v -> %v (container %v)", this.Override, upgraded.Override, containerName)
|
||||
upgraded.Version = kernel_.Path
|
||||
wwlog.Info("kernel override %v -> version %v (container %v)", this.Override, upgraded.Version, containerName)
|
||||
}
|
||||
}
|
||||
} else if util.IsFile((&kernel.Kernel{ContainerName: containerName, Path: this.Override}).FullPath()) {
|
||||
upgraded.Override = this.Override
|
||||
upgraded.Version = this.Override
|
||||
}
|
||||
if upgraded.Override == "" {
|
||||
if upgraded.Version == "" {
|
||||
containerDisplay := "unknown"
|
||||
if containerName != "" {
|
||||
containerDisplay = containerName
|
||||
@@ -515,7 +507,9 @@ func (this *KernelConf) Upgrade(containerName string) (upgraded *node.KernelConf
|
||||
wwlog.Warn("unable to resolve kernel override %v (container %v)", this.Override, containerDisplay)
|
||||
}
|
||||
}
|
||||
upgraded.Version = this.Version
|
||||
if upgraded.Version == "" {
|
||||
upgraded.Version = this.Version
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -244,13 +244,11 @@ nodeprofiles:
|
||||
default:
|
||||
kernel:
|
||||
version: "2.6"
|
||||
override: rockylinux-9
|
||||
args: quiet
|
||||
nodes:
|
||||
n1:
|
||||
kernel:
|
||||
version: "2.6"
|
||||
override: rockylinux-9
|
||||
args: quiet
|
||||
`,
|
||||
},
|
||||
@@ -711,12 +709,12 @@ nodeprofiles:
|
||||
default:
|
||||
container name: mycontainer
|
||||
kernel:
|
||||
override: /boot/vmlinuz-1.2.3
|
||||
version: /boot/vmlinuz-1.2.3
|
||||
nodes:
|
||||
n1:
|
||||
container name: mycontainer
|
||||
kernel:
|
||||
override: /boot/vmlinuz-1.2.3
|
||||
version: /boot/vmlinuz-1.2.3
|
||||
`,
|
||||
},
|
||||
{
|
||||
@@ -744,12 +742,12 @@ nodeprofiles:
|
||||
default:
|
||||
container name: mycontainer
|
||||
kernel:
|
||||
override: /boot/vmlinuz-1.2.3
|
||||
version: /boot/vmlinuz-1.2.3
|
||||
nodes:
|
||||
n1:
|
||||
container name: mycontainer
|
||||
kernel:
|
||||
override: /boot/vmlinuz-1.2.3
|
||||
version: /boot/vmlinuz-1.2.3
|
||||
`,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -22,20 +22,20 @@ import (
|
||||
)
|
||||
|
||||
type templateVars struct {
|
||||
Message string
|
||||
WaitTime string
|
||||
Hostname string
|
||||
Fqdn string
|
||||
Id string
|
||||
Cluster string
|
||||
ContainerName string
|
||||
Hwaddr string
|
||||
Ipaddr string
|
||||
Port string
|
||||
KernelArgs string
|
||||
KernelOverride string
|
||||
Tags map[string]string
|
||||
NetDevs map[string]*node.NetDev
|
||||
Message string
|
||||
WaitTime string
|
||||
Hostname string
|
||||
Fqdn string
|
||||
Id string
|
||||
Cluster string
|
||||
ContainerName string
|
||||
Hwaddr string
|
||||
Ipaddr string
|
||||
Port string
|
||||
KernelArgs string
|
||||
KernelVersion string
|
||||
Tags map[string]string
|
||||
NetDevs map[string]*node.NetDev
|
||||
}
|
||||
|
||||
func ProvisionSend(w http.ResponseWriter, req *http.Request) {
|
||||
@@ -99,18 +99,18 @@ func ProvisionSend(w http.ResponseWriter, req *http.Request) {
|
||||
} else if rinfo.stage == "ipxe" {
|
||||
stage_file = path.Join(conf.Paths.Sysconfdir, "warewulf/ipxe/"+remoteNode.Ipxe+".ipxe")
|
||||
tmpl_data = &templateVars{
|
||||
Id: remoteNode.Id(),
|
||||
Cluster: remoteNode.ClusterName,
|
||||
Fqdn: remoteNode.Id(),
|
||||
Ipaddr: conf.Ipaddr,
|
||||
Port: strconv.Itoa(conf.Warewulf.Port),
|
||||
Hostname: remoteNode.Id(),
|
||||
Hwaddr: rinfo.hwaddr,
|
||||
ContainerName: remoteNode.ContainerName,
|
||||
KernelArgs: remoteNode.Kernel.Args,
|
||||
KernelOverride: remoteNode.Kernel.Override,
|
||||
NetDevs: remoteNode.NetDevs,
|
||||
Tags: remoteNode.Tags}
|
||||
Id: remoteNode.Id(),
|
||||
Cluster: remoteNode.ClusterName,
|
||||
Fqdn: remoteNode.Id(),
|
||||
Ipaddr: conf.Ipaddr,
|
||||
Port: strconv.Itoa(conf.Warewulf.Port),
|
||||
Hostname: remoteNode.Id(),
|
||||
Hwaddr: rinfo.hwaddr,
|
||||
ContainerName: remoteNode.ContainerName,
|
||||
KernelArgs: remoteNode.Kernel.Args,
|
||||
KernelVersion: remoteNode.Kernel.Version,
|
||||
NetDevs: remoteNode.NetDevs,
|
||||
Tags: remoteNode.Tags}
|
||||
} else if rinfo.stage == "kernel" {
|
||||
kernel_ := kernel.FromNode(&remoteNode)
|
||||
if kernel_ == nil {
|
||||
@@ -175,18 +175,18 @@ func ProvisionSend(w http.ResponseWriter, req *http.Request) {
|
||||
case "grub.cfg":
|
||||
stage_file = path.Join(conf.Paths.Sysconfdir, "warewulf/grub/grub.cfg.ww")
|
||||
tmpl_data = &templateVars{
|
||||
Id: remoteNode.Id(),
|
||||
Cluster: remoteNode.ClusterName,
|
||||
Fqdn: remoteNode.Id(),
|
||||
Ipaddr: conf.Ipaddr,
|
||||
Port: strconv.Itoa(conf.Warewulf.Port),
|
||||
Hostname: remoteNode.Id(),
|
||||
Hwaddr: rinfo.hwaddr,
|
||||
ContainerName: remoteNode.ContainerName,
|
||||
KernelArgs: remoteNode.Kernel.Args,
|
||||
KernelOverride: remoteNode.Kernel.Override,
|
||||
NetDevs: remoteNode.NetDevs,
|
||||
Tags: remoteNode.Tags}
|
||||
Id: remoteNode.Id(),
|
||||
Cluster: remoteNode.ClusterName,
|
||||
Fqdn: remoteNode.Id(),
|
||||
Ipaddr: conf.Ipaddr,
|
||||
Port: strconv.Itoa(conf.Warewulf.Port),
|
||||
Hostname: remoteNode.Id(),
|
||||
Hwaddr: rinfo.hwaddr,
|
||||
ContainerName: remoteNode.ContainerName,
|
||||
KernelArgs: remoteNode.Kernel.Args,
|
||||
KernelVersion: remoteNode.Kernel.Version,
|
||||
NetDevs: remoteNode.NetDevs,
|
||||
Tags: remoteNode.Tags}
|
||||
if stage_file == "" {
|
||||
wwlog.Error("could't find grub.cfg template for %s", containerName)
|
||||
w.WriteHeader(http.StatusNotFound)
|
||||
@@ -215,22 +215,18 @@ func ProvisionSend(w http.ResponseWriter, req *http.Request) {
|
||||
wwlog.Warn("No conainer set for node %s", remoteNode.Id())
|
||||
}
|
||||
} else if rinfo.stage == "initramfs" {
|
||||
kver := remoteNode.Kernel.Version
|
||||
if kver == "" || remoteNode.Kernel.Override != "" {
|
||||
kernel_ := kernel.FromNode(&remoteNode)
|
||||
if kernel_ != nil {
|
||||
kver = kernel_.Version()
|
||||
}
|
||||
}
|
||||
if kver != "" {
|
||||
initramfs := container.FindInitramfs(remoteNode.ContainerName, kver)
|
||||
if initramfs == nil {
|
||||
wwlog.Error("No initramfs found for kernel %s in container %s", kver, remoteNode.ContainerName)
|
||||
if kernel_ := kernel.FromNode(&remoteNode); kernel_ != nil {
|
||||
if kver := kernel_.Version(); kver != "" {
|
||||
if initramfs := container.FindInitramfs(remoteNode.ContainerName, kver); initramfs != nil {
|
||||
stage_file = initramfs.FullPath()
|
||||
} else {
|
||||
wwlog.Error("No initramfs found for kernel %s in container %s", kver, remoteNode.ContainerName)
|
||||
}
|
||||
} else {
|
||||
stage_file = initramfs.FullPath()
|
||||
wwlog.Error("No initramfs found: unable to determine kernel version for node %s", remoteNode.Id())
|
||||
}
|
||||
} else {
|
||||
wwlog.Error("No initramfs found: unable to determine kernel version for node %s", remoteNode.Id())
|
||||
wwlog.Error("No initramfs found: unable to find kernel for node %s", remoteNode.Id())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +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"},
|
||||
{"ipxe test with NetDevs and KernelVersion", "/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"},
|
||||
{"find grub.cfg", "/efiboot/grub.cfg", "dracut", 200, "10.10.10.11:9873"},
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ nodes:
|
||||
device: net
|
||||
ipxe template: test
|
||||
kernel:
|
||||
override: 1.1.1`)
|
||||
version: 1.1.1`)
|
||||
|
||||
// create a arp file as for grub we look up the ip address through the arp cache
|
||||
env.WriteFile(t, "/var/tmp/arpcache", `IP address HW type Flags HW address Mask Device
|
||||
@@ -79,7 +79,7 @@ nodes:
|
||||
env.CreateFile(t, "/var/lib/warewulf/chroots/suse/rootfs/usr/lib64/efi/shim.efi")
|
||||
env.CreateFile(t, "/var/lib/warewulf/chroots/suse/rootfs/usr/share/efi/x86_64/grub.efi")
|
||||
env.CreateFile(t, "/var/lib/warewulf/chroots/suse/rootfs/boot/initramfs-1.1.0.img")
|
||||
env.WriteFile(t, "/etc/warewulf/ipxe/test.ipxe", "{{.KernelOverride}}{{range $devname, $netdev := .NetDevs}}{{if and $netdev.Hwaddr $netdev.Device}} ifname={{$netdev.Device}}:{{$netdev.Hwaddr}} {{end}}{{end}}")
|
||||
env.WriteFile(t, "/etc/warewulf/ipxe/test.ipxe", "{{.KernelVersion}}{{range $devname, $netdev := .NetDevs}}{{if and $netdev.Hwaddr $netdev.Device}} ifname={{$netdev.Device}}:{{$netdev.Hwaddr}} {{end}}{{end}}")
|
||||
env.WriteFile(t, "/etc/warewulf/grub/grub.cfg.ww", "{{ .Tags.GrubMenuEntry }}")
|
||||
|
||||
dbErr := LoadNodeDB()
|
||||
|
||||
Reference in New Issue
Block a user