Merge remote-tracking branch 'jason/issue/658' into development

Signed-off-by: Jonathon Anderson <janderson@ciq.co>
This commit is contained in:
Jonathon Anderson
2023-04-16 18:43:59 -06:00
10 changed files with 191 additions and 59 deletions

View File

@@ -126,22 +126,41 @@ func ProfileSetParameterCheck(set *wwapiv1.NodeSetParameter, console bool) (node
/*
Adds a new profile with the given name
*/
func AddProfile(set *wwapiv1.NodeSetParameter, console bool) error {
func AddProfile(nsp *wwapiv1.NodeSetParameter) error {
if nsp == nil {
return fmt.Errorf("NodeSetParameter is nill")
}
nodeDB, err := node.New()
if err != nil {
return errors.Wrap(err, "Could not open database")
}
if util.InSlice(nodeDB.ListAllProfiles(), set.NodeNames[0]) {
return errors.New(fmt.Sprintf("profile with name %s allready exists", set.NodeNames[0]))
if util.InSlice(nodeDB.ListAllProfiles(), nsp.NodeNames[0]) {
return errors.New(fmt.Sprintf("profile with name %s allready exists", nsp.NodeNames[0]))
}
_, err = nodeDB.AddProfile(set.NodeNames[0])
var nodeConf node.NodeConf
err = yaml.Unmarshal([]byte(nsp.NodeConfYaml), &nodeConf)
if err != nil {
return errors.Wrap(err, "Could not create new profile")
return errors.Wrap(err, "failed to decode nodeConf")
}
err = apinode.DbSave(&nodeDB)
n, err := nodeDB.AddProfile(nsp.NodeNames[0])
if err != nil {
return errors.Wrap(err, "Could not persist new profile")
return errors.Wrap(err, "failed to add node")
}
n.SetFrom(&nodeConf)
err = nodeDB.ProfileUpdate(n)
if err != nil {
return errors.Wrap(err, "failed to update nodedb")
}
err = nodeDB.Persist()
if err != nil {
return errors.Wrap(err, "failed to persist new profile")
}
return nil
}

View File

@@ -14,8 +14,10 @@ import (
"gopkg.in/yaml.v2"
)
var ConfigFile string
var DefaultConfig string
var (
ConfigFile string
DefaultConfig string
)
// used as fallback if DefaultConfig can't be read
var FallBackConf = `---

View File

@@ -38,7 +38,6 @@ func (config *NodeYaml) AddNode(nodeID string) (NodeInfo, error) {
}
func (config *NodeYaml) DelNode(nodeID string) error {
if _, ok := config.Nodes[nodeID]; !ok {
return errors.New("Nodename does not exist: " + nodeID)
}
@@ -76,14 +75,14 @@ func (config *NodeYaml) AddProfile(profileID string) (NodeInfo, error) {
}
config.NodeProfiles[profileID] = &node
config.NodeProfiles[profileID].NetDevs = make(map[string]*NetDevs)
n.Id.Set(profileID)
n.NetDevs = make(map[string]*NetDevEntry)
return n, nil
}
func (config *NodeYaml) DelProfile(profileID string) error {
if _, ok := config.NodeProfiles[profileID]; !ok {
return errors.New("Profile does not exist: " + profileID)
}
@@ -121,7 +120,7 @@ func (config *NodeYaml) Persist() error {
wwlog.Error("%s", dumpErr)
os.Exit(1)
}
file, err := os.OpenFile(ConfigFile, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
file, err := os.OpenFile(ConfigFile, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o644)
if err != nil {
wwlog.Error("%s", err)
os.Exit(1)