From 3bbddf4a8cda1afd8dec1dde09fd7619be918109 Mon Sep 17 00:00:00 2001 From: Christian Goll Date: Fri, 8 Apr 2022 17:00:57 +0200 Subject: [PATCH 1/2] create config entries for profiles --- internal/pkg/node/modifiers.go | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/internal/pkg/node/modifiers.go b/internal/pkg/node/modifiers.go index 9420e696..3dab2ac4 100644 --- a/internal/pkg/node/modifiers.go +++ b/internal/pkg/node/modifiers.go @@ -153,6 +153,9 @@ func (config *nodeYaml) DelProfile(profileID string) error { return nil } +/* +Update the the config for the given profile so that it can unmarshalled. +*/ func (config *nodeYaml) ProfileUpdate(profile NodeInfo) error { profileID := profile.Id.Get() @@ -164,16 +167,24 @@ func (config *nodeYaml) ProfileUpdate(profile NodeInfo) error { config.NodeProfiles[profileID].Ipxe = profile.Ipxe.GetReal() config.NodeProfiles[profileID].Init = profile.Init.GetReal() config.NodeProfiles[profileID].ClusterName = profile.ClusterName.GetReal() - config.NodeProfiles[profileID].Kernel.Override = profile.Kernel.Override.GetReal() - config.NodeProfiles[profileID].Kernel.Args = profile.Kernel.Args.GetReal() - config.NodeProfiles[profileID].Ipmi.Ipaddr = profile.Ipmi.Ipaddr.GetReal() - config.NodeProfiles[profileID].Ipmi.Netmask = profile.Ipmi.Netmask.GetReal() - config.NodeProfiles[profileID].Ipmi.Port = profile.Ipmi.Port.GetReal() - config.NodeProfiles[profileID].Ipmi.Gateway = profile.Ipmi.Gateway.GetReal() - config.NodeProfiles[profileID].Ipmi.UserName = profile.Ipmi.UserName.GetReal() - config.NodeProfiles[profileID].Ipmi.Password = profile.Ipmi.Password.GetReal() - config.NodeProfiles[profileID].Ipmi.Interface = profile.Ipmi.Interface.GetReal() - config.NodeProfiles[profileID].Ipmi.Write = profile.Ipmi.Interface.GetB() + if profile.Kernel.Override.GotReal() || profile.Kernel.Args.GotReal() { + config.NodeProfiles[profileID].Kernel = new(KernelConf) + config.NodeProfiles[profileID].Kernel.Override = profile.Kernel.Override.GetReal() + config.NodeProfiles[profileID].Kernel.Args = profile.Kernel.Args.GetReal() + } + if profile.Ipmi.Ipaddr.GotReal() || profile.Ipmi.Netmask.GotReal() || + profile.Ipmi.Port.GotReal() || profile.Ipmi.Gateway.GotReal() || profile.Ipmi.UserName.GotReal() || + profile.Ipmi.Password.GotReal() || profile.Ipmi.Interface.GotReal() || profile.Ipmi.Write.GotReal() { + config.NodeProfiles[profileID].Ipmi = new(IpmiConf) + config.NodeProfiles[profileID].Ipmi.Ipaddr = profile.Ipmi.Ipaddr.GetReal() + config.NodeProfiles[profileID].Ipmi.Netmask = profile.Ipmi.Netmask.GetReal() + config.NodeProfiles[profileID].Ipmi.Port = profile.Ipmi.Port.GetReal() + config.NodeProfiles[profileID].Ipmi.Gateway = profile.Ipmi.Gateway.GetReal() + config.NodeProfiles[profileID].Ipmi.UserName = profile.Ipmi.UserName.GetReal() + config.NodeProfiles[profileID].Ipmi.Password = profile.Ipmi.Password.GetReal() + config.NodeProfiles[profileID].Ipmi.Interface = profile.Ipmi.Interface.GetReal() + config.NodeProfiles[profileID].Ipmi.Write = profile.Ipmi.Interface.GetB() + } config.NodeProfiles[profileID].RuntimeOverlay = profile.RuntimeOverlay.GetRealSlice() config.NodeProfiles[profileID].SystemOverlay = profile.SystemOverlay.GetRealSlice() config.NodeProfiles[profileID].Root = profile.Root.GetReal() From 38b166945a4eed8d524fd94b2c2db4e42e9ced63 Mon Sep 17 00:00:00 2001 From: Christian Goll Date: Fri, 8 Apr 2022 17:06:13 +0200 Subject: [PATCH 2/2] reservre meomory for tempalte struct --- internal/pkg/overlay/overlay.go | 4 ++++ overlays/wwinit/etc/issue.ww | 4 ++-- overlays/wwinit/warewulf/config.ww | 12 ++++++------ 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/internal/pkg/overlay/overlay.go b/internal/pkg/overlay/overlay.go index 2f7c9681..1c82f917 100644 --- a/internal/pkg/overlay/overlay.go +++ b/internal/pkg/overlay/overlay.go @@ -87,6 +87,8 @@ Build overlay for the host, so no argument needs to be given */ func BuildHostOverlay() error { var host node.NodeInfo + host.Kernel = new(node.KernelEntry) + host.Ipmi = new(node.IpmiEntry) var idEntry node.Entry hostname, _ := os.Hostname() wwlog.Printf(wwlog.INFO, "Building overlay for %s: host\n", hostname) @@ -220,6 +222,8 @@ func BuildOverlayIndir(nodeInfo node.NodeInfo, overlayNames []string, outputDir } wwlog.Printf(wwlog.VERBOSE, "Processing node/overlay: %s/%s\n", nodeInfo.Id.Get(), strings.Join(overlayNames, "-")) var tstruct TemplateStruct + tstruct.Kernel = new(node.KernelConf) + tstruct.Ipmi = new(node.IpmiConf) tstruct.Id = nodeInfo.Id.Get() tstruct.Hostname = nodeInfo.Id.Get() tstruct.Id = nodeInfo.Id.Get() diff --git a/overlays/wwinit/etc/issue.ww b/overlays/wwinit/etc/issue.ww index 57ff1fc2..2cfb8053 100644 --- a/overlays/wwinit/etc/issue.ww +++ b/overlays/wwinit/etc/issue.ww @@ -1,7 +1,7 @@ Warewulf Node: {{.Id}} Container: {{.Container}} -Kernel: {{.KernelVersion}} -Kernelargs: {{.KernelArgs}} +Kernel: {{.Kernel.Version}} +Kernelargs: {{.Kernel.Args}} Network: {{- range $devname, $netdev := .NetDevs}} diff --git a/overlays/wwinit/warewulf/config.ww b/overlays/wwinit/warewulf/config.ww index 0eb98888..cb1e3a77 100644 --- a/overlays/wwinit/warewulf/config.ww +++ b/overlays/wwinit/warewulf/config.ww @@ -2,9 +2,9 @@ WWCONTAINER={{$.Container}} WWHOSTNAME={{$.Id}} WWROOT={{$.Root}} WWINIT={{$.Init}} -WWIPMI_IPADDR="{{$.IpmiIpaddr}}" -WWIPMI_NETMASK="{{$.IpmiNetmask}}" -WWIPMI_GATEWAY="{{$.IpmiGateway}}" -WWIPMI_USER="{{$.IpmiUserName}}" -WWIPMI_PASSWORD="{{$.IpmiPassword}}" -WWIPMI_WRITE="{{$.IpmiWrite}}" +WWIPMI_IPADDR="{{$.Ipmi.Ipaddr}}" +WWIPMI_NETMASK="{{$.Ipmi.Netmask}}" +WWIPMI_GATEWAY="{{$.Ipmi.Gateway}}" +WWIPMI_USER="{{$.Ipmi.UserName}}" +WWIPMI_PASSWORD="{{$.Ipmi.Password}}" +WWIPMI_WRITE="{{$.Ipmi.Write}}"