diff --git a/etc/nodes.conf b/etc/nodes.conf index 22ab4335..62d5b496 100644 --- a/etc/nodes.conf +++ b/etc/nodes.conf @@ -26,4 +26,6 @@ nodeprofiles: init: /sbin/init root: initramfs ipxe template: default + ipmi: + template: ipmitool.tmpl nodes: {} diff --git a/internal/app/wwctl/node/sensors/root_test.go b/internal/app/wwctl/node/sensors/root_test.go index d290563c..bd2b74bd 100644 --- a/internal/app/wwctl/node/sensors/root_test.go +++ b/internal/app/wwctl/node/sensors/root_test.go @@ -19,6 +19,7 @@ func Test_Sensors(t *testing.T) { nodeprofiles: default: ipmi: + template: ipmitool.tmpl username: admin password: admin nodes: diff --git a/internal/app/wwctl/power/cycle/root_test.go b/internal/app/wwctl/power/cycle/root_test.go index 1aec07fa..997a048f 100644 --- a/internal/app/wwctl/power/cycle/root_test.go +++ b/internal/app/wwctl/power/cycle/root_test.go @@ -19,6 +19,7 @@ func Test_PowerCycle(t *testing.T) { nodeprofiles: default: ipmi: + template: ipmitool.tmpl username: admin password: admin nodes: diff --git a/internal/app/wwctl/power/off/root_test.go b/internal/app/wwctl/power/off/root_test.go index 18d5939a..a0c6952f 100644 --- a/internal/app/wwctl/power/off/root_test.go +++ b/internal/app/wwctl/power/off/root_test.go @@ -19,6 +19,7 @@ func Test_Power_Status(t *testing.T) { nodeprofiles: default: ipmi: + template: ipmitool.tmpl username: admin password: admin nodes: diff --git a/internal/app/wwctl/power/on/root_test.go b/internal/app/wwctl/power/on/root_test.go index b42920de..26fab1ff 100644 --- a/internal/app/wwctl/power/on/root_test.go +++ b/internal/app/wwctl/power/on/root_test.go @@ -19,6 +19,7 @@ func Test_Power_Status(t *testing.T) { nodeprofiles: default: ipmi: + template: ipmitool.tmpl username: admin password: admin nodes: diff --git a/internal/app/wwctl/power/reset/root_test.go b/internal/app/wwctl/power/reset/root_test.go index 31c5420b..9f8c8552 100644 --- a/internal/app/wwctl/power/reset/root_test.go +++ b/internal/app/wwctl/power/reset/root_test.go @@ -19,6 +19,7 @@ func Test_Power_Status(t *testing.T) { nodeprofiles: default: ipmi: + template: ipmitool.tmpl username: admin password: admin nodes: diff --git a/internal/app/wwctl/power/soft/root_test.go b/internal/app/wwctl/power/soft/root_test.go index 7f214f3f..7eb0ff1a 100644 --- a/internal/app/wwctl/power/soft/root_test.go +++ b/internal/app/wwctl/power/soft/root_test.go @@ -19,6 +19,7 @@ func Test_Power_Status(t *testing.T) { nodeprofiles: default: ipmi: + template: ipmitool.tmpl username: admin password: admin nodes: diff --git a/internal/app/wwctl/power/status/root_test.go b/internal/app/wwctl/power/status/root_test.go index d7c55b8b..e6bbbe98 100644 --- a/internal/app/wwctl/power/status/root_test.go +++ b/internal/app/wwctl/power/status/root_test.go @@ -19,6 +19,7 @@ func Test_Power_Status(t *testing.T) { nodeprofiles: default: ipmi: + template: ipmitool.tmpl username: admin password: admin nodes: diff --git a/internal/pkg/power/ipmitool.go b/internal/pkg/power/ipmitool.go index fd6efe73..268175cc 100644 --- a/internal/pkg/power/ipmitool.go +++ b/internal/pkg/power/ipmitool.go @@ -32,15 +32,16 @@ func (ipmi *IPMI) Result() (string, error) { } func (ipmi *IPMI) getStr() (cmdStr string, err error) { - conf := warewulfconf.Get() if ipmi.Template == "" { - ipmi.Template = path.Join(conf.Warewulf.DataStore, "warewulf/bmc/ipmitool.tmpl") - } else if !strings.HasPrefix(ipmi.Template, "/") { + return "", fmt.Errorf("no ipmi/bmc template specified") + } + if !strings.HasPrefix(ipmi.Template, "/") { + conf := warewulfconf.Get() ipmi.Template = path.Join(conf.Warewulf.DataStore, "warewulf/bmc", ipmi.Template) } fbuf, err := os.ReadFile(ipmi.Template) if err != nil { - return "", fmt.Errorf("couldn't find the template which defines the ipmi/redfish command: %s", err) + return "", fmt.Errorf("couldn't find the template which defines the ipmi/bmc command: %s", err) } cmdTmpl, err := template.New("bmc command").Parse(string(fbuf)) if err != nil {