Merge pull request #1938 from anderbubble/wwctl-upgrade-kernel-args-already-list
Fix wwctl upgrade nodes to handle kernel argument lists
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}`
|
- Restore default idempotency of `PUT /api/nodes/{id}`
|
||||||
- `DELETE /api/overlays/{name}?force=true` can delete overlays that are in use
|
- `DELETE /api/overlays/{name}?force=true` can delete overlays that are in use
|
||||||
- `warewulfd` overlay autobuild rebuilds overlays after node discovery. #1468
|
- `warewulfd` overlay autobuild rebuilds overlays after node discovery. #1468
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- Improved netplan support. #1873
|
- Improved netplan support. #1873
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Fixed a bug when cloning an overlay to site when parent is missing
|
- 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
|
## v4.6.2, 2025-07-09
|
||||||
|
|
||||||
|
|||||||
@@ -588,8 +588,15 @@ type KernelConf struct {
|
|||||||
func (legacy *KernelConf) Upgrade(imageName string) (upgraded *node.KernelConf) {
|
func (legacy *KernelConf) Upgrade(imageName string) (upgraded *node.KernelConf) {
|
||||||
upgraded = new(node.KernelConf)
|
upgraded = new(node.KernelConf)
|
||||||
switch args := legacy.Args.(type) {
|
switch args := legacy.Args.(type) {
|
||||||
case []string:
|
case []interface{}:
|
||||||
upgraded.Args = args
|
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:
|
case string:
|
||||||
if args != "" {
|
if args != "" {
|
||||||
upgraded.Args = strings.Fields(args)
|
upgraded.Args = strings.Fields(args)
|
||||||
|
|||||||
@@ -251,6 +251,74 @@ nodes:
|
|||||||
version: "2.6"
|
version: "2.6"
|
||||||
args:
|
args:
|
||||||
- quiet
|
- 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