diff --git a/CHANGELOG.md b/CHANGELOG.md index 2171867a..b711645c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fixed panics in `wwctl node sensors` and `wwctl node console` when ipmi not configured. - Fixed completions for `wwctl` commands. - Return "" when NetDev.IpCIDR is empty. +- Updated `wwctl node export` to include node IDs. #1718 ### Removed diff --git a/internal/app/wwctl/node/export/main.go b/internal/app/wwctl/node/export/main.go index ce84b1d0..0a2af12f 100644 --- a/internal/app/wwctl/node/export/main.go +++ b/internal/app/wwctl/node/export/main.go @@ -2,18 +2,31 @@ package export import ( "github.com/spf13/cobra" - apinode "github.com/warewulf/warewulf/internal/pkg/api/node" - "github.com/warewulf/warewulf/internal/pkg/api/routes/wwapiv1" "github.com/warewulf/warewulf/internal/pkg/hostlist" + "github.com/warewulf/warewulf/internal/pkg/node" + "github.com/warewulf/warewulf/internal/pkg/util" "github.com/warewulf/warewulf/internal/pkg/wwlog" ) func CobraRunE(cmd *cobra.Command, args []string) error { - args = hostlist.Expand(args) - filterList := wwapiv1.NodeList{ - Output: args, + registry, err := node.New() + if err != nil { + return err } - nodeListMsg := apinode.FilteredNodes(&filterList) - wwlog.Info(nodeListMsg.NodeConfMapYaml) + nodeMap := make(map[string]*node.Node) + names := hostlist.Expand(args) + if len(names) == 0 { + names = registry.ListAllNodes() + } + for _, name := range hostlist.Expand(names) { + if n, err := registry.GetNode(name); err == nil { + nodeMap[name] = &n + } + } + y, err := util.EncodeYaml(nodeMap) + if err != nil { + return err + } + wwlog.Output("%s", y) return nil } diff --git a/internal/pkg/api/node/edit.go b/internal/pkg/api/node/edit.go index dc988bde..31f46358 100644 --- a/internal/pkg/api/node/edit.go +++ b/internal/pkg/api/node/edit.go @@ -2,33 +2,12 @@ package apinode import ( "fmt" - "os" "github.com/warewulf/warewulf/internal/pkg/api/routes/wwapiv1" "github.com/warewulf/warewulf/internal/pkg/node" - "github.com/warewulf/warewulf/internal/pkg/wwlog" "gopkg.in/yaml.v3" ) -/* -Returns filtered list of nodes -*/ -func FilteredNodes(nodeList *wwapiv1.NodeList) *wwapiv1.NodeYaml { - nodeDB, err := node.New() - if err != nil { - wwlog.Error("Could not open nodeDB: %s\n", err) - os.Exit(1) - } - nodeMap, _ := nodeDB.FindAllNodes() - nodeMap = node.FilterNodeListByName(nodeMap, nodeList.Output) - buffer, _ := yaml.Marshal(nodeMap) - retVal := wwapiv1.NodeYaml{ - NodeConfMapYaml: string(buffer), - Hash: nodeDB.StringHash(), - } - return &retVal -} - /* Add nodes from yaml */