diff --git a/web/job.go b/web/job.go index 3a4752c..0659a32 100644 --- a/web/job.go +++ b/web/job.go @@ -78,7 +78,11 @@ func (j *Job) ChangeJobStatus(w http.ResponseWriter, r *http.Request) { } func (j *Job) UpdateJob(w http.ResponseWriter, r *http.Request) { - job := &models.Job{} + var job = &struct { + *models.Job + OldGroup string `json:"oldGroup"` + }{} + decoder := json.NewDecoder(r.Body) err := decoder.Decode(&job) if err != nil { @@ -92,10 +96,16 @@ func (j *Job) UpdateJob(w http.ResponseWriter, r *http.Request) { return } + var deleteOldKey string var successCode = http.StatusOK if len(job.ID) == 0 { successCode = http.StatusCreated job.ID = models.NextID() + } else { + job.OldGroup = strings.TrimSpace(job.OldGroup) + if job.OldGroup != job.Group { + deleteOldKey = models.JobKey(job.OldGroup, job.ID) + } } b, err := json.Marshal(job) @@ -110,6 +120,13 @@ func (j *Job) UpdateJob(w http.ResponseWriter, r *http.Request) { return } + // remove old key + if len(deleteOldKey) > 0 { + if _, err = models.DefalutClient.Delete(deleteOldKey); err != nil { + log.Errorf("failed to remove old job key[%s], err: %s.", deleteOldKey, err.Error()) + } + } + outJSONWithCode(w, successCode, nil) } diff --git a/web/ui/src/components/JobEdit.vue b/web/ui/src/components/JobEdit.vue index 93c2c86..d4389ff 100644 --- a/web/ui/src/components/JobEdit.vue +++ b/web/ui/src/components/JobEdit.vue @@ -59,7 +59,8 @@ export default { job: { id: '', name: '', - group: 'default', + oldGroup: '', + group: '', user: '', cmd: '', pause: false, @@ -121,6 +122,7 @@ export default { this.$rest.GET('job/'+this.$route.params.group+'-'+this.$route.params.id). onsucceed(200, (resp)=>{ vm.job = resp; + vm.job.oldGroup = resp.group; if (vm.job.rules) { for (var i in vm.job.rules) { if (vm.job.rules[i].id.length == 0) {