Files
warewulf/internal/app/wwctl/image/kernels/main.go
Jonathon Anderson 45a690ca4e Rename "container" to "image"
- Updated `wwctl upgrade` to handle updates
- Maintained `.Container` and `.ContainerName` in tstruct
- Added `ContainerName()` methods to node and profile objects
- Added `--container`, `-C` aliases to wwctl commands (`<node|profile> <add|set>`)
- Added `wwctl container` alias
- Added support for `container_exit.sh` if `image_exit.sh` is not found

Signed-off-by: Jonathon Anderson <janderson@ciq.com>
2025-01-19 05:54:19 -07:00

61 lines
1.5 KiB
Go

package kernels
import (
"strconv"
"github.com/spf13/cobra"
"github.com/warewulf/warewulf/internal/app/wwctl/table"
"github.com/warewulf/warewulf/internal/pkg/image"
"github.com/warewulf/warewulf/internal/pkg/kernel"
"github.com/warewulf/warewulf/internal/pkg/node"
)
func CobraRunE(cmd *cobra.Command, args []string) error {
nodesYaml, err := node.New()
if err != nil {
return err
}
nodes, err := nodesYaml.FindAllNodes()
if err != nil {
return err
}
kernelNodes := make(map[kernel.Kernel]int)
for _, node := range nodes {
kernel_ := kernel.FromNode(&node)
if kernel_ != nil {
kernelNodes[*kernel_]++
}
}
var sources []string
if len(args) == 0 {
if sources_, err := image.ListSources(); err == nil {
sources = sources_
} else {
return err
}
} else {
sources = args
}
t := table.New(cmd.OutOrStdout())
t.AddHeader("Image", "Kernel", "Version", "Default", "Nodes")
for _, source := range sources {
imageKernels := kernel.FindKernels(source)
defaultKernel := imageKernels.Default()
for _, kernel_ := range imageKernels {
isDefault := defaultKernel != nil && defaultKernel == kernel_
defaultStr := strconv.FormatBool(isDefault)
nodeCount := kernelNodes[*kernel_]
if isDefault {
nodeCount = nodeCount + kernelNodes[kernel.Kernel{ImageName: source, Path: ""}]
}
t.AddLine(table.Prep([]string{source, kernel_.Path, kernel_.Version(), defaultStr, strconv.Itoa(nodeCount)})...)
}
}
t.Print()
return nil
}