@@ -170,50 +170,56 @@ func CreateBackup(request *msgs.CreateBackupRequest) msgs.CreateBackupResponse {
170
170
}
171
171
for _ , arg := range request .Args {
172
172
log .Debug ("create backup called for " + arg )
173
- result := crv1.Pgbackup {}
174
173
175
- // error if it already exists
176
- err = apiserver .RESTClient .Get ().
177
- Resource (crv1 .PgbackupResourcePlural ).
178
- Namespace (apiserver .Namespace ).
179
- Name (arg ).
180
- Do ().
181
- Into (& result )
182
- if err == nil {
183
- log .Debug ("pgbackup " + arg + " was found so we recreate it" )
184
- dels := make ([]string , 1 )
185
- dels [0 ] = arg
186
- DeleteBackup (arg )
187
- } else if kerrors .IsNotFound (err ) {
188
- msg := "pgbackup " + arg + " not found so we will create it"
189
- resp .Results = append (resp .Results , "pgbackup " + msg )
174
+ if BackupJobExists ("backup-" + arg ) {
175
+ resp .Results = append (resp .Results , "please delete job backup-" + arg + " before creating another backup" )
190
176
} else {
191
- log .Error ("error getting pgbackup " + arg )
192
- log .Error (err .Error ())
193
- resp .Results = append (resp .Results , "error getting pgbackup for " + arg )
194
- break
195
- }
196
- // Create an instance of our CRD
197
- newInstance , err = getBackupParams (arg , request .StorageConfig )
198
- if err != nil {
199
- msg := "error creating backup for " + arg
200
- log .Error (err )
201
- resp .Results = append (resp .Results , msg )
202
- break
203
- }
204
- err = apiserver .RESTClient .Post ().
205
- Resource (crv1 .PgbackupResourcePlural ).
206
- Namespace (apiserver .Namespace ).
207
- Body (newInstance ).
208
- Do ().Into (& result )
209
- if err != nil {
210
- log .Error ("error in creating Pgbackup CRD instance" )
211
- log .Error (err .Error ())
212
- resp .Status .Code = msgs .Error
213
- resp .Status .Msg = err .Error ()
214
- return resp
177
+
178
+ result := crv1.Pgbackup {}
179
+
180
+ // error if it already exists
181
+ err = apiserver .RESTClient .Get ().
182
+ Resource (crv1 .PgbackupResourcePlural ).
183
+ Namespace (apiserver .Namespace ).
184
+ Name (arg ).
185
+ Do ().
186
+ Into (& result )
187
+ if err == nil {
188
+ log .Debug ("pgbackup " + arg + " was found so we recreate it" )
189
+ dels := make ([]string , 1 )
190
+ dels [0 ] = arg
191
+ DeleteBackup (arg )
192
+ } else if kerrors .IsNotFound (err ) {
193
+ msg := "pgbackup " + arg + " not found so we will create it"
194
+ resp .Results = append (resp .Results , "pgbackup " + msg )
195
+ } else {
196
+ log .Error ("error getting pgbackup " + arg )
197
+ log .Error (err .Error ())
198
+ resp .Results = append (resp .Results , "error getting pgbackup for " + arg )
199
+ break
200
+ }
201
+ // Create an instance of our CRD
202
+ newInstance , err = getBackupParams (arg , request .StorageConfig )
203
+ if err != nil {
204
+ msg := "error creating backup for " + arg
205
+ log .Error (err )
206
+ resp .Results = append (resp .Results , msg )
207
+ break
208
+ }
209
+ err = apiserver .RESTClient .Post ().
210
+ Resource (crv1 .PgbackupResourcePlural ).
211
+ Namespace (apiserver .Namespace ).
212
+ Body (newInstance ).
213
+ Do ().Into (& result )
214
+ if err != nil {
215
+ log .Error ("error in creating Pgbackup CRD instance" )
216
+ log .Error (err .Error ())
217
+ resp .Status .Code = msgs .Error
218
+ resp .Status .Msg = err .Error ()
219
+ return resp
220
+ }
221
+ resp .Results = append (resp .Results , "created Pgbackup " + arg )
215
222
}
216
- resp .Results = append (resp .Results , "created Pgbackup " + arg )
217
223
218
224
}
219
225
@@ -269,3 +275,20 @@ func getBackupParams(name, storageConfig string) (*crv1.Pgbackup, error) {
269
275
}
270
276
return newInstance , nil
271
277
}
278
+
279
+ func BackupJobExists (name string ) bool {
280
+
281
+ options := meta_v1.GetOptions {}
282
+ resultJob , err := apiserver .Clientset .Batch ().Jobs (apiserver .Namespace ).Get (name , options )
283
+ if kerrors .IsNotFound (err ) {
284
+ log .Debug ("Job " + err .Error ())
285
+
286
+ return false
287
+ }
288
+ if err != nil {
289
+ log .Error ("error getting Job " + err .Error ())
290
+ return false
291
+ }
292
+ log .Debugf ("found job %v\n " , resultJob )
293
+ return true
294
+ }
0 commit comments