From dd4c075f50bd9b4e1b623cd0bdc27b5d725fec0f Mon Sep 17 00:00:00 2001 From: Niko Kivel Date: Sat, 8 May 2021 19:04:37 +0200 Subject: [PATCH 1/6] paramters in node --- internal/app/wwctl/node/list/main.go | 4 ++++ internal/app/wwctl/node/set/main.go | 14 ++++++++++++++ internal/app/wwctl/node/set/root.go | 5 +++++ internal/pkg/node/constructors.go | 9 +++++++++ internal/pkg/node/datastructure.go | 10 ++++++++++ internal/pkg/node/modifiers.go | 9 +++++++++ 6 files changed, 51 insertions(+) diff --git a/internal/app/wwctl/node/list/main.go b/internal/app/wwctl/node/list/main.go index 713ab66c..a2cf31e4 100644 --- a/internal/app/wwctl/node/list/main.go +++ b/internal/app/wwctl/node/list/main.go @@ -58,6 +58,10 @@ func CobraRunE(cmd *cobra.Command, args []string) error { fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), name+":TYPE", netdev.Type.Source(), netdev.Type.Print()) fmt.Printf("%-20s %-18s %-12s %t\n", node.Id.Get(), name+":DEFAULT", netdev.Default.Source(), netdev.Default.PrintB()) } + + for name, param := range node.Params { + fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), name+":VALUE", param.Value.Source(), param.Value.Print()) + } } } else if ShowNet { diff --git a/internal/app/wwctl/node/set/main.go b/internal/app/wwctl/node/set/main.go index e8db25f4..a20639fd 100644 --- a/internal/app/wwctl/node/set/main.go +++ b/internal/app/wwctl/node/set/main.go @@ -325,6 +325,20 @@ func CobraRunE(cmd *cobra.Command, args []string) error { n.NetDevs[SetNetDev].Default.SetB(true) } + if SetValue != "" { + if SetParam == "" { + wwlog.Printf(wwlog.ERROR, "You must include the '--param' option\n") + os.Exit(1) + } + + if _, ok := n.Params[SetParam]; !ok { + var nd node.ParamEntry + n.Params[SetParam] = &nd + } + wwlog.Printf(wwlog.VERBOSE, "Node: %s:%s, Setting Value %s\n", n.Id.Get(), SetParam, SetValue) + n.Params[SetParam].Value.Set(SetValue) + } + err := nodeDB.NodeUpdate(n) if err != nil { wwlog.Printf(wwlog.ERROR, "%s\n", err) diff --git a/internal/app/wwctl/node/set/root.go b/internal/app/wwctl/node/set/root.go index 0a7747d2..2ec4e4a8 100644 --- a/internal/app/wwctl/node/set/root.go +++ b/internal/app/wwctl/node/set/root.go @@ -41,6 +41,8 @@ var ( SetDiscoverable bool SetUndiscoverable bool SetRoot string + SetParam string + SetValue string ) func init() { @@ -74,6 +76,9 @@ func init() { baseCmd.PersistentFlags().BoolVar(&SetNetDevDel, "netdel", false, "Delete the node's network device") baseCmd.PersistentFlags().BoolVar(&SetNetDevDefault, "netdefault", false, "Set this network to be default") + baseCmd.PersistentFlags().StringVarP(&SetParam, "param", "p", "", "Define custom parameter") + baseCmd.PersistentFlags().StringVarP(&SetValue, "value", "", "", "Set custom parameter value") + baseCmd.PersistentFlags().BoolVarP(&SetNodeAll, "all", "a", false, "Set all nodes") baseCmd.PersistentFlags().BoolVarP(&SetYes, "yes", "y", false, "Set 'yes' to all questions asked") diff --git a/internal/pkg/node/constructors.go b/internal/pkg/node/constructors.go index 6e15f2f3..675f9ba5 100644 --- a/internal/pkg/node/constructors.go +++ b/internal/pkg/node/constructors.go @@ -43,6 +43,7 @@ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) { wwlog.Printf(wwlog.DEBUG, "In node loop: %s\n", nodename) n.NetDevs = make(map[string]*NetDevEntry) + n.Params = make(map[string]*ParamEntry) n.SystemOverlay.SetDefault("default") n.RuntimeOverlay.SetDefault("default") n.Ipxe.SetDefault("default") @@ -94,6 +95,14 @@ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) { n.NetDevs[devname].Default.SetB(netdev.Default) } + for paramname, param := range node.Params { + if _, ok := n.Params[paramname]; !ok { + var param ParamEntry + n.Params[paramname] = ¶m + } + n.Params[paramname].Value.Set(param.Value) + } + for _, p := range n.Profiles { if _, ok := config.NodeProfiles[p]; !ok { wwlog.Printf(wwlog.WARN, "Profile not found for node '%s': %s\n", nodename, p) diff --git a/internal/pkg/node/datastructure.go b/internal/pkg/node/datastructure.go index 67427052..45e667db 100644 --- a/internal/pkg/node/datastructure.go +++ b/internal/pkg/node/datastructure.go @@ -36,6 +36,7 @@ type NodeConf struct { Discoverable bool `yaml:"discoverable,omitempty"` Profiles []string `yaml:"profiles,omitempty"` NetDevs map[string]*NetDevs `yaml:"network devices,omitempty"` + Params map[string]*Params `yaml:"parameters,omitempty"` } type NetDevs struct { @@ -47,6 +48,10 @@ type NetDevs struct { Gateway string `yaml:"gateway,omitempty"` } +type Params struct { + Value string `yaml:"value,omitempty"` +} + /****** * Internal code data representations ******/ @@ -82,6 +87,7 @@ type NodeInfo struct { Profiles []string GroupProfiles []string NetDevs map[string]*NetDevEntry + Params map[string]*ParamEntry } type NetDevEntry struct { @@ -93,6 +99,10 @@ type NetDevEntry struct { Gateway Entry `yaml:"gateway,omitempty"` } +type ParamEntry struct { + Value Entry `yaml:"value,omitempty"` +} + func init() { //TODO: Check to make sure nodes.conf is found if !util.IsFile(ConfigFile) { diff --git a/internal/pkg/node/modifiers.go b/internal/pkg/node/modifiers.go index 41a81b2d..80265cb6 100644 --- a/internal/pkg/node/modifiers.go +++ b/internal/pkg/node/modifiers.go @@ -27,6 +27,7 @@ func (config *nodeYaml) AddNode(nodeID string) (NodeInfo, error) { config.Nodes[nodeID] = &node config.Nodes[nodeID].Profiles = []string{"default"} config.Nodes[nodeID].NetDevs = make(map[string]*NetDevs) + // config.Nodes[nodeID].Params = make(map[string]*Params) n.Id.Set(nodeID) n.Profiles = []string{"default"} @@ -75,6 +76,8 @@ func (config *nodeYaml) NodeUpdate(node NodeInfo) error { config.Nodes[nodeID].Profiles = node.Profiles config.Nodes[nodeID].NetDevs = make(map[string]*NetDevs) + config.Nodes[nodeID].Params = make(map[string]*Params) + for devname, netdev := range node.NetDevs { var newdev NetDevs config.Nodes[nodeID].NetDevs[devname] = &newdev @@ -87,6 +90,12 @@ func (config *nodeYaml) NodeUpdate(node NodeInfo) error { config.Nodes[nodeID].NetDevs[devname].Default = netdev.Default.GetRealB() } + for paramname, param := range node.Params { + var newparam Params + config.Nodes[nodeID].Params[paramname] = &newparam + config.Nodes[nodeID].Params[paramname].Value = param.Value.GetReal() + } + return nil } From 54b2164c4e1b6b5ee6516e0d8c8573b9e8bca833 Mon Sep 17 00:00:00 2001 From: Niko Kivel Date: Mon, 10 May 2021 00:12:13 +0200 Subject: [PATCH 2/6] custom paramters --- internal/app/wwctl/node/list/main.go | 2 +- internal/app/wwctl/node/set/main.go | 20 ++++++++++++++-- internal/app/wwctl/node/set/root.go | 2 ++ internal/app/wwctl/profile/list/main.go | 4 ++++ internal/app/wwctl/profile/set/main.go | 31 ++++++++++++++++++++++++- internal/app/wwctl/profile/set/root.go | 7 ++++++ internal/pkg/node/constructors.go | 23 +++++++++++++++--- internal/pkg/node/datastructure.go | 12 ++-------- internal/pkg/node/modifiers.go | 13 +++++++---- 9 files changed, 92 insertions(+), 22 deletions(-) diff --git a/internal/app/wwctl/node/list/main.go b/internal/app/wwctl/node/list/main.go index a2cf31e4..affa39e3 100644 --- a/internal/app/wwctl/node/list/main.go +++ b/internal/app/wwctl/node/list/main.go @@ -60,7 +60,7 @@ func CobraRunE(cmd *cobra.Command, args []string) error { } for name, param := range node.Params { - fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), name+":VALUE", param.Value.Source(), param.Value.Print()) + fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), name, param.Source(), param.Print()) } } diff --git a/internal/app/wwctl/node/set/main.go b/internal/app/wwctl/node/set/main.go index a20639fd..9b0fbdce 100644 --- a/internal/app/wwctl/node/set/main.go +++ b/internal/app/wwctl/node/set/main.go @@ -332,11 +332,27 @@ func CobraRunE(cmd *cobra.Command, args []string) error { } if _, ok := n.Params[SetParam]; !ok { - var nd node.ParamEntry + wwlog.Printf(wwlog.VERBOSE, "Node: %s:%s, Setting Value %s\n", n.Id.Get(), SetParam, SetValue) + var nd node.Entry n.Params[SetParam] = &nd } wwlog.Printf(wwlog.VERBOSE, "Node: %s:%s, Setting Value %s\n", n.Id.Get(), SetParam, SetValue) - n.Params[SetParam].Value.Set(SetValue) + n.Params[SetParam].Set(SetValue) + } + + if SetParamDel == true { + if SetParam == "" { + wwlog.Printf(wwlog.ERROR, "You must include the '--param' option\n") + os.Exit(1) + } + + if _, ok := n.Params[SetParam]; !ok { + wwlog.Printf(wwlog.ERROR, "Custom parameter doesn't exist: %s\n", SetParam) + os.Exit(1) + } + + wwlog.Printf(wwlog.VERBOSE, "Node: %s, Deleting custom parameter: %s\n", n.Id.Get(), SetNetDev) + delete(n.Params, SetParam) } err := nodeDB.NodeUpdate(n) diff --git a/internal/app/wwctl/node/set/root.go b/internal/app/wwctl/node/set/root.go index 2ec4e4a8..cc708cd7 100644 --- a/internal/app/wwctl/node/set/root.go +++ b/internal/app/wwctl/node/set/root.go @@ -43,6 +43,7 @@ var ( SetRoot string SetParam string SetValue string + SetParamDel bool ) func init() { @@ -78,6 +79,7 @@ func init() { baseCmd.PersistentFlags().StringVarP(&SetParam, "param", "p", "", "Define custom parameter") baseCmd.PersistentFlags().StringVarP(&SetValue, "value", "", "", "Set custom parameter value") + baseCmd.PersistentFlags().BoolVar(&SetParamDel, "paramdel", false, "Delete custom parameter") baseCmd.PersistentFlags().BoolVarP(&SetNodeAll, "all", "a", false, "Set all nodes") diff --git a/internal/app/wwctl/profile/list/main.go b/internal/app/wwctl/profile/list/main.go index c84998b4..0f453a71 100644 --- a/internal/app/wwctl/profile/list/main.go +++ b/internal/app/wwctl/profile/list/main.go @@ -54,6 +54,10 @@ func CobraRunE(cmd *cobra.Command, args []string) error { fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), name+":TYPE", netdev.Hwaddr.Print()) fmt.Printf("%-20s %-18s %t\n", profile.Id.Get(), name+":DEFAULT", netdev.Default.PrintB()) } + + for name, param := range profile.Params { + fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), name, param.Print()) + } } } else { fmt.Printf("%-20s %s\n", "PROFILE NAME", "COMMENT/DESCRIPTION") diff --git a/internal/app/wwctl/profile/set/main.go b/internal/app/wwctl/profile/set/main.go index 696dfa4d..c1af8e66 100644 --- a/internal/app/wwctl/profile/set/main.go +++ b/internal/app/wwctl/profile/set/main.go @@ -233,7 +233,7 @@ func CobraRunE(cmd *cobra.Command, args []string) error { p.NetDevs[SetNetDev] = &nd } - wwlog.Printf(wwlog.VERBOSE, "Node: %s:%s, Setting device as default\n", p.Id.Get(), SetNetDev) + wwlog.Printf(wwlog.VERBOSE, "Profile: %s:%s, Setting device as default\n", p.Id.Get(), SetNetDev) for _, dev := range p.NetDevs { // First clear all other devices that might be configured as default dev.Default.SetB(false) @@ -241,6 +241,35 @@ func CobraRunE(cmd *cobra.Command, args []string) error { p.NetDevs[SetNetDev].Default.SetB(true) } + if SetValue != "" { + if SetParam == "" { + wwlog.Printf(wwlog.ERROR, "You must include the '--param' option\n") + os.Exit(1) + } + + if _, ok := p.Params[SetParam]; !ok { + var nd node.Entry + p.Params[SetParam] = &nd + } + wwlog.Printf(wwlog.VERBOSE, "Profile: %s:%s, Setting Value %s\n", p.Id.Get(), SetParam, SetValue) + p.Params[SetParam].Set(SetValue) + } + + if SetParamDel == true { + if SetParam == "" { + wwlog.Printf(wwlog.ERROR, "You must include the '--param' option\n") + os.Exit(1) + } + + if _, ok := p.Params[SetParam]; !ok { + wwlog.Printf(wwlog.ERROR, "Custom parameter doesn't exist: %s\n", SetParam) + os.Exit(1) + } + + wwlog.Printf(wwlog.VERBOSE, "Profile: %s, Deleting custom parameter: %s\n", p.Id.Get(), SetNetDev) + delete(p.Params, SetParam) + } + err := nodeDB.ProfileUpdate(p) if err != nil { wwlog.Printf(wwlog.ERROR, "%s\n", err) diff --git a/internal/app/wwctl/profile/set/root.go b/internal/app/wwctl/profile/set/root.go index 6d81f861..42e14995 100644 --- a/internal/app/wwctl/profile/set/root.go +++ b/internal/app/wwctl/profile/set/root.go @@ -35,6 +35,9 @@ var ( SetNetDevDefault bool SetInit string SetRoot string + SetParam string + SetValue string + SetParamDel bool ) func init() { @@ -63,6 +66,10 @@ func init() { baseCmd.PersistentFlags().BoolVar(&SetNetDevDel, "netdel", false, "Delete the node's network device") baseCmd.PersistentFlags().BoolVar(&SetNetDevDefault, "netdefault", false, "Set this network to be default") + baseCmd.PersistentFlags().StringVarP(&SetParam, "param", "p", "", "Define custom parameter") + baseCmd.PersistentFlags().StringVarP(&SetValue, "value", "", "", "Set custom parameter value") + baseCmd.PersistentFlags().BoolVar(&SetParamDel, "paramdel", false, "Delete custom parameter") + baseCmd.PersistentFlags().BoolVarP(&SetAll, "all", "a", false, "Set all profiles") baseCmd.PersistentFlags().BoolVarP(&SetForce, "force", "f", false, "Force configuration (even on error)") baseCmd.PersistentFlags().BoolVarP(&SetYes, "yes", "y", false, "Set 'yes' to all questions asked") diff --git a/internal/pkg/node/constructors.go b/internal/pkg/node/constructors.go index 675f9ba5..4e7e9d99 100644 --- a/internal/pkg/node/constructors.go +++ b/internal/pkg/node/constructors.go @@ -43,7 +43,7 @@ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) { wwlog.Printf(wwlog.DEBUG, "In node loop: %s\n", nodename) n.NetDevs = make(map[string]*NetDevEntry) - n.Params = make(map[string]*ParamEntry) + n.Params = make(map[string]*Entry) n.SystemOverlay.SetDefault("default") n.RuntimeOverlay.SetDefault("default") n.Ipxe.SetDefault("default") @@ -97,10 +97,10 @@ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) { for paramname, param := range node.Params { if _, ok := n.Params[paramname]; !ok { - var param ParamEntry + var param Entry n.Params[paramname] = ¶m } - n.Params[paramname].Value.Set(param.Value) + n.Params[paramname].Set(param) } for _, p := range n.Profiles { @@ -143,6 +143,14 @@ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) { n.NetDevs[devname].Type.SetAlt(netdev.Type, p) n.NetDevs[devname].Default.SetAltB(netdev.Default, p) } + + for paramname, param := range config.NodeProfiles[p].Params { + if _, ok := n.Params[paramname]; !ok { + var param Entry + n.Params[paramname] = ¶m + } + n.Params[paramname].SetAlt(param, p) + } } ret = append(ret, n) @@ -169,6 +177,7 @@ func (config *nodeYaml) FindAllProfiles() ([]NodeInfo, error) { for name, profile := range config.NodeProfiles { var p NodeInfo p.NetDevs = make(map[string]*NetDevEntry) + p.Params = make(map[string]*Entry) p.Id.Set(name) p.Comment.Set(profile.Comment) @@ -203,6 +212,14 @@ func (config *nodeYaml) FindAllProfiles() ([]NodeInfo, error) { p.NetDevs[devname].Default.SetB(netdev.Default) } + for paramname, param := range profile.Params { + if _, ok := p.Params[paramname]; !ok { + var param Entry + p.Params[paramname] = ¶m + } + p.Params[paramname].Set(param) + } + // TODO: Validate or die on all inputs ret = append(ret, p) diff --git a/internal/pkg/node/datastructure.go b/internal/pkg/node/datastructure.go index 45e667db..243b0838 100644 --- a/internal/pkg/node/datastructure.go +++ b/internal/pkg/node/datastructure.go @@ -36,7 +36,7 @@ type NodeConf struct { Discoverable bool `yaml:"discoverable,omitempty"` Profiles []string `yaml:"profiles,omitempty"` NetDevs map[string]*NetDevs `yaml:"network devices,omitempty"` - Params map[string]*Params `yaml:"parameters,omitempty"` + Params map[string]string `yaml:"parameters,omitempty"` } type NetDevs struct { @@ -48,10 +48,6 @@ type NetDevs struct { Gateway string `yaml:"gateway,omitempty"` } -type Params struct { - Value string `yaml:"value,omitempty"` -} - /****** * Internal code data representations ******/ @@ -87,7 +83,7 @@ type NodeInfo struct { Profiles []string GroupProfiles []string NetDevs map[string]*NetDevEntry - Params map[string]*ParamEntry + Params map[string]*Entry } type NetDevEntry struct { @@ -99,10 +95,6 @@ type NetDevEntry struct { Gateway Entry `yaml:"gateway,omitempty"` } -type ParamEntry struct { - Value Entry `yaml:"value,omitempty"` -} - func init() { //TODO: Check to make sure nodes.conf is found if !util.IsFile(ConfigFile) { diff --git a/internal/pkg/node/modifiers.go b/internal/pkg/node/modifiers.go index 80265cb6..9a95b399 100644 --- a/internal/pkg/node/modifiers.go +++ b/internal/pkg/node/modifiers.go @@ -27,7 +27,6 @@ func (config *nodeYaml) AddNode(nodeID string) (NodeInfo, error) { config.Nodes[nodeID] = &node config.Nodes[nodeID].Profiles = []string{"default"} config.Nodes[nodeID].NetDevs = make(map[string]*NetDevs) - // config.Nodes[nodeID].Params = make(map[string]*Params) n.Id.Set(nodeID) n.Profiles = []string{"default"} @@ -76,7 +75,7 @@ func (config *nodeYaml) NodeUpdate(node NodeInfo) error { config.Nodes[nodeID].Profiles = node.Profiles config.Nodes[nodeID].NetDevs = make(map[string]*NetDevs) - config.Nodes[nodeID].Params = make(map[string]*Params) + config.Nodes[nodeID].Params = make(map[string]string) for devname, netdev := range node.NetDevs { var newdev NetDevs @@ -91,9 +90,7 @@ func (config *nodeYaml) NodeUpdate(node NodeInfo) error { } for paramname, param := range node.Params { - var newparam Params - config.Nodes[nodeID].Params[paramname] = &newparam - config.Nodes[nodeID].Params[paramname].Value = param.Value.GetReal() + config.Nodes[nodeID].Params[paramname] = param.GetReal() } return nil @@ -160,6 +157,8 @@ func (config *nodeYaml) ProfileUpdate(profile NodeInfo) error { config.NodeProfiles[profileID].Profiles = profile.Profiles config.NodeProfiles[profileID].NetDevs = make(map[string]*NetDevs) + + config.NodeProfiles[profileID].Params = make(map[string]string) for devname, netdev := range profile.NetDevs { var newdev NetDevs @@ -173,6 +172,10 @@ func (config *nodeYaml) ProfileUpdate(profile NodeInfo) error { config.NodeProfiles[profileID].NetDevs[devname].Default = netdev.Default.GetRealB() } + for paramname, param := range profile.Params { + config.NodeProfiles[profileID].Params[paramname] = param.GetReal() + } + return nil } From c6b97543d617f161e7943e55949f888cd9ea9029 Mon Sep 17 00:00:00 2001 From: Niko Kivel Date: Mon, 10 May 2021 09:14:22 +0200 Subject: [PATCH 3/6] parameters in overlay --- internal/pkg/overlay/overlay.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/internal/pkg/overlay/overlay.go b/internal/pkg/overlay/overlay.go index 2209fcfc..e05e40d4 100644 --- a/internal/pkg/overlay/overlay.go +++ b/internal/pkg/overlay/overlay.go @@ -31,6 +31,7 @@ type TemplateStruct struct { IpmiUserName string IpmiPassword string NetDevs map[string]*node.NetDevs + Params map[string]string AllNodes []node.NodeInfo } @@ -149,6 +150,7 @@ func buildOverlay(nodeList []node.NodeInfo, overlayType string) error { t.IpmiUserName = n.IpmiUserName.Get() t.IpmiPassword = n.IpmiPassword.Get() t.NetDevs = make(map[string]*node.NetDevs) + t.Params = make(map[string]string) for devname, netdev := range n.NetDevs { var nd node.NetDevs t.NetDevs[devname] = &nd @@ -159,6 +161,11 @@ func buildOverlay(nodeList []node.NodeInfo, overlayType string) error { t.NetDevs[devname].Type = netdev.Type.Get() t.NetDevs[devname].Default = netdev.Default.GetB() } + for paramname, param := range n.Params { + // var nd node.Params + // t.Params[paramname] = &nd + t.Params[paramname] = param.Get() + } t.AllNodes = allNodes if overlayType == "runtime" && n.RuntimeOverlay.Defined() == false { From c12f257428aef92c30ba57c0c94e8aaeb47bc69f Mon Sep 17 00:00:00 2001 From: Niko Kivel Date: Mon, 10 May 2021 09:55:36 +0200 Subject: [PATCH 4/6] removed code debris --- internal/pkg/overlay/overlay.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/internal/pkg/overlay/overlay.go b/internal/pkg/overlay/overlay.go index e05e40d4..46dbfc2d 100644 --- a/internal/pkg/overlay/overlay.go +++ b/internal/pkg/overlay/overlay.go @@ -162,8 +162,6 @@ func buildOverlay(nodeList []node.NodeInfo, overlayType string) error { t.NetDevs[devname].Default = netdev.Default.GetB() } for paramname, param := range n.Params { - // var nd node.Params - // t.Params[paramname] = &nd t.Params[paramname] = param.Get() } t.AllNodes = allNodes From 17f26e8bf130c2472b91c6fe2f60aacf1a93efa2 Mon Sep 17 00:00:00 2001 From: Niko Kivel Date: Tue, 11 May 2021 08:45:09 +0200 Subject: [PATCH 5/6] Params-->Keys --- internal/app/wwctl/node/list/main.go | 4 +-- internal/app/wwctl/node/set/main.go | 25 +++++++++--------- internal/app/wwctl/node/set/root.go | 11 ++++---- internal/app/wwctl/profile/list/main.go | 4 +-- internal/app/wwctl/profile/set/main.go | 26 +++++++++---------- internal/app/wwctl/profile/set/root.go | 11 ++++---- internal/pkg/node/constructors.go | 34 ++++++++++++------------- internal/pkg/node/datastructure.go | 4 +-- internal/pkg/node/modifiers.go | 12 ++++----- internal/pkg/overlay/overlay.go | 8 +++--- 10 files changed, 70 insertions(+), 69 deletions(-) diff --git a/internal/app/wwctl/node/list/main.go b/internal/app/wwctl/node/list/main.go index affa39e3..7c7d94a6 100644 --- a/internal/app/wwctl/node/list/main.go +++ b/internal/app/wwctl/node/list/main.go @@ -59,8 +59,8 @@ func CobraRunE(cmd *cobra.Command, args []string) error { fmt.Printf("%-20s %-18s %-12s %t\n", node.Id.Get(), name+":DEFAULT", netdev.Default.Source(), netdev.Default.PrintB()) } - for name, param := range node.Params { - fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), name, param.Source(), param.Print()) + for name, key := range node.Keys { + fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), name, key.Source(), key.Print()) } } diff --git a/internal/app/wwctl/node/set/main.go b/internal/app/wwctl/node/set/main.go index 9b0fbdce..ff45500c 100644 --- a/internal/app/wwctl/node/set/main.go +++ b/internal/app/wwctl/node/set/main.go @@ -326,33 +326,32 @@ func CobraRunE(cmd *cobra.Command, args []string) error { } if SetValue != "" { - if SetParam == "" { - wwlog.Printf(wwlog.ERROR, "You must include the '--param' option\n") + if SetKey == "" { + wwlog.Printf(wwlog.ERROR, "You must include the '--key/-k' option\n") os.Exit(1) } - if _, ok := n.Params[SetParam]; !ok { - wwlog.Printf(wwlog.VERBOSE, "Node: %s:%s, Setting Value %s\n", n.Id.Get(), SetParam, SetValue) + if _, ok := n.Keys[SetKey]; !ok { var nd node.Entry - n.Params[SetParam] = &nd + n.Keys[SetKey] = &nd } - wwlog.Printf(wwlog.VERBOSE, "Node: %s:%s, Setting Value %s\n", n.Id.Get(), SetParam, SetValue) - n.Params[SetParam].Set(SetValue) + wwlog.Printf(wwlog.VERBOSE, "Node: %s:%s, Setting Value %s\n", n.Id.Get(), SetKey, SetValue) + n.Keys[SetKey].Set(SetValue) } - if SetParamDel == true { - if SetParam == "" { - wwlog.Printf(wwlog.ERROR, "You must include the '--param' option\n") + if SetKeyDel == true { + if SetKey == "" { + wwlog.Printf(wwlog.ERROR, "You must include the '--key/-k' option\n") os.Exit(1) } - if _, ok := n.Params[SetParam]; !ok { - wwlog.Printf(wwlog.ERROR, "Custom parameter doesn't exist: %s\n", SetParam) + if _, ok := n.Keys[SetKey]; !ok { + wwlog.Printf(wwlog.ERROR, "Custom parameter doesn't exist: %s\n", SetKey) os.Exit(1) } wwlog.Printf(wwlog.VERBOSE, "Node: %s, Deleting custom parameter: %s\n", n.Id.Get(), SetNetDev) - delete(n.Params, SetParam) + delete(n.Keys, SetKey) } err := nodeDB.NodeUpdate(n) diff --git a/internal/app/wwctl/node/set/root.go b/internal/app/wwctl/node/set/root.go index cc708cd7..48c1531d 100644 --- a/internal/app/wwctl/node/set/root.go +++ b/internal/app/wwctl/node/set/root.go @@ -41,9 +41,9 @@ var ( SetDiscoverable bool SetUndiscoverable bool SetRoot string - SetParam string + SetKey string SetValue string - SetParamDel bool + SetKeyDel bool ) func init() { @@ -77,9 +77,10 @@ func init() { baseCmd.PersistentFlags().BoolVar(&SetNetDevDel, "netdel", false, "Delete the node's network device") baseCmd.PersistentFlags().BoolVar(&SetNetDevDefault, "netdefault", false, "Set this network to be default") - baseCmd.PersistentFlags().StringVarP(&SetParam, "param", "p", "", "Define custom parameter") - baseCmd.PersistentFlags().StringVarP(&SetValue, "value", "", "", "Set custom parameter value") - baseCmd.PersistentFlags().BoolVar(&SetParamDel, "paramdel", false, "Delete custom parameter") + baseCmd.PersistentFlags().StringVarP(&SetKey, "key", "k", "", "Define custom key") + baseCmd.PersistentFlags().BoolVar(&SetKeyDel, "keydel", false, "Delete custom key") + + baseCmd.PersistentFlags().StringVarP(&SetValue, "value", "", "", "Set value") baseCmd.PersistentFlags().BoolVarP(&SetNodeAll, "all", "a", false, "Set all nodes") diff --git a/internal/app/wwctl/profile/list/main.go b/internal/app/wwctl/profile/list/main.go index 0f453a71..38d28542 100644 --- a/internal/app/wwctl/profile/list/main.go +++ b/internal/app/wwctl/profile/list/main.go @@ -55,8 +55,8 @@ func CobraRunE(cmd *cobra.Command, args []string) error { fmt.Printf("%-20s %-18s %t\n", profile.Id.Get(), name+":DEFAULT", netdev.Default.PrintB()) } - for name, param := range profile.Params { - fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), name, param.Print()) + for name, key := range profile.Keys { + fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), name, key.Print()) } } } else { diff --git a/internal/app/wwctl/profile/set/main.go b/internal/app/wwctl/profile/set/main.go index c1af8e66..b7a2eda6 100644 --- a/internal/app/wwctl/profile/set/main.go +++ b/internal/app/wwctl/profile/set/main.go @@ -242,32 +242,32 @@ func CobraRunE(cmd *cobra.Command, args []string) error { } if SetValue != "" { - if SetParam == "" { - wwlog.Printf(wwlog.ERROR, "You must include the '--param' option\n") + if SetKey == "" { + wwlog.Printf(wwlog.ERROR, "You must include the '--key/-k' option\n") os.Exit(1) } - if _, ok := p.Params[SetParam]; !ok { + if _, ok := p.Keys[SetKey]; !ok { var nd node.Entry - p.Params[SetParam] = &nd + p.Keys[SetKey] = &nd } - wwlog.Printf(wwlog.VERBOSE, "Profile: %s:%s, Setting Value %s\n", p.Id.Get(), SetParam, SetValue) - p.Params[SetParam].Set(SetValue) + wwlog.Printf(wwlog.VERBOSE, "Profile: %s:%s, Setting Value %s\n", p.Id.Get(), SetKey, SetValue) + p.Keys[SetKey].Set(SetValue) } - if SetParamDel == true { - if SetParam == "" { - wwlog.Printf(wwlog.ERROR, "You must include the '--param' option\n") + if SetKeyDel == true { + if SetKey == "" { + wwlog.Printf(wwlog.ERROR, "You must include the '--key/-k' option\n") os.Exit(1) } - if _, ok := p.Params[SetParam]; !ok { - wwlog.Printf(wwlog.ERROR, "Custom parameter doesn't exist: %s\n", SetParam) + if _, ok := p.Keys[SetKey]; !ok { + wwlog.Printf(wwlog.ERROR, "Custom key doesn't exist: %s\n", SetKey) os.Exit(1) } - wwlog.Printf(wwlog.VERBOSE, "Profile: %s, Deleting custom parameter: %s\n", p.Id.Get(), SetNetDev) - delete(p.Params, SetParam) + wwlog.Printf(wwlog.VERBOSE, "Profile: %s, Deleting custom key: %s\n", p.Id.Get(), SetNetDev) + delete(p.Keys, SetKey) } err := nodeDB.ProfileUpdate(p) diff --git a/internal/app/wwctl/profile/set/root.go b/internal/app/wwctl/profile/set/root.go index 42e14995..2bc4b6e2 100644 --- a/internal/app/wwctl/profile/set/root.go +++ b/internal/app/wwctl/profile/set/root.go @@ -35,9 +35,9 @@ var ( SetNetDevDefault bool SetInit string SetRoot string - SetParam string + SetKey string SetValue string - SetParamDel bool + SetKeyDel bool ) func init() { @@ -66,9 +66,10 @@ func init() { baseCmd.PersistentFlags().BoolVar(&SetNetDevDel, "netdel", false, "Delete the node's network device") baseCmd.PersistentFlags().BoolVar(&SetNetDevDefault, "netdefault", false, "Set this network to be default") - baseCmd.PersistentFlags().StringVarP(&SetParam, "param", "p", "", "Define custom parameter") - baseCmd.PersistentFlags().StringVarP(&SetValue, "value", "", "", "Set custom parameter value") - baseCmd.PersistentFlags().BoolVar(&SetParamDel, "paramdel", false, "Delete custom parameter") + baseCmd.PersistentFlags().StringVarP(&SetKey, "key", "k", "", "Define custom key") + baseCmd.PersistentFlags().BoolVar(&SetKeyDel, "keydel", false, "Delete custom key") + + baseCmd.PersistentFlags().StringVarP(&SetValue, "value", "", "", "Set value") baseCmd.PersistentFlags().BoolVarP(&SetAll, "all", "a", false, "Set all profiles") baseCmd.PersistentFlags().BoolVarP(&SetForce, "force", "f", false, "Force configuration (even on error)") diff --git a/internal/pkg/node/constructors.go b/internal/pkg/node/constructors.go index 4e7e9d99..7f90342c 100644 --- a/internal/pkg/node/constructors.go +++ b/internal/pkg/node/constructors.go @@ -43,7 +43,7 @@ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) { wwlog.Printf(wwlog.DEBUG, "In node loop: %s\n", nodename) n.NetDevs = make(map[string]*NetDevEntry) - n.Params = make(map[string]*Entry) + n.Keys = make(map[string]*Entry) n.SystemOverlay.SetDefault("default") n.RuntimeOverlay.SetDefault("default") n.Ipxe.SetDefault("default") @@ -95,12 +95,12 @@ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) { n.NetDevs[devname].Default.SetB(netdev.Default) } - for paramname, param := range node.Params { - if _, ok := n.Params[paramname]; !ok { - var param Entry - n.Params[paramname] = ¶m + for keyname, key := range node.Keys { + if _, ok := n.Keys[keyname]; !ok { + var key Entry + n.Keys[keyname] = &key } - n.Params[paramname].Set(param) + n.Keys[keyname].Set(key) } for _, p := range n.Profiles { @@ -144,12 +144,12 @@ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) { n.NetDevs[devname].Default.SetAltB(netdev.Default, p) } - for paramname, param := range config.NodeProfiles[p].Params { - if _, ok := n.Params[paramname]; !ok { - var param Entry - n.Params[paramname] = ¶m + for keyname, key := range config.NodeProfiles[p].Keys { + if _, ok := n.Keys[keyname]; !ok { + var key Entry + n.Keys[keyname] = &key } - n.Params[paramname].SetAlt(param, p) + n.Keys[keyname].SetAlt(key, p) } } @@ -177,7 +177,7 @@ func (config *nodeYaml) FindAllProfiles() ([]NodeInfo, error) { for name, profile := range config.NodeProfiles { var p NodeInfo p.NetDevs = make(map[string]*NetDevEntry) - p.Params = make(map[string]*Entry) + p.Keys = make(map[string]*Entry) p.Id.Set(name) p.Comment.Set(profile.Comment) @@ -212,12 +212,12 @@ func (config *nodeYaml) FindAllProfiles() ([]NodeInfo, error) { p.NetDevs[devname].Default.SetB(netdev.Default) } - for paramname, param := range profile.Params { - if _, ok := p.Params[paramname]; !ok { - var param Entry - p.Params[paramname] = ¶m + for keyname, key := range profile.Keys { + if _, ok := p.Keys[keyname]; !ok { + var key Entry + p.Keys[keyname] = &key } - p.Params[paramname].Set(param) + p.Keys[keyname].Set(key) } // TODO: Validate or die on all inputs diff --git a/internal/pkg/node/datastructure.go b/internal/pkg/node/datastructure.go index 243b0838..406c656d 100644 --- a/internal/pkg/node/datastructure.go +++ b/internal/pkg/node/datastructure.go @@ -36,7 +36,7 @@ type NodeConf struct { Discoverable bool `yaml:"discoverable,omitempty"` Profiles []string `yaml:"profiles,omitempty"` NetDevs map[string]*NetDevs `yaml:"network devices,omitempty"` - Params map[string]string `yaml:"parameters,omitempty"` + Keys map[string]string `yaml:"keys,omitempty"` } type NetDevs struct { @@ -83,7 +83,7 @@ type NodeInfo struct { Profiles []string GroupProfiles []string NetDevs map[string]*NetDevEntry - Params map[string]*Entry + Keys map[string]*Entry } type NetDevEntry struct { diff --git a/internal/pkg/node/modifiers.go b/internal/pkg/node/modifiers.go index 9a95b399..ce22dea1 100644 --- a/internal/pkg/node/modifiers.go +++ b/internal/pkg/node/modifiers.go @@ -75,7 +75,7 @@ func (config *nodeYaml) NodeUpdate(node NodeInfo) error { config.Nodes[nodeID].Profiles = node.Profiles config.Nodes[nodeID].NetDevs = make(map[string]*NetDevs) - config.Nodes[nodeID].Params = make(map[string]string) + config.Nodes[nodeID].Keys = make(map[string]string) for devname, netdev := range node.NetDevs { var newdev NetDevs @@ -89,8 +89,8 @@ func (config *nodeYaml) NodeUpdate(node NodeInfo) error { config.Nodes[nodeID].NetDevs[devname].Default = netdev.Default.GetRealB() } - for paramname, param := range node.Params { - config.Nodes[nodeID].Params[paramname] = param.GetReal() + for keyname, key := range node.Keys { + config.Nodes[nodeID].Keys[keyname] = key.GetReal() } return nil @@ -158,7 +158,7 @@ func (config *nodeYaml) ProfileUpdate(profile NodeInfo) error { config.NodeProfiles[profileID].Profiles = profile.Profiles config.NodeProfiles[profileID].NetDevs = make(map[string]*NetDevs) - config.NodeProfiles[profileID].Params = make(map[string]string) + config.NodeProfiles[profileID].Keys = make(map[string]string) for devname, netdev := range profile.NetDevs { var newdev NetDevs @@ -172,8 +172,8 @@ func (config *nodeYaml) ProfileUpdate(profile NodeInfo) error { config.NodeProfiles[profileID].NetDevs[devname].Default = netdev.Default.GetRealB() } - for paramname, param := range profile.Params { - config.NodeProfiles[profileID].Params[paramname] = param.GetReal() + for keyname, key := range profile.Keys { + config.NodeProfiles[profileID].Keys[keyname] = key.GetReal() } return nil diff --git a/internal/pkg/overlay/overlay.go b/internal/pkg/overlay/overlay.go index 46dbfc2d..7936e534 100644 --- a/internal/pkg/overlay/overlay.go +++ b/internal/pkg/overlay/overlay.go @@ -31,7 +31,7 @@ type TemplateStruct struct { IpmiUserName string IpmiPassword string NetDevs map[string]*node.NetDevs - Params map[string]string + Keys map[string]string AllNodes []node.NodeInfo } @@ -150,7 +150,7 @@ func buildOverlay(nodeList []node.NodeInfo, overlayType string) error { t.IpmiUserName = n.IpmiUserName.Get() t.IpmiPassword = n.IpmiPassword.Get() t.NetDevs = make(map[string]*node.NetDevs) - t.Params = make(map[string]string) + t.Keys = make(map[string]string) for devname, netdev := range n.NetDevs { var nd node.NetDevs t.NetDevs[devname] = &nd @@ -161,8 +161,8 @@ func buildOverlay(nodeList []node.NodeInfo, overlayType string) error { t.NetDevs[devname].Type = netdev.Type.Get() t.NetDevs[devname].Default = netdev.Default.GetB() } - for paramname, param := range n.Params { - t.Params[paramname] = param.Get() + for keyname, key := range n.Keys { + t.Keys[keyname] = key.Get() } t.AllNodes = allNodes From df1f0bed2fffcc3804e1f413dfe59671adfe36b5 Mon Sep 17 00:00:00 2001 From: Niko Kivel Date: Tue, 11 May 2021 08:49:37 +0200 Subject: [PATCH 6/6] prefix in list-command to identify keys more easily --- internal/app/wwctl/node/list/main.go | 4 ++-- internal/app/wwctl/profile/list/main.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/app/wwctl/node/list/main.go b/internal/app/wwctl/node/list/main.go index 7c7d94a6..16954318 100644 --- a/internal/app/wwctl/node/list/main.go +++ b/internal/app/wwctl/node/list/main.go @@ -59,8 +59,8 @@ func CobraRunE(cmd *cobra.Command, args []string) error { fmt.Printf("%-20s %-18s %-12s %t\n", node.Id.Get(), name+":DEFAULT", netdev.Default.Source(), netdev.Default.PrintB()) } - for name, key := range node.Keys { - fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), name, key.Source(), key.Print()) + for keyname, key := range node.Keys { + fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "Keys."+keyname, key.Source(), key.Print()) } } diff --git a/internal/app/wwctl/profile/list/main.go b/internal/app/wwctl/profile/list/main.go index 38d28542..03b4c91a 100644 --- a/internal/app/wwctl/profile/list/main.go +++ b/internal/app/wwctl/profile/list/main.go @@ -55,8 +55,8 @@ func CobraRunE(cmd *cobra.Command, args []string) error { fmt.Printf("%-20s %-18s %t\n", profile.Id.Get(), name+":DEFAULT", netdev.Default.PrintB()) } - for name, key := range profile.Keys { - fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), name, key.Print()) + for keyname, key := range profile.Keys { + fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "Keys."+keyname, key.Print()) } } } else {