Skip to content

Commit 7d0ed2e

Browse files
author
Jeff McCormick
committed
add selector flag to backup command
1 parent c90e06a commit 7d0ed2e

File tree

1 file changed

+40
-2
lines changed

1 file changed

+40
-2
lines changed

client/cmd/backup.go

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import (
2121
log "github.com/Sirupsen/logrus"
2222
"github.com/crunchydata/postgres-operator/tpr"
2323
"github.com/spf13/cobra"
24+
"k8s.io/apimachinery/pkg/labels"
25+
2426
"github.com/spf13/viper"
2527
"k8s.io/apimachinery/pkg/api/errors"
2628
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -34,8 +36,8 @@ var backupCmd = &cobra.Command{
3436
pgo backup mycluster`,
3537
Run: func(cmd *cobra.Command, args []string) {
3638
log.Debug("backup called")
37-
if len(args) == 0 {
38-
fmt.Println(`You must specify the cluster to backup.`)
39+
if len(args) == 0 && Selector == "" {
40+
fmt.Println(`You must specify the cluster to backup or a selector flag.`)
3941
} else {
4042
createBackup(args)
4143
}
@@ -45,6 +47,8 @@ var backupCmd = &cobra.Command{
4547

4648
func init() {
4749
RootCmd.AddCommand(backupCmd)
50+
51+
backupCmd.Flags().StringVarP(&Selector, "selector", "s", "", "The selector to use for cluster filtering ")
4852
}
4953

5054
func showBackup(args []string) {
@@ -151,6 +155,40 @@ func createBackup(args []string) {
151155
var err error
152156
var newInstance *tpr.PgBackup
153157

158+
if Selector != "" {
159+
//use the selector instead of an argument list to filter on
160+
161+
myselector, err := labels.Parse(Selector)
162+
if err != nil {
163+
log.Error("could not parse selector flag")
164+
return
165+
}
166+
167+
//get the clusters list
168+
clusterList := tpr.PgClusterList{}
169+
err = Tprclient.Get().
170+
Resource(tpr.CLUSTER_RESOURCE).
171+
Namespace(Namespace).
172+
LabelsSelectorParam(myselector).
173+
Do().
174+
Into(&clusterList)
175+
if err != nil {
176+
log.Error("error getting cluster list" + err.Error())
177+
return
178+
}
179+
180+
if len(clusterList.Items) == 0 {
181+
log.Debug("no clusters found")
182+
} else {
183+
newargs := make([]string, 0)
184+
for _, cluster := range clusterList.Items {
185+
newargs = append(newargs, cluster.Spec.Name)
186+
}
187+
args = newargs
188+
}
189+
190+
}
191+
154192
for _, arg := range args {
155193
log.Debug("create backup called for " + arg)
156194
result := tpr.PgBackup{}

0 commit comments

Comments
 (0)