From 06f2c0dc5a0f16715291a473d8ff142f4835aaa8 Mon Sep 17 00:00:00 2001 From: Jonathon Anderson Date: Wed, 19 Mar 2025 02:20:48 -0600 Subject: [PATCH] Properly configure a default IPMI template during `wwctl upgrade nodes --add-defaults` Signed-off-by: Jonathon Anderson --- CHANGELOG.md | 1 + internal/pkg/upgrade/node.go | 9 +++++++++ internal/pkg/upgrade/node_test.go | 6 ++++++ 3 files changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5fd50d7..6e93e1f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fixed panic in warewulfd if node netdev is only defined in a profile. #1817 - Replaced unreadable >= character external sphinx module for pdf doc build. - Handle missing ipmi fields during bmc commands. #1768 +- Properly configure a default IPMI template during `wwctl upgrade nodes --add-defaults`. ### Changed diff --git a/internal/pkg/upgrade/node.go b/internal/pkg/upgrade/node.go index 3e8fa26f..353856c5 100644 --- a/internal/pkg/upgrade/node.go +++ b/internal/pkg/upgrade/node.go @@ -122,6 +122,9 @@ func (legacy *NodesYaml) Upgrade(addDefaults bool, replaceOverlays bool, warewul defaultProfile.RuntimeOverlay = append( defaultProfile.RuntimeOverlay, genericSplitOverlays...) } + if defaultProfile.Kernel == nil { + defaultProfile.Kernel = new(node.KernelConf) + } if len(defaultProfile.Kernel.Args) < 1 { defaultProfile.Kernel.Args = []string{"quiet", "crashkernel=no"} } @@ -153,6 +156,12 @@ func (legacy *NodesYaml) Upgrade(addDefaults bool, replaceOverlays bool, warewul }, } } + if defaultProfile.Ipmi == nil { + defaultProfile.Ipmi = new(node.IpmiConf) + } + if defaultProfile.Ipmi.Template == "" { + defaultProfile.Ipmi.Template = "ipmitool.tmpl" + } } return upgraded } diff --git a/internal/pkg/upgrade/node_test.go b/internal/pkg/upgrade/node_test.go index 132b109b..4db27cc4 100644 --- a/internal/pkg/upgrade/node_test.go +++ b/internal/pkg/upgrade/node_test.go @@ -553,6 +553,8 @@ nodes: nodeprofiles: default: ipxe template: default + ipmi: + template: ipmitool.tmpl runtime overlay: - hosts - ssh.authorized_keys @@ -634,6 +636,8 @@ nodes: nodeprofiles: custom: {} default: + ipmi: + template: ipmitool.tmpl ipxe template: default runtime overlay: - hosts @@ -891,6 +895,8 @@ nodeprofiles: upgradedYaml: ` nodeprofiles: default: + ipmi: + template: ipmitool.tmpl ipxe template: default runtime overlay: - hosts