Recursive handling for command line flags
Every struct in a NodeConf with `lopt:"foo" set is now added as a command-line flag with the RecursiveCreateFlags call. For maps a struct with the key UNDEF is added so that it can be parsed out. As the flags for the command-line need variables which hold the values, for every map an element map[UNDEF] is added. When now calling the internal add, these map element can be filtered out and replace by the given name. (e.g., --netname) * rewrote node/profile add for recursive functions * rewrote node/profile set for recursive functions * rewrote node/profile list for recursive functions Signed-off-by: Christian Goll <cgoll@suse.com>
This commit is contained in:
committed by
Jonathon Anderson
parent
c55c5a2ac4
commit
45539a0d1f
@@ -8,9 +8,9 @@ import (
|
||||
"os"
|
||||
|
||||
"github.com/hpcng/warewulf/internal/pkg/api/routes/wwapiv1"
|
||||
warewulfconf "github.com/hpcng/warewulf/internal/pkg/config"
|
||||
"github.com/hpcng/warewulf/internal/pkg/node"
|
||||
"github.com/hpcng/warewulf/internal/pkg/util"
|
||||
warewulfconf "github.com/hpcng/warewulf/internal/pkg/config"
|
||||
"github.com/hpcng/warewulf/internal/pkg/wwlog"
|
||||
"github.com/hpcng/warewulf/pkg/hostlist"
|
||||
"github.com/pkg/errors"
|
||||
@@ -270,15 +270,51 @@ func NodeSetParameterCheck(set *wwapiv1.NodeSetParameter, console bool) (nodeDB
|
||||
wwlog.Error(fmt.Sprintf("%v", err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
wwlog.Verbose("Node: %s, Deleting network device: %s", n.Id.Get(), set.NetdevDelete)
|
||||
delete(n.NetDevs, set.NetdevDelete)
|
||||
}
|
||||
if set.PartitionDelete != "" {
|
||||
deletedPart := false
|
||||
for diskname, disk := range n.Disks {
|
||||
if _, ok := disk.Partitions[set.PartitionDelete]; ok {
|
||||
wwlog.Verbose("Node: %s, on disk %, deleting partition: %s", n.Id.Get(), diskname, set.PartitionDelete)
|
||||
deletedPart = true
|
||||
delete(disk.Partitions, set.PartitionDelete)
|
||||
}
|
||||
if !deletedPart {
|
||||
wwlog.Error(fmt.Sprintf("%v", err.Error()))
|
||||
err = fmt.Errorf("partition doesn't exist: %s", set.PartitionDelete)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
if set.DiskDelete != "" {
|
||||
if _, ok := n.Disks[set.DiskDelete]; !ok {
|
||||
err = fmt.Errorf("disk doesn't exist: %s", set.DiskDelete)
|
||||
wwlog.Error(fmt.Sprintf("%v", err.Error()))
|
||||
return
|
||||
}
|
||||
wwlog.Verbose("Node: %s, deleting disk: %s", n.Id.Get(), set.DiskDelete)
|
||||
delete(n.Disks, set.DiskDelete)
|
||||
}
|
||||
if set.FilesystemDelete != "" {
|
||||
if _, ok := n.FileSystems[set.FilesystemDelete]; !ok {
|
||||
err = fmt.Errorf("filesystem doesn't exist: %s", set.FilesystemDelete)
|
||||
wwlog.Error(fmt.Sprintf("%v", err.Error()))
|
||||
return
|
||||
}
|
||||
wwlog.Verbose("Node: %s, deleting filesystem: %s", n.Id.Get(), set.FilesystemDelete)
|
||||
delete(n.FileSystems, set.FilesystemDelete)
|
||||
}
|
||||
for _, key := range nodeConf.TagsDel {
|
||||
wwlog.Debug("deleting tag %s", key)
|
||||
delete(n.Tags, key)
|
||||
}
|
||||
for _, key := range nodeConf.Ipmi.TagsDel {
|
||||
delete(n.Ipmi.Tags, key)
|
||||
if nodeConf.Ipmi != nil {
|
||||
for _, key := range nodeConf.Ipmi.TagsDel {
|
||||
wwlog.Debug("deleting Ipmi tag %s", key)
|
||||
delete(n.Ipmi.Tags, key)
|
||||
}
|
||||
}
|
||||
for net := range nodeConf.NetDevs {
|
||||
for _, key := range nodeConf.NetDevs[net].TagsDel {
|
||||
|
||||
Reference in New Issue
Block a user