Fix wwctl upgrade nodes to handle kernel argument lists
`wwctl upgrade nodes` could convert legacy kernel argument formats to the new list format, but then wasn't properly parsing the new list format for repeat runs. Signed-off-by: Jonathon Anderson <janderson@ciq.com>
This commit is contained in:
@@ -18,13 +18,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||
- Restore default idempotency of `PUT /api/nodes/{id}`
|
||||
- `DELETE /api/overlays/{name}?force=true` can delete overlays that are in use
|
||||
- `warewulfd` overlay autobuild rebuilds overlays after node discovery. #1468
|
||||
### Fixed
|
||||
|
||||
- Improved netplan support. #1873
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed a bug when cloning an overlay to site when parent is missing
|
||||
- Fixed `wwctl upgrade nodes` to properly handle kernel argument lists. #1938
|
||||
|
||||
## v4.6.2, 2025-07-09
|
||||
|
||||
|
||||
@@ -588,8 +588,15 @@ type KernelConf struct {
|
||||
func (legacy *KernelConf) Upgrade(imageName string) (upgraded *node.KernelConf) {
|
||||
upgraded = new(node.KernelConf)
|
||||
switch args := legacy.Args.(type) {
|
||||
case []string:
|
||||
upgraded.Args = args
|
||||
case []interface{}:
|
||||
for _, arg := range args {
|
||||
switch arg.(type) {
|
||||
case map[string]interface{}, []interface{}, map[interface{}]interface{}:
|
||||
wwlog.Warn("unable to parse Kernel.Args: non-scalar value %v", arg)
|
||||
default:
|
||||
upgraded.Args = append(upgraded.Args, fmt.Sprintf("%v", arg))
|
||||
}
|
||||
}
|
||||
case string:
|
||||
if args != "" {
|
||||
upgraded.Args = strings.Fields(args)
|
||||
|
||||
@@ -251,6 +251,74 @@ nodes:
|
||||
version: "2.6"
|
||||
args:
|
||||
- quiet
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "Kernel args as string",
|
||||
addDefaults: false,
|
||||
replaceOverlays: false,
|
||||
legacyYaml: `
|
||||
nodeprofiles:
|
||||
default:
|
||||
kernel:
|
||||
version: "2.6"
|
||||
args: quiet
|
||||
nodes:
|
||||
n1:
|
||||
kernel:
|
||||
version: "2.6"
|
||||
args: quiet
|
||||
`,
|
||||
upgradedYaml: `
|
||||
nodeprofiles:
|
||||
default:
|
||||
kernel:
|
||||
version: "2.6"
|
||||
args:
|
||||
- quiet
|
||||
nodes:
|
||||
n1:
|
||||
kernel:
|
||||
version: "2.6"
|
||||
args:
|
||||
- quiet
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "Kernel args as list",
|
||||
addDefaults: false,
|
||||
replaceOverlays: false,
|
||||
legacyYaml: `
|
||||
nodeprofiles:
|
||||
default:
|
||||
kernel:
|
||||
version: "2.6"
|
||||
args:
|
||||
- quiet
|
||||
- 1
|
||||
nodes:
|
||||
n1:
|
||||
kernel:
|
||||
version: "2.6"
|
||||
args:
|
||||
- quiet
|
||||
- 2
|
||||
`,
|
||||
upgradedYaml: `
|
||||
nodeprofiles:
|
||||
default:
|
||||
kernel:
|
||||
version: "2.6"
|
||||
args:
|
||||
- quiet
|
||||
- "1"
|
||||
nodes:
|
||||
n1:
|
||||
kernel:
|
||||
version: "2.6"
|
||||
args:
|
||||
- quiet
|
||||
- "2"
|
||||
`,
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user