@@ -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
4648func init () {
4749 RootCmd .AddCommand (backupCmd )
50+
51+ backupCmd .Flags ().StringVarP (& Selector , "selector" , "s" , "" , "The selector to use for cluster filtering " )
4852}
4953
5054func 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