Skip to content

Commit

Permalink
logic to delete jobs added
Browse files Browse the repository at this point in the history
  • Loading branch information
MariusDieckmann committed May 17, 2021
1 parent 2dca884 commit e6edd19
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 5 deletions.
6 changes: 5 additions & 1 deletion database/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -192,11 +192,15 @@ func (handler *Handler) UpdateK8s(id string, k8s string, conf string) error {
}

//UpdateStatus Updates the status of a job
func (handler *Handler) UpdateStatus(id string, status api.JobStatusEnum, errorMsg string) error {
func (handler *Handler) UpdateStatus(id string, status api.JobStatusEnum, errorMsg string, isDeleted bool) error {
job := Job{
JobID: id,
}

if isDeleted {
job.IsDeleted = true
}

updateResult := handler.DB.Model(&job).Updates(Job{Status: status.String(), Error: errorMsg})
if updateResult.Error != nil {
log.Println(updateResult.Error)
Expand Down
1 change: 1 addition & 0 deletions database/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@ type Job struct {
Error string
ExpiryDate time.Time
ConfString string
IsDeleted bool
}
14 changes: 13 additions & 1 deletion endpoints/job.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,8 @@ func (apiHandler *BaktaJobAPI) GetJobsStatus(ctx context.Context, request *api.J
var jobIDs []string

for _, jobID := range request.GetJobs() {
isDeleted := false

err := apiHandler.dbHandler.CheckSecret(jobID.GetJobID(), jobID.GetSecret())
if err != nil {
err = fmt.Errorf("JobID does not match secret ID")
Expand All @@ -124,8 +126,18 @@ func (apiHandler *BaktaJobAPI) GetJobsStatus(ctx context.Context, request *api.J
return nil, err
}

if newStatus.Status == api.JobStatusEnum_SUCCESSFULL || newStatus.Status == api.JobStatusEnum_ERROR {
err := apiHandler.scheduler.DeleteJob(job.K8sID)
if err != nil {
err = fmt.Errorf("could not get updated job status")
return nil, err
}

isDeleted = true
}

if job.Status != newStatus.Status.String() {
err = apiHandler.dbHandler.UpdateStatus(jobID.GetJobID(), newStatus.Status, newStatus.ErrorMsg)
err = apiHandler.dbHandler.UpdateStatus(jobID.GetJobID(), newStatus.Status, newStatus.ErrorMsg, isDeleted)
if err != nil {
err = fmt.Errorf("could not update job status")
return nil, err
Expand Down
22 changes: 21 additions & 1 deletion endpoints/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,31 @@ func (apiHandler *BaktaUpdateAPI) UpdateStatus(ctx context.Context, request *api
return
}

err = apiHandler.dbHandler.UpdateStatus(request.GetJobID(), status.Status, status.ErrorMsg)
isDeleted := false

if status.Status == api.JobStatusEnum_SUCCESSFULL || status.Status == api.JobStatusEnum_ERROR {
job, err := apiHandler.dbHandler.GetJob(request.GetJobID())
if err != nil {
log.Println(err.Error())
return
}
if !job.IsDeleted {
err = apiHandler.scheduler.DeleteJob(job.K8sID)
if err != nil {
log.Println(err.Error())
return
}

isDeleted = true
}
}

err = apiHandler.dbHandler.UpdateStatus(request.GetJobID(), status.Status, status.ErrorMsg, isDeleted)
if err != nil {
log.Println(err.Error())
return
}

}()

return &api.Empty{}, nil
Expand Down
14 changes: 12 additions & 2 deletions scheduler/SimpleScheduler.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ import (
"github.com/ag-computational-bio/bakta-web-api-go/api"
"github.com/ag-computational-bio/bakta-web-backend/database"

restclient "k8s.io/client-go/rest"

batchv1 "k8s.io/api/batch/v1"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/client-go/util/homedir"
)
Expand Down Expand Up @@ -104,6 +104,16 @@ func (scheduler *SimpleScheduler) StartJob(jobID string, jobConfig *api.JobConfi
return scheduledJob, nil
}

func (scheduler *SimpleScheduler) DeleteJob(jobName string) error {
err := scheduler.k8sClient.BatchV1().Jobs(scheduler.namespace).Delete(context.TODO(), jobName, metav1.DeleteOptions{})
if err != nil && !errors.IsNotFound(err) {
log.Println(err.Error())
return err
}

return nil
}

func createOutOfClusterConfig() (*restclient.Config, error) {
var kubeconfig *string
if home := homedir.HomeDir(); home != "" {
Expand Down

0 comments on commit e6edd19

Please sign in to comment.