registryDelete/nodeDelete: make --all work and add 'node delete --registries'
This commit is contained in:
parent
a37b01c5b9
commit
683a92792e
@ -30,25 +30,37 @@ import (
|
|||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type nodeDeleteFlags struct {
|
||||||
|
All bool
|
||||||
|
IncludeRegistries bool
|
||||||
|
}
|
||||||
|
|
||||||
// NewCmdNodeDelete returns a new cobra command
|
// NewCmdNodeDelete returns a new cobra command
|
||||||
func NewCmdNodeDelete() *cobra.Command {
|
func NewCmdNodeDelete() *cobra.Command {
|
||||||
|
|
||||||
|
flags := nodeDeleteFlags{}
|
||||||
|
|
||||||
// create new cobra command
|
// create new cobra command
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "delete (NAME | --all)",
|
Use: "delete (NAME | --all)",
|
||||||
Short: "Delete node(s).",
|
Short: "Delete node(s).",
|
||||||
Long: `Delete node(s).`,
|
Long: `Delete node(s).`,
|
||||||
Args: cobra.MinimumNArgs(1), // at least one node has to be specified
|
|
||||||
ValidArgsFunction: util.ValidArgsAvailableNodes,
|
ValidArgsFunction: util.ValidArgsAvailableNodes,
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
|
|
||||||
nodes := parseDeleteNodeCmd(cmd, args)
|
nodes := parseDeleteNodeCmd(cmd, args, &flags)
|
||||||
|
nodeDeleteOpts := k3d.NodeDeleteOpts{
|
||||||
|
SkipRegistryCheck: true,
|
||||||
|
}
|
||||||
|
if flags.All {
|
||||||
|
nodeDeleteOpts.SkipLBUpdate = true
|
||||||
|
}
|
||||||
|
|
||||||
if len(nodes) == 0 {
|
if len(nodes) == 0 {
|
||||||
log.Infoln("No nodes found")
|
log.Infoln("No nodes found")
|
||||||
} else {
|
} else {
|
||||||
for _, node := range nodes {
|
for _, node := range nodes {
|
||||||
if err := client.NodeDelete(cmd.Context(), runtimes.SelectedRuntime, node, k3d.NodeDeleteOpts{SkipRegistryCheck: true}); err != nil {
|
if err := client.NodeDelete(cmd.Context(), runtimes.SelectedRuntime, node, nodeDeleteOpts); err != nil {
|
||||||
log.Fatalln(err)
|
log.Fatalln(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -59,30 +71,38 @@ func NewCmdNodeDelete() *cobra.Command {
|
|||||||
// add subcommands
|
// add subcommands
|
||||||
|
|
||||||
// add flags
|
// add flags
|
||||||
cmd.Flags().BoolP("all", "a", false, "Delete all existing nodes")
|
cmd.Flags().BoolVarP(&flags.All, "all", "a", false, "Delete all existing nodes")
|
||||||
|
cmd.Flags().BoolVarP(&flags.IncludeRegistries, "registries", "r", false, "Also delete registries")
|
||||||
|
|
||||||
// done
|
// done
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
// parseDeleteNodeCmd parses the command input into variables required to delete nodes
|
// parseDeleteNodeCmd parses the command input into variables required to delete nodes
|
||||||
func parseDeleteNodeCmd(cmd *cobra.Command, args []string) []*k3d.Node {
|
func parseDeleteNodeCmd(cmd *cobra.Command, args []string, flags *nodeDeleteFlags) []*k3d.Node {
|
||||||
|
|
||||||
|
var nodes []*k3d.Node
|
||||||
|
var err error
|
||||||
|
|
||||||
// --all
|
// --all
|
||||||
var nodes []*k3d.Node
|
if flags.All {
|
||||||
|
if !flags.IncludeRegistries {
|
||||||
if all, err := cmd.Flags().GetBool("all"); err != nil {
|
log.Infoln("Didn't set '--registries', so won't delete registries.")
|
||||||
log.Fatalln(err)
|
}
|
||||||
} else if all {
|
|
||||||
nodes, err = client.NodeList(cmd.Context(), runtimes.SelectedRuntime)
|
nodes, err = client.NodeList(cmd.Context(), runtimes.SelectedRuntime)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln(err)
|
log.Fatalln(err)
|
||||||
}
|
}
|
||||||
nodes = client.NodeFilterByRoles(nodes, k3d.ClusterInternalNodeRoles, k3d.ClusterInternalNodeRoles)
|
include := k3d.ClusterInternalNodeRoles
|
||||||
|
exclude := []k3d.Role{}
|
||||||
|
if flags.IncludeRegistries {
|
||||||
|
include = append(include, k3d.RegistryRole)
|
||||||
|
}
|
||||||
|
nodes = client.NodeFilterByRoles(nodes, include, exclude)
|
||||||
return nodes
|
return nodes
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(args) < 1 {
|
if !flags.All && len(args) < 1 {
|
||||||
log.Fatalln("Expecting at least one node name if `--all` is not set")
|
log.Fatalln("Expecting at least one node name if `--all` is not set")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,25 +30,30 @@ import (
|
|||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type registryDeleteFlags struct {
|
||||||
|
All bool
|
||||||
|
}
|
||||||
|
|
||||||
// NewCmdRegistryDelete returns a new cobra command
|
// NewCmdRegistryDelete returns a new cobra command
|
||||||
func NewCmdRegistryDelete() *cobra.Command {
|
func NewCmdRegistryDelete() *cobra.Command {
|
||||||
|
|
||||||
|
flags := registryDeleteFlags{}
|
||||||
|
|
||||||
// create new cobra command
|
// create new cobra command
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "delete (NAME | --all)",
|
Use: "delete (NAME | --all)",
|
||||||
Short: "Delete registry/registries.",
|
Short: "Delete registry/registries.",
|
||||||
Long: `Delete registry/registries.`,
|
Long: `Delete registry/registries.`,
|
||||||
Args: cobra.MinimumNArgs(1), // at least one node has to be specified
|
|
||||||
ValidArgsFunction: util.ValidArgsAvailableRegistries,
|
ValidArgsFunction: util.ValidArgsAvailableRegistries,
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
|
|
||||||
nodes := parseRegistryDeleteCmd(cmd, args)
|
nodes := parseRegistryDeleteCmd(cmd, args, &flags)
|
||||||
|
|
||||||
if len(nodes) == 0 {
|
if len(nodes) == 0 {
|
||||||
log.Infoln("No nodes found")
|
log.Infoln("No registries found")
|
||||||
} else {
|
} else {
|
||||||
for _, node := range nodes {
|
for _, node := range nodes {
|
||||||
if err := client.NodeDelete(cmd.Context(), runtimes.SelectedRuntime, node, k3d.NodeDeleteOpts{SkipLBUpdate: true}); err != nil {
|
if err := client.NodeDelete(cmd.Context(), runtimes.SelectedRuntime, node, k3d.NodeDeleteOpts{SkipLBUpdate: true, SkipRegistryCheck: true}); err != nil {
|
||||||
log.Fatalln(err)
|
log.Fatalln(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -59,29 +64,26 @@ func NewCmdRegistryDelete() *cobra.Command {
|
|||||||
// add subcommands
|
// add subcommands
|
||||||
|
|
||||||
// add flags
|
// add flags
|
||||||
cmd.Flags().BoolP("all", "a", false, "Delete all existing registries")
|
cmd.Flags().BoolVarP(&flags.All, "all", "a", false, "Delete all existing registries")
|
||||||
|
|
||||||
// done
|
// done
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
// parseRegistryDeleteCmd parses the command input into variables required to delete nodes
|
// parseRegistryDeleteCmd parses the command input into variables required to delete nodes
|
||||||
func parseRegistryDeleteCmd(cmd *cobra.Command, args []string) []*k3d.Node {
|
func parseRegistryDeleteCmd(cmd *cobra.Command, args []string, flags *registryDeleteFlags) []*k3d.Node {
|
||||||
|
|
||||||
// --all
|
|
||||||
var nodes []*k3d.Node
|
var nodes []*k3d.Node
|
||||||
|
var err error
|
||||||
|
|
||||||
if all, err := cmd.Flags().GetBool("all"); err != nil {
|
if flags.All {
|
||||||
log.Fatalln(err)
|
|
||||||
} else if all {
|
|
||||||
nodes, err = client.NodeList(cmd.Context(), runtimes.SelectedRuntime)
|
nodes, err = client.NodeList(cmd.Context(), runtimes.SelectedRuntime)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln(err)
|
log.Fatalln(err)
|
||||||
}
|
}
|
||||||
return nodes
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(args) < 1 {
|
if !flags.All && len(args) < 1 {
|
||||||
log.Fatalln("Expecting at least one registry name if `--all` is not set")
|
log.Fatalln("Expecting at least one registry name if `--all` is not set")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,5 +95,7 @@ func parseRegistryDeleteCmd(cmd *cobra.Command, args []string) []*k3d.Node {
|
|||||||
nodes = append(nodes, node)
|
nodes = append(nodes, node)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nodes = client.NodeFilterByRoles(nodes, []k3d.Role{k3d.RegistryRole}, []k3d.Role{})
|
||||||
|
|
||||||
return nodes
|
return nodes
|
||||||
}
|
}
|
||||||
|
@ -77,6 +77,7 @@ k3d
|
|||||||
stop NODENAME # stop a node
|
stop NODENAME # stop a node
|
||||||
delete NODENAME # delete an existing node
|
delete NODENAME # delete an existing node
|
||||||
-a, --all # delete all existing nodes (default: false)
|
-a, --all # delete all existing nodes (default: false)
|
||||||
|
-r, --registries # also delete registries, as a special type of node (default: false)
|
||||||
list NODENAME
|
list NODENAME
|
||||||
--no-headers # do not print headers (default: false)
|
--no-headers # do not print headers (default: false)
|
||||||
registry
|
registry
|
||||||
|
@ -442,5 +442,8 @@ nodeLoop:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.Tracef("Filteres %d nodes by roles (in: %+v | ex: %+v), got %d left", len(nodes), includeRoles, excludeRoles, len(resultList))
|
||||||
|
|
||||||
return resultList
|
return resultList
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user