Changed "key" paramaters to tags and cleaned up interface

This commit is contained in:
Gregory Kurtzer
2022-02-11 05:52:46 +00:00
parent 7381efb0fc
commit ffaf794a42
10 changed files with 89 additions and 90 deletions

View File

@@ -57,6 +57,10 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "IpmiUserName", node.IpmiUserName.Source(), node.IpmiUserName.Print()) fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "IpmiUserName", node.IpmiUserName.Source(), node.IpmiUserName.Print())
fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "IpmiInterface", node.IpmiInterface.Source(), node.IpmiInterface.Print()) fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "IpmiInterface", node.IpmiInterface.Source(), node.IpmiInterface.Print())
for keyname, key := range node.Tags {
fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "Tag["+keyname+"]", key.Source(), key.Print())
}
for name, netdev := range node.NetDevs { for name, netdev := range node.NetDevs {
fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), name+":DEVICE", netdev.Device.Source(), netdev.Device.Print()) fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), name+":DEVICE", netdev.Device.Source(), netdev.Device.Print())
fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), name+":HWADDR", netdev.Hwaddr.Source(), netdev.Hwaddr.Print()) fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), name+":HWADDR", netdev.Hwaddr.Source(), netdev.Hwaddr.Print())
@@ -68,9 +72,6 @@ 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()) fmt.Printf("%-20s %-18s %-12s %t\n", node.Id.Get(), name+":DEFAULT", netdev.Default.Source(), netdev.Default.PrintB())
} }
for keyname, key := range node.Keys {
fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "Keys."+keyname, key.Source(), key.Print())
}
} }
} else if ShowNet { } else if ShowNet {

View File

@@ -301,33 +301,34 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
delete(n.NetDevs, SetNetName) delete(n.NetDevs, SetNetName)
} }
if SetValue != "" { if len(SetTags) > 0 {
if SetKey == "" { for _, t := range SetTags {
wwlog.Printf(wwlog.ERROR, "You must include the '--key/-k' option\n") keyval := strings.SplitN(t, "=", 2)
os.Exit(1) key := keyval[0]
} val := keyval[1]
if _, ok := n.Keys[SetKey]; !ok { if _, ok := n.Tags[key]; !ok {
var nd node.Entry var nd node.Entry
n.Keys[SetKey] = &nd n.Tags[key] = &nd
}
wwlog.Printf(wwlog.VERBOSE, "Node: %s, Setting Tag '%s'='%s'\n", n.Id.Get(), key, val)
n.Tags[key].Set(val)
} }
wwlog.Printf(wwlog.VERBOSE, "Node: %s:%s, Setting Value %s\n", n.Id.Get(), SetKey, SetValue)
n.Keys[SetKey].Set(SetValue)
} }
if len(SetDelTags) > 0 {
for _, t := range SetDelTags {
keyval := strings.SplitN(t, "=", 1)
key := keyval[0]
if SetKeyDel { if _, ok := n.Tags[key]; !ok {
if SetKey == "" { wwlog.Printf(wwlog.WARN, "Key does not exist: %s\n", key)
wwlog.Printf(wwlog.ERROR, "You must include the '--key/-k' option\n") os.Exit(1)
os.Exit(1) }
wwlog.Printf(wwlog.VERBOSE, "Node: %s, Deleting tag: %s\n", n.Id.Get(), key)
delete(n.Tags, key)
} }
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.Keys, SetKey)
} }
err := nodeDB.NodeUpdate(n) err := nodeDB.NodeUpdate(n)

View File

@@ -68,9 +68,8 @@ var (
SetDiscoverable bool SetDiscoverable bool
SetUndiscoverable bool SetUndiscoverable bool
SetRoot string SetRoot string
SetKey string SetTags []string
SetValue string SetDelTags []string
SetKeyDel bool
SetAssetKey string SetAssetKey string
) )
@@ -144,10 +143,8 @@ func init() {
baseCmd.PersistentFlags().BoolVar(&SetNetDevDel, "netdel", false, "Delete the node's network device") baseCmd.PersistentFlags().BoolVar(&SetNetDevDel, "netdel", false, "Delete the node's network device")
baseCmd.PersistentFlags().StringVarP(&SetKey, "key", "k", "", "Define custom key") baseCmd.PersistentFlags().StringSliceVarP(&SetTags, "tag", "t", []string{}, "Define custom tag (key=value)")
baseCmd.PersistentFlags().BoolVar(&SetKeyDel, "keydel", false, "Delete custom key") baseCmd.PersistentFlags().StringSliceVar(&SetDelTags, "tagdel", []string{}, "Delete tag")
baseCmd.PersistentFlags().StringVarP(&SetValue, "value", "", "", "Set value")
baseCmd.PersistentFlags().BoolVarP(&SetNodeAll, "all", "a", false, "Set all nodes") baseCmd.PersistentFlags().BoolVarP(&SetNodeAll, "all", "a", false, "Set all nodes")

View File

@@ -48,6 +48,10 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "IpmiUserName", profile.IpmiUserName.Print()) fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "IpmiUserName", profile.IpmiUserName.Print())
fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "IpmiInterface", profile.IpmiInterface.Print()) fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "IpmiInterface", profile.IpmiInterface.Print())
for keyname, key := range profile.Tags {
fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "Tag["+keyname+"]", key.Print())
}
for name, netdev := range profile.NetDevs { for name, netdev := range profile.NetDevs {
fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), name+":IPADDR", netdev.Ipaddr.Print()) fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), name+":IPADDR", netdev.Ipaddr.Print())
fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), name+":NETMASK", netdev.Netmask.Print()) fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), name+":NETMASK", netdev.Netmask.Print())
@@ -57,10 +61,6 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
fmt.Printf("%-20s %-18s %t\n", profile.Id.Get(), name+":ONBOOT", netdev.OnBoot.PrintB()) fmt.Printf("%-20s %-18s %t\n", profile.Id.Get(), name+":ONBOOT", netdev.OnBoot.PrintB())
fmt.Printf("%-20s %-18s %t\n", profile.Id.Get(), name+":DEFAULT", netdev.Default.PrintB()) fmt.Printf("%-20s %-18s %t\n", profile.Id.Get(), name+":DEFAULT", netdev.Default.PrintB())
} }
for keyname, key := range profile.Keys {
fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "Keys."+keyname, key.Print())
}
} }
} else { } else {
fmt.Printf("%-20s %s\n", "PROFILE NAME", "COMMENT/DESCRIPTION") fmt.Printf("%-20s %s\n", "PROFILE NAME", "COMMENT/DESCRIPTION")

View File

@@ -3,6 +3,7 @@ package set
import ( import (
"fmt" "fmt"
"os" "os"
"strings"
"github.com/hpcng/warewulf/internal/pkg/node" "github.com/hpcng/warewulf/internal/pkg/node"
"github.com/hpcng/warewulf/internal/pkg/warewulfd" "github.com/hpcng/warewulf/internal/pkg/warewulfd"
@@ -269,33 +270,34 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
delete(p.NetDevs, SetNetDev) delete(p.NetDevs, SetNetDev)
} }
if SetValue != "" { if len(SetTags) > 0 {
if SetKey == "" { for _, t := range SetTags {
wwlog.Printf(wwlog.ERROR, "You must include the '--key/-k' option\n") keyval := strings.SplitN(t, "=", 2)
os.Exit(1) key := keyval[0]
} val := keyval[1]
if _, ok := p.Keys[SetKey]; !ok { if _, ok := p.Tags[key]; !ok {
var nd node.Entry var nd node.Entry
p.Keys[SetKey] = &nd p.Tags[key] = &nd
}
wwlog.Printf(wwlog.VERBOSE, "Profile: %s, Setting Tag '%s'='%s'\n", p.Id.Get(), key, val)
p.Tags[key].Set(val)
} }
wwlog.Printf(wwlog.VERBOSE, "Profile: %s:%s, Setting Value %s\n", p.Id.Get(), SetKey, SetValue)
p.Keys[SetKey].Set(SetValue)
} }
if len(SetDelTags) > 0 {
for _, t := range SetDelTags {
keyval := strings.SplitN(t, "=", 1)
key := keyval[0]
if SetKeyDel { if _, ok := p.Tags[key]; !ok {
if SetKey == "" { wwlog.Printf(wwlog.WARN, "Key does not exist: %s\n", key)
wwlog.Printf(wwlog.ERROR, "You must include the '--key/-k' option\n") os.Exit(1)
os.Exit(1) }
wwlog.Printf(wwlog.VERBOSE, "Profile: %s, Deleting tag: %s\n", p.Id.Get(), key)
delete(p.Tags, key)
} }
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 key: %s\n", p.Id.Get(), SetNetDev)
delete(p.Keys, SetKey)
} }
err := nodeDB.ProfileUpdate(p) err := nodeDB.ProfileUpdate(p)

View File

@@ -65,8 +65,8 @@ var (
SetInit string SetInit string
SetRoot string SetRoot string
SetKey string SetKey string
SetValue string SetTags []string
SetKeyDel bool SetDelTags []string
SetAssetKey string SetAssetKey string
) )
@@ -126,10 +126,8 @@ func init() {
baseCmd.PersistentFlags().BoolVar(&SetNetDevDel, "netdel", false, "Delete the node's network device") baseCmd.PersistentFlags().BoolVar(&SetNetDevDel, "netdel", false, "Delete the node's network device")
baseCmd.PersistentFlags().StringVarP(&SetKey, "key", "k", "", "Define custom key") baseCmd.PersistentFlags().StringSliceVarP(&SetTags, "tag", "t", []string{}, "Define custom tag (key=value)")
baseCmd.PersistentFlags().BoolVar(&SetKeyDel, "keydel", false, "Delete custom key") baseCmd.PersistentFlags().StringSliceVar(&SetDelTags, "tagdel", []string{}, "Delete tag")
baseCmd.PersistentFlags().StringVarP(&SetValue, "value", "", "", "Set value")
baseCmd.PersistentFlags().BoolVarP(&SetAll, "all", "a", false, "Set all profiles") 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(&SetForce, "force", "f", false, "Force configuration (even on error)")

View File

@@ -50,7 +50,7 @@ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) {
wwlog.Printf(wwlog.DEBUG, "In node loop: %s\n", nodename) wwlog.Printf(wwlog.DEBUG, "In node loop: %s\n", nodename)
n.NetDevs = make(map[string]*NetDevEntry) n.NetDevs = make(map[string]*NetDevEntry)
n.Keys = make(map[string]*Entry) n.Tags = make(map[string]*Entry)
n.SystemOverlay.SetDefault("wwinit") n.SystemOverlay.SetDefault("wwinit")
n.RuntimeOverlay.SetDefault("generic") n.RuntimeOverlay.SetDefault("generic")
n.Ipxe.SetDefault("default") n.Ipxe.SetDefault("default")
@@ -107,12 +107,12 @@ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) {
n.NetDevs[devname].Default.Set(netdev.Default) n.NetDevs[devname].Default.Set(netdev.Default)
} }
for keyname, key := range node.Keys { for keyname, key := range node.Tags {
if _, ok := n.Keys[keyname]; !ok { if _, ok := n.Tags[keyname]; !ok {
var key Entry var key Entry
n.Keys[keyname] = &key n.Tags[keyname] = &key
} }
n.Keys[keyname].Set(key) n.Tags[keyname].Set(key)
} }
for _, p := range n.Profiles { for _, p := range n.Profiles {
@@ -161,12 +161,12 @@ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) {
n.NetDevs[devname].Default.SetAlt(netdev.Default, p) n.NetDevs[devname].Default.SetAlt(netdev.Default, p)
} }
for keyname, key := range config.NodeProfiles[p].Keys { for keyname, key := range config.NodeProfiles[p].Tags {
if _, ok := n.Keys[keyname]; !ok { if _, ok := n.Tags[keyname]; !ok {
var key Entry var key Entry
n.Keys[keyname] = &key n.Tags[keyname] = &key
} }
n.Keys[keyname].SetAlt(key, p) n.Tags[keyname].SetAlt(key, p)
} }
} }
@@ -194,7 +194,7 @@ func (config *nodeYaml) FindAllProfiles() ([]NodeInfo, error) {
for name, profile := range config.NodeProfiles { for name, profile := range config.NodeProfiles {
var p NodeInfo var p NodeInfo
p.NetDevs = make(map[string]*NetDevEntry) p.NetDevs = make(map[string]*NetDevEntry)
p.Keys = make(map[string]*Entry) p.Tags = make(map[string]*Entry)
p.Id.Set(name) p.Id.Set(name)
p.Comment.Set(profile.Comment) p.Comment.Set(profile.Comment)
@@ -235,12 +235,12 @@ func (config *nodeYaml) FindAllProfiles() ([]NodeInfo, error) {
p.NetDevs[devname].Default.Set(netdev.Default) p.NetDevs[devname].Default.Set(netdev.Default)
} }
for keyname, key := range profile.Keys { for keyname, key := range profile.Tags {
if _, ok := p.Keys[keyname]; !ok { if _, ok := p.Tags[keyname]; !ok {
var key Entry var key Entry
p.Keys[keyname] = &key p.Tags[keyname] = &key
} }
p.Keys[keyname].Set(key) p.Tags[keyname].Set(key)
} }
// TODO: Validate or die on all inputs // TODO: Validate or die on all inputs

View File

@@ -36,7 +36,7 @@ type NodeConf struct {
Discoverable string `yaml:"discoverable,omitempty"` Discoverable string `yaml:"discoverable,omitempty"`
Profiles []string `yaml:"profiles,omitempty"` Profiles []string `yaml:"profiles,omitempty"`
NetDevs map[string]*NetDevs `yaml:"network devices,omitempty"` NetDevs map[string]*NetDevs `yaml:"network devices,omitempty"`
Keys map[string]string `yaml:"keys,omitempty"` Tags map[string]string `yaml:"tags,omitempty"`
} }
type NetDevs struct { type NetDevs struct {
@@ -88,7 +88,7 @@ type NodeInfo struct {
Profiles []string Profiles []string
GroupProfiles []string GroupProfiles []string
NetDevs map[string]*NetDevEntry NetDevs map[string]*NetDevEntry
Keys map[string]*Entry Tags map[string]*Entry
} }
type NetDevEntry struct { type NetDevEntry struct {

View File

@@ -79,7 +79,7 @@ func (config *nodeYaml) NodeUpdate(node NodeInfo) error {
config.Nodes[nodeID].Profiles = node.Profiles config.Nodes[nodeID].Profiles = node.Profiles
config.Nodes[nodeID].NetDevs = make(map[string]*NetDevs) config.Nodes[nodeID].NetDevs = make(map[string]*NetDevs)
config.Nodes[nodeID].Keys = make(map[string]string) config.Nodes[nodeID].Tags = make(map[string]string)
for devname, netdev := range node.NetDevs { for devname, netdev := range node.NetDevs {
var newdev NetDevs var newdev NetDevs
@@ -95,8 +95,8 @@ func (config *nodeYaml) NodeUpdate(node NodeInfo) error {
config.Nodes[nodeID].NetDevs[devname].Default = netdev.Default.GetReal() config.Nodes[nodeID].NetDevs[devname].Default = netdev.Default.GetReal()
} }
for keyname, key := range node.Keys { for keyname, key := range node.Tags {
config.Nodes[nodeID].Keys[keyname] = key.GetReal() config.Nodes[nodeID].Tags[keyname] = key.GetReal()
} }
return nil return nil
@@ -167,7 +167,7 @@ func (config *nodeYaml) ProfileUpdate(profile NodeInfo) error {
config.NodeProfiles[profileID].Profiles = profile.Profiles config.NodeProfiles[profileID].Profiles = profile.Profiles
config.NodeProfiles[profileID].NetDevs = make(map[string]*NetDevs) config.NodeProfiles[profileID].NetDevs = make(map[string]*NetDevs)
config.NodeProfiles[profileID].Keys = make(map[string]string) config.NodeProfiles[profileID].Tags = make(map[string]string)
for devname, netdev := range profile.NetDevs { for devname, netdev := range profile.NetDevs {
var newdev NetDevs var newdev NetDevs
@@ -183,8 +183,8 @@ func (config *nodeYaml) ProfileUpdate(profile NodeInfo) error {
config.NodeProfiles[profileID].NetDevs[devname].Default = netdev.Default.GetReal() config.NodeProfiles[profileID].NetDevs[devname].Default = netdev.Default.GetReal()
} }
for keyname, key := range profile.Keys { for keyname, key := range profile.Tags {
config.NodeProfiles[profileID].Keys[keyname] = key.GetReal() config.NodeProfiles[profileID].Tags[keyname] = key.GetReal()
} }
return nil return nil

View File

@@ -38,7 +38,7 @@ type TemplateStruct struct {
RuntimeOverlay string RuntimeOverlay string
SystemOverlay string SystemOverlay string
NetDevs map[string]*node.NetDevs NetDevs map[string]*node.NetDevs
Keys map[string]string Tags map[string]string
AllNodes []node.NodeInfo AllNodes []node.NodeInfo
NFSMounts []string NFSMounts []string
} }
@@ -187,7 +187,7 @@ func BuildOverlay(nodeInfo node.NodeInfo, overlayName string) error {
tstruct.RuntimeOverlay = nodeInfo.RuntimeOverlay.Get() tstruct.RuntimeOverlay = nodeInfo.RuntimeOverlay.Get()
tstruct.SystemOverlay = nodeInfo.SystemOverlay.Get() tstruct.SystemOverlay = nodeInfo.SystemOverlay.Get()
tstruct.NetDevs = make(map[string]*node.NetDevs) tstruct.NetDevs = make(map[string]*node.NetDevs)
tstruct.Keys = make(map[string]string) tstruct.Tags = make(map[string]string)
for devname, netdev := range nodeInfo.NetDevs { for devname, netdev := range nodeInfo.NetDevs {
var nd node.NetDevs var nd node.NetDevs
tstruct.NetDevs[devname] = &nd tstruct.NetDevs[devname] = &nd
@@ -208,8 +208,8 @@ func BuildOverlay(nodeInfo node.NodeInfo, overlayName string) error {
tstruct.NetDevs[devname].IpCIDR = netaddr.String() tstruct.NetDevs[devname].IpCIDR = netaddr.String()
} }
for keyname, key := range nodeInfo.Keys { for keyname, key := range nodeInfo.Tags {
tstruct.Keys[keyname] = key.Get() tstruct.Tags[keyname] = key.Get()
} }
tstruct.AllNodes = allNodes tstruct.AllNodes = allNodes
for _, export := range controller.Nfs.ExportsExtended { for _, export := range controller.Nfs.ExportsExtended {