Files
warewulf/internal/pkg/api/node/edit.go
Rafael Lopez ca1830d8e1 Rename value in loop
Rename value from 'node' to 'nodeData' so it doesn't
coincide with the package import name.

Signed-off-by: Rafael Lopez <raflopez1@gmail.com>
2025-03-25 19:21:30 -06:00

42 lines
1012 B
Go

package apinode
import (
"fmt"
"github.com/warewulf/warewulf/internal/pkg/api/routes/wwapiv1"
"github.com/warewulf/warewulf/internal/pkg/node"
"gopkg.in/yaml.v3"
)
/*
Add nodes from yaml
*/
func NodeAddFromYaml(nodeList *wwapiv1.NodeYaml) (err error) {
nodeDB, err := node.New()
if err != nil {
return fmt.Errorf("could not open NodeDB: %w", err)
}
nodeMap := make(map[string]*node.Node)
err = yaml.Unmarshal([]byte(nodeList.NodeConfMapYaml), nodeMap)
if err != nil {
return fmt.Errorf("could not unmarshal Yaml: %w", err)
}
for nodeName, nodeData := range nodeMap {
if _, err = nodeDB.GetNodeOnly(nodeName); err == node.ErrNotFound {
_, err = nodeDB.AddNode(nodeName)
if err != nil {
return fmt.Errorf("couldn't add new node: %w", err)
}
}
err = nodeDB.SetNode(nodeName, *nodeData)
if err != nil {
return fmt.Errorf("couldn't set node: %w", err)
}
}
err = nodeDB.Persist()
if err != nil {
return fmt.Errorf("failed to persist nodedb: %w", err)
}
return nil
}