| @@ -30,6 +30,7 @@ const ( | |||||
| Custom = "custom" | Custom = "custom" | ||||
| LogPageSize = 500 | LogPageSize = 500 | ||||
| LogPageTokenExpired = "5m" | LogPageTokenExpired = "5m" | ||||
| pageSize = 15 | |||||
| ) | ) | ||||
| func getRestyClient() *resty.Client { | func getRestyClient() *resty.Client { | ||||
| @@ -218,6 +219,8 @@ func CommitImage(jobID string, params models.CommitImageParams) error { | |||||
| if err != nil && !models.IsErrImageNotExist(err) { | if err != nil && !models.IsErrImageNotExist(err) { | ||||
| return fmt.Errorf("resty CommitImage: %v", err) | return fmt.Errorf("resty CommitImage: %v", err) | ||||
| } | } | ||||
| var createTime time.Time | |||||
| var isSetCreatedUnix = false | |||||
| if dbImage != nil { | if dbImage != nil { | ||||
| if dbImage.UID != params.UID { | if dbImage.UID != params.UID { | ||||
| return models.ErrorImageTagExist{ | return models.ErrorImageTagExist{ | ||||
| @@ -229,6 +232,19 @@ func CommitImage(jobID string, params models.CommitImageParams) error { | |||||
| Tag: params.ImageTag, | Tag: params.ImageTag, | ||||
| } | } | ||||
| } else { //覆盖提交 | |||||
| result, err := GetImagesPageable(1, pageSize, Custom, "") | |||||
| if err == nil && result.Code == "S000" { | |||||
| for _, v := range result.Payload.ImageInfo { | |||||
| if v.Place == dbImage.Place { | |||||
| isSetCreatedUnix = true | |||||
| createTime, _ = time.Parse(time.RFC3339, v.Createtime) | |||||
| break | |||||
| } | |||||
| } | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -277,6 +293,7 @@ sendjob: | |||||
| dbImage.IsPrivate = params.IsPrivate | dbImage.IsPrivate = params.IsPrivate | ||||
| dbImage.Description = params.ImageDescription | dbImage.Description = params.ImageDescription | ||||
| dbImage.Status = models.IMAGE_STATUS_COMMIT | dbImage.Status = models.IMAGE_STATUS_COMMIT | ||||
| image = *dbImage | |||||
| if err := models.UpdateLocalImage(dbImage); err != nil { | if err := models.UpdateLocalImage(dbImage); err != nil { | ||||
| log.Error("Failed to update image record.", err) | log.Error("Failed to update image record.", err) | ||||
| return fmt.Errorf("CommitImage err: %s", res.String()) | return fmt.Errorf("CommitImage err: %s", res.String()) | ||||
| @@ -295,22 +312,26 @@ sendjob: | |||||
| return nil | return nil | ||||
| }) | }) | ||||
| if err == nil { | if err == nil { | ||||
| go updateImageStatus(image) | |||||
| go updateImageStatus(image, isSetCreatedUnix, createTime) | |||||
| } | } | ||||
| return err | return err | ||||
| } | } | ||||
| func updateImageStatus(image models.Image) { | |||||
| func updateImageStatus(image models.Image, isSetCreatedUnix bool, createTime time.Time) { | |||||
| attemps := 5 | attemps := 5 | ||||
| commitSuccess := false | commitSuccess := false | ||||
| time.Sleep(5 * time.Second) | time.Sleep(5 * time.Second) | ||||
| for i := 0; i < attemps; i++ { | for i := 0; i < attemps; i++ { | ||||
| pageSize := 15 | |||||
| if commitSuccess { | |||||
| break | |||||
| } | |||||
| result, err := GetImagesPageable(1, pageSize, Custom, "") | result, err := GetImagesPageable(1, pageSize, Custom, "") | ||||
| if err == nil && result.Code == "S000" { | if err == nil && result.Code == "S000" { | ||||
| for _, v := range result.Payload.ImageInfo { | for _, v := range result.Payload.ImageInfo { | ||||
| if v.Place == image.Place { | |||||
| if v.Place == image.Place && (!isSetCreatedUnix || (isSetCreatedUnix && createTimeUpdated(v, createTime))) { | |||||
| image.Status = models.IMAGE_STATUS_SUCCESS | image.Status = models.IMAGE_STATUS_SUCCESS | ||||
| models.UpdateLocalImageStatus(&image) | models.UpdateLocalImageStatus(&image) | ||||
| commitSuccess = true | commitSuccess = true | ||||
| @@ -333,6 +354,14 @@ func updateImageStatus(image models.Image) { | |||||
| } | } | ||||
| func createTimeUpdated(v *models.ImageInfo, createTime time.Time) bool { | |||||
| newTime, err := time.Parse(time.RFC3339, v.Createtime) | |||||
| if err != nil { | |||||
| return false | |||||
| } | |||||
| return newTime.After(createTime) | |||||
| } | |||||
| func StopJob(jobID string) error { | func StopJob(jobID string) error { | ||||
| checkSetting() | checkSetting() | ||||
| client := getRestyClient() | client := getRestyClient() | ||||