Refactor kernel args as a slice
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
This commit is contained in:
@@ -71,8 +71,8 @@ type IpmiConf struct {
|
||||
}
|
||||
|
||||
type KernelConf struct {
|
||||
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"`
|
||||
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 {
|
||||
|
||||
@@ -30,7 +30,8 @@ nodes:
|
||||
nodes:
|
||||
n1:
|
||||
kernel:
|
||||
args: n1 args`,
|
||||
args:
|
||||
- n1 args`,
|
||||
node: "n1",
|
||||
field: "Kernel.Args",
|
||||
value: "n1 args",
|
||||
|
||||
@@ -284,7 +284,8 @@ nodeprofiles:
|
||||
nodes:
|
||||
n1:
|
||||
kernel:
|
||||
args: n1 args`,
|
||||
args:
|
||||
- n1 args`,
|
||||
node: "n1",
|
||||
field: "Kernel.Args",
|
||||
source: "",
|
||||
@@ -299,7 +300,8 @@ nodes:
|
||||
nodeprofiles:
|
||||
p1:
|
||||
kernel:
|
||||
args: p1 args`,
|
||||
args:
|
||||
- p1 args`,
|
||||
node: "n1",
|
||||
field: "Kernel.Args",
|
||||
source: "p1",
|
||||
@@ -315,52 +317,59 @@ nodes:
|
||||
nodeprofiles:
|
||||
p1:
|
||||
kernel:
|
||||
args: p1 args
|
||||
args:
|
||||
- p1 args
|
||||
p2:
|
||||
kernel:
|
||||
args: p2 args`,
|
||||
args:
|
||||
- p2 args`,
|
||||
node: "n1",
|
||||
field: "Kernel.Args",
|
||||
source: "p2",
|
||||
value: "p2 args",
|
||||
source: "p1,p2",
|
||||
value: "p1 args,p2 args",
|
||||
},
|
||||
"node kernel args supersedes profile kernel args": {
|
||||
nodesConf: `
|
||||
nodes:
|
||||
n1:
|
||||
kernel:
|
||||
args: n1 args
|
||||
args:
|
||||
- n1 args
|
||||
profiles:
|
||||
- p1
|
||||
nodeprofiles:
|
||||
p1:
|
||||
kernel:
|
||||
args: p1 args`,
|
||||
args:
|
||||
- p1 args`,
|
||||
node: "n1",
|
||||
field: "Kernel.Args",
|
||||
source: "SUPERSEDED",
|
||||
value: "n1 args",
|
||||
source: "p1,n1",
|
||||
value: "p1 args,n1 args",
|
||||
},
|
||||
"node kernel args supersedes multiple profile kernel args": {
|
||||
nodesConf: `
|
||||
nodes:
|
||||
n1:
|
||||
kernel:
|
||||
args: n1 args
|
||||
args:
|
||||
- n1 args
|
||||
profiles:
|
||||
- p1
|
||||
- p2
|
||||
nodeprofiles:
|
||||
p1:
|
||||
kernel:
|
||||
args: p1 args
|
||||
args:
|
||||
- p1 args
|
||||
p2:
|
||||
kernel:
|
||||
args: p2 args`,
|
||||
args:
|
||||
- p2 args`,
|
||||
node: "n1",
|
||||
field: "Kernel.Args",
|
||||
source: "SUPERSEDED",
|
||||
value: "n1 args",
|
||||
source: "p1,p2,n1",
|
||||
value: "p1 args,p2 args,n1 args",
|
||||
},
|
||||
"node tag": {
|
||||
nodesConf: `
|
||||
@@ -971,7 +980,8 @@ nodes:
|
||||
- default
|
||||
kernel:
|
||||
version: v1.0.0
|
||||
args: kernel-args`,
|
||||
args:
|
||||
- kernel-args`,
|
||||
node: "node1",
|
||||
kernel: nil,
|
||||
},
|
||||
|
||||
@@ -49,7 +49,7 @@ func Test_Node_Expand_Flatten(t *testing.T) {
|
||||
assert.Equal(t, map[string]string{}, node.Tags)
|
||||
assert.Equal(t, map[string]string{}, node.Ipmi.Tags)
|
||||
assert.Equal(t, "", node.Kernel.Version)
|
||||
assert.Equal(t, "", node.Kernel.Args)
|
||||
assert.Len(t, node.Kernel.Args, 0)
|
||||
assert.Equal(t, map[string]*NetDev{}, node.NetDevs)
|
||||
})
|
||||
|
||||
@@ -75,7 +75,7 @@ func Test_Profile_Expand_Flatten(t *testing.T) {
|
||||
assert.Equal(t, map[string]string{}, profile.Tags)
|
||||
assert.Equal(t, map[string]string{}, profile.Ipmi.Tags)
|
||||
assert.Equal(t, "", profile.Kernel.Version)
|
||||
assert.Equal(t, "", profile.Kernel.Args)
|
||||
assert.Len(t, profile.Kernel.Args, 0)
|
||||
assert.Equal(t, map[string]*NetDev{}, profile.NetDevs)
|
||||
})
|
||||
|
||||
|
||||
@@ -216,7 +216,7 @@ T3
|
||||
"/var/lib/warewulf/overlays/o1/rootfs/node.txt.ww": `
|
||||
IPMI user:{{ .Ipmi.UserName}}
|
||||
Kernel Version:{{.Kernel.Version}}
|
||||
Kernel Args:{{.Kernel.Args}}
|
||||
Kernel Args:{{.Kernel.Args | join " "}}
|
||||
NetDevs:{{.NetDevs}}
|
||||
Tags:{{.Tags}}
|
||||
`,
|
||||
|
||||
@@ -81,8 +81,8 @@ func (this *NodesYaml) Upgrade(addDefaults bool, replaceOverlays bool, warewulfc
|
||||
defaultProfile.RuntimeOverlay = append(
|
||||
defaultProfile.RuntimeOverlay, genericSplitOverlays...)
|
||||
}
|
||||
if defaultProfile.Kernel.Args == "" {
|
||||
defaultProfile.Kernel.Args = "quiet crashkernel=no vga=791 net.naming-scheme=v238"
|
||||
if len(defaultProfile.Kernel.Args) < 1 {
|
||||
defaultProfile.Kernel.Args = []string{"quiet", "crashkernel=no", "vga=791", "net.naming-scheme=v238"}
|
||||
}
|
||||
if defaultProfile.Init == "" {
|
||||
defaultProfile.Init = "/sbin/init"
|
||||
@@ -526,14 +526,23 @@ func (this *IpmiConf) Upgrade() (upgraded *node.IpmiConf) {
|
||||
}
|
||||
|
||||
type KernelConf struct {
|
||||
Args string `yaml:"args,omitempty"`
|
||||
Override string `yaml:"override,omitempty"`
|
||||
Version string `yaml:"version,omitempty"`
|
||||
Args interface{} `yaml:"args,omitempty"`
|
||||
Override string `yaml:"override,omitempty"`
|
||||
Version string `yaml:"version,omitempty"`
|
||||
}
|
||||
|
||||
func (this *KernelConf) Upgrade(imageName string) (upgraded *node.KernelConf) {
|
||||
upgraded = new(node.KernelConf)
|
||||
upgraded.Args = this.Args
|
||||
switch args := this.Args.(type) {
|
||||
case []string:
|
||||
upgraded.Args = args
|
||||
case string:
|
||||
if args != "" {
|
||||
upgraded.Args = strings.Fields(args)
|
||||
}
|
||||
default:
|
||||
wwlog.Warn("unable to parse Kernel.Args: %v", this.Args)
|
||||
}
|
||||
kernels := kernel.FindKernels(imageName)
|
||||
wwlog.Debug("referencing kernels: %v (imageName: %v)", kernels, imageName)
|
||||
if this.Override != "" {
|
||||
|
||||
@@ -243,12 +243,14 @@ nodeprofiles:
|
||||
default:
|
||||
kernel:
|
||||
version: "2.6"
|
||||
args: quiet
|
||||
args:
|
||||
- quiet
|
||||
nodes:
|
||||
n1:
|
||||
kernel:
|
||||
version: "2.6"
|
||||
args: quiet
|
||||
args:
|
||||
- quiet
|
||||
`,
|
||||
},
|
||||
{
|
||||
@@ -543,7 +545,11 @@ nodeprofiles:
|
||||
- wicked
|
||||
- ignition
|
||||
kernel:
|
||||
args: quiet crashkernel=no vga=791 net.naming-scheme=v238
|
||||
args:
|
||||
- quiet
|
||||
- crashkernel=no
|
||||
- vga=791
|
||||
- net.naming-scheme=v238
|
||||
init: /sbin/init
|
||||
root: initramfs
|
||||
nodes:
|
||||
@@ -606,7 +612,11 @@ nodeprofiles:
|
||||
- systemd.netname
|
||||
- NetworkManager
|
||||
kernel:
|
||||
args: quiet crashkernel=no vga=791 net.naming-scheme=v238
|
||||
args:
|
||||
- quiet
|
||||
- crashkernel=no
|
||||
- vga=791
|
||||
- net.naming-scheme=v238
|
||||
init: /sbin/init
|
||||
root: initramfs
|
||||
nodes:
|
||||
|
||||
@@ -107,7 +107,7 @@ func ProvisionSend(w http.ResponseWriter, req *http.Request) {
|
||||
Hostname: remoteNode.Id(),
|
||||
Hwaddr: rinfo.hwaddr,
|
||||
ImageName: remoteNode.ImageName,
|
||||
KernelArgs: remoteNode.Kernel.Args,
|
||||
KernelArgs: strings.Join(remoteNode.Kernel.Args, " "),
|
||||
KernelVersion: remoteNode.Kernel.Version,
|
||||
NetDevs: remoteNode.NetDevs,
|
||||
Tags: remoteNode.Tags}
|
||||
@@ -177,7 +177,7 @@ func ProvisionSend(w http.ResponseWriter, req *http.Request) {
|
||||
kernelArgs := ""
|
||||
kernelVersion := ""
|
||||
if remoteNode.Kernel != nil {
|
||||
kernelArgs = remoteNode.Kernel.Args
|
||||
kernelArgs = strings.Join(remoteNode.Kernel.Args, " ")
|
||||
kernelVersion = remoteNode.Kernel.Version
|
||||
}
|
||||
tmpl_data = &templateVars{
|
||||
|
||||
Reference in New Issue
Block a user