Skip to content

Commit 3a3cc99

Browse files
author
Jeff McCormick
committed
add selector logic to pgo delete cluster
1 parent 7d0ed2e commit 3a3cc99

File tree

2 files changed

+39
-8
lines changed

2 files changed

+39
-8
lines changed

client/cmd/cluster.go

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -331,12 +331,41 @@ func getClusterParams(name string) *tpr.PgCluster {
331331
}
332332

333333
func deleteCluster(args []string) {
334+
334335
// Fetch a list of our cluster TPRs
335336
clusterList := tpr.PgClusterList{}
336-
err := Tprclient.Get().Resource(tpr.CLUSTER_RESOURCE).Do().Into(&clusterList)
337-
if err != nil {
338-
log.Error("error getting cluster list" + err.Error())
339-
return
337+
338+
if Selector != "" {
339+
//use the selector instead of an argument list to filter on
340+
341+
myselector, err := labels.Parse(Selector)
342+
if err != nil {
343+
log.Error("could not parse selector flag")
344+
return
345+
}
346+
347+
//get the clusters list
348+
err = Tprclient.Get().
349+
Resource(tpr.CLUSTER_RESOURCE).
350+
Namespace(Namespace).
351+
LabelsSelectorParam(myselector).
352+
Do().
353+
Into(&clusterList)
354+
if err != nil {
355+
log.Error("error getting cluster list" + err.Error())
356+
return
357+
}
358+
359+
if len(clusterList.Items) == 0 {
360+
log.Debug("no clusters found")
361+
} else {
362+
newargs := make([]string, 0)
363+
for _, cluster := range clusterList.Items {
364+
newargs = append(newargs, cluster.Spec.Name)
365+
}
366+
args = newargs
367+
}
368+
340369
}
341370

342371
//to remove a cluster, you just have to remove
@@ -347,10 +376,10 @@ func deleteCluster(args []string) {
347376
for _, cluster := range clusterList.Items {
348377
if arg == "all" || arg == cluster.Spec.Name {
349378
clusterFound = true
350-
err = Tprclient.Delete().
379+
err := Tprclient.Delete().
351380
Resource(tpr.CLUSTER_RESOURCE).
352381
Namespace(Namespace).
353-
Name(cluster.Spec.Name).
382+
Name(arg).
354383
Do().
355384
Error()
356385
if err != nil {

client/cmd/delete.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ func init() {
6666
RootCmd.AddCommand(deleteCmd)
6767
deleteCmd.AddCommand(deletePolicyCmd)
6868
deleteCmd.AddCommand(deleteClusterCmd)
69+
deleteClusterCmd.Flags().StringVarP(&Selector, "selector", "s", "", "The selector to use for cluster filtering ")
70+
6971
deleteCmd.AddCommand(deleteBackupCmd)
7072
deleteCmd.AddCommand(deleteUpgradeCmd)
7173

@@ -105,8 +107,8 @@ var deleteClusterCmd = &cobra.Command{
105107
Long: `delete a crunchy cluster. For example:
106108
pgo delete cluster mycluster`,
107109
Run: func(cmd *cobra.Command, args []string) {
108-
if len(args) == 0 {
109-
log.Error("a cluster name is required for this command")
110+
if len(args) == 0 && Selector == "" {
111+
log.Error("a cluster name or selector is required for this command")
110112
} else {
111113
deleteCluster(args)
112114
}

0 commit comments

Comments
 (0)