Rename value from 'node' to 'nodeData' so it doesn't coincide with the package import name. Signed-off-by: Rafael Lopez <raflopez1@gmail.com>
42 lines
1012 B
Go
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
|
|
}
|