Files
warewulf/internal/pkg/api/profile/add.go
Christian Goll 0dd0317740 replaced errors.Wrap with fmt.Errorf
Signed-off-by: Christian Goll <cgoll@suse.com>
2024-11-07 22:57:29 -07:00

43 lines
1012 B
Go

package apiprofile
import (
"fmt"
"github.com/pkg/errors"
"github.com/warewulf/warewulf/internal/pkg/api/routes/wwapiv1"
"github.com/warewulf/warewulf/internal/pkg/node"
"github.com/warewulf/warewulf/internal/pkg/util"
"gopkg.in/yaml.v3"
)
/*
Adds a new profile with the given name
*/
func ProfileAdd(nsp *wwapiv1.NodeAddParameter) error {
if nsp == nil {
return fmt.Errorf("NodeAddParameter is nill")
}
nodeDB, err := node.New()
if err != nil {
return fmt.Errorf("Could not open database: %w", err)
}
for _, p := range nsp.NodeNames {
if util.InSlice(nodeDB.ListAllProfiles(), p) {
return errors.New(fmt.Sprintf("profile with name %s already exists", p))
}
pNew, err := nodeDB.AddProfile(p)
if err != nil {
return err
}
err = yaml.Unmarshal([]byte(nsp.NodeConfYaml), &pNew)
if err != nil {
return fmt.Errorf("failed to add profile: %w", err)
}
}
err = nodeDB.Persist()
if err != nil {
return fmt.Errorf("failed to persist new profile: %w", err)
}
return nil
}