change network hadnling

This commit is contained in:
Christian Goll
2022-07-12 10:42:05 +02:00
parent c8d70e23ad
commit 59141a6dac
6 changed files with 190 additions and 285 deletions

View File

@@ -407,13 +407,13 @@ func NodeList(nodeNames []string) (nodeInfo []*wwapiv1.NodeInfo, err error) {
Value: node.Ipmi.Interface.Get(),
Print: node.Ipmi.Interface.Print(),
}
ni.Tags = map[string]*wwapiv1.NodeField{}
for keyname, keyvalue := range node.Tags {
ni.Tags[keyname] = new(wwapiv1.NodeField)
ni.Tags[keyname].Source = keyvalue.Source()
ni.Tags[keyname].Value = keyvalue.Get()
ni.Tags[keyname].Print = keyvalue.Print()
}
ni.NetDevs = map[string]*wwapiv1.NetDev{}
for name, netdev := range node.NetDevs {
@@ -540,87 +540,18 @@ func NodeSetParameterCheck(set *wwapiv1.NodeSetParameter, console bool) (nodeDB
}
}
if set.Container != "" {
wwlog.Printf(wwlog.VERBOSE, "Node: %s, Setting container name to: %s\n", n.Id.Get(), set.Container)
n.ContainerName.Set(set.Container)
if set.NetdevDelete != "" {
if _, ok := n.NetDevs[set.NetdevDelete]; !ok {
err = fmt.Errorf("Network device name doesn't exist: %s", set.NetdevDelete)
wwlog.Printf(wwlog.ERROR, fmt.Sprintf("%v\n", err.Error()))
return
}
wwlog.Printf(wwlog.VERBOSE, "Node: %s, Deleting network device: %s\n", n.Id.Get(), set.NetdevDelete)
delete(n.NetDevs, set.NetdevDelete)
}
/*
if set.NetdevDelete {
err = checkNetNameRequired(set.Netname)
if err != nil {
return
}
if _, ok := n.NetDevs[set.Netname]; !ok {
err = fmt.Errorf("Network device name doesn't exist: %s", set.Netname)
wwlog.Printf(wwlog.ERROR, fmt.Sprintf("%v\n", err.Error()))
return
}
wwlog.Printf(wwlog.VERBOSE, "Node: %s, Deleting network device: %s\n", n.Id.Get(), set.Netname)
delete(n.NetDevs, set.Netname)
}
*/
if len(set.Tags) > 0 {
for _, t := range set.Tags {
keyval := strings.SplitN(t, "=", 2)
key := keyval[0]
val := keyval[1]
if _, ok := n.Tags[key]; !ok {
var nd node.Entry
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)
}
}
if len(set.TagsDelete) > 0 {
for _, t := range set.TagsDelete {
keyval := strings.SplitN(t, "=", 1)
key := keyval[0]
if _, ok := n.Tags[key]; !ok {
wwlog.Printf(wwlog.WARN, "Key does not exist: %s\n", key)
os.Exit(1)
}
wwlog.Printf(wwlog.VERBOSE, "Node: %s, Deleting tag: %s\n", n.Id.Get(), key)
delete(n.Tags, key)
}
}
/*
if len(set.NetTags) > 0 {
for _, t := range set.NetTags {
keyval := strings.SplitN(t, "=", 2)
key := keyval[0]
val := keyval[1]
if _, ok := n.NetDevs[set.Netname].Tags[key]; !ok {
var nd node.Entry
n.NetDevs[set.Netname].Tags[key] = &nd
}
wwlog.Printf(wwlog.VERBOSE, "Node: %s:%s, Setting NETTAG '%s'='%s'\n", n.Id.Get(), set.Netname, key, val)
n.NetDevs[set.Netname].Tags[key].Set(val)
}
}
if len(set.NetDeleteTags) > 0 {
for _, t := range set.NetDeleteTags {
keyval := strings.SplitN(t, "=", 1)
key := keyval[0]
if _, ok := n.NetDevs[set.Netname].Tags[key]; !ok {
wwlog.Printf(wwlog.WARN, "Node: %s:%s Key %s does not exist\n", n.Id.Get(), set.Netname, key)
os.Exit(1)
}
wwlog.Printf(wwlog.VERBOSE, "Node: %s:%s, Deleting Tag %s\n", n.Id.Get(), set.Netname, key)
delete(n.NetDevs[set.Netname].Tags, key)
}
}
*/
err := nodeDB.NodeUpdate(n)
if err != nil {
wwlog.Printf(wwlog.ERROR, "%s\n", err)
@@ -744,3 +675,31 @@ func nodeDbSave(nodeDB *node.NodeYaml) (err error) {
}
return
}
/*
Add the netname to the options map, as its only known after the map
command line options have been read out.
*/
func AddNetname(theMap map[string]*string) (map[string]*string, bool) {
foundNetname := false
netname := ""
retMap := make(map[string]*string)
for key, val := range theMap {
if key == "NetDevs" {
foundNetname = true
netname = *val
}
}
if foundNetname {
for key, val := range theMap {
keys := strings.Split(key, ".")
myVal := *val
if len(keys) >= 2 && keys[0] == "NetDevs" {
retMap[keys[0]+"."+netname+"."+strings.Join(keys[1:], ".")] = &myVal
} else {
retMap[key] = &myVal
}
}
}
return retMap, foundNetname
}