Skip to content

Commit 40b8773

Browse files
author
jmccormick2001
committed
fix backup, requrie backup job to be removed before creating a new one
1 parent 0f0ff33 commit 40b8773

File tree

1 file changed

+64
-41
lines changed

1 file changed

+64
-41
lines changed

apiserver/backupservice/backupimpl.go

Lines changed: 64 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -170,50 +170,56 @@ func CreateBackup(request *msgs.CreateBackupRequest) msgs.CreateBackupResponse {
170170
}
171171
for _, arg := range request.Args {
172172
log.Debug("create backup called for " + arg)
173-
result := crv1.Pgbackup{}
174173

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")
190176
} 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)
215222
}
216-
resp.Results = append(resp.Results, "created Pgbackup "+arg)
217223

218224
}
219225

@@ -269,3 +275,20 @@ func getBackupParams(name, storageConfig string) (*crv1.Pgbackup, error) {
269275
}
270276
return newInstance, nil
271277
}
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

Comments
 (0)