mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/yunionio/cloudpods.git
synced 2026-09-21 00:24:07 +08:00
Conflicts: Gopkg.lock pkg/appsrv/appsrv.go pkg/cloudcommon/options.go pkg/compute/models/hosts.go pkg/compute/models/quotas.go pkg/compute/service/service.go pkg/mcclient/mcclient.go
59 lines
1.6 KiB
Go
59 lines
1.6 KiB
Go
package tasks
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"yunion.io/x/jsonutils"
|
|
"yunion.io/x/log"
|
|
|
|
"yunion.io/x/onecloud/pkg/cloudcommon/db"
|
|
"yunion.io/x/onecloud/pkg/cloudcommon/db/taskman"
|
|
"yunion.io/x/onecloud/pkg/image/models"
|
|
"yunion.io/x/onecloud/pkg/image/options"
|
|
)
|
|
|
|
type ImageDeleteTask struct {
|
|
taskman.STask
|
|
}
|
|
|
|
func init() {
|
|
taskman.RegisterTask(ImageDeleteTask{})
|
|
}
|
|
|
|
func (self *ImageDeleteTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
|
|
image := obj.(*models.SImage)
|
|
|
|
imageStatus, _ := self.Params.GetString("image_status")
|
|
isPurge := jsonutils.QueryBoolean(self.Params, "purge", false)
|
|
isOverridePendingDelete := jsonutils.QueryBoolean(self.Params, "override_pending_delete", false)
|
|
if options.Options.EnablePendingDelete && !image.PendingDeleted && imageStatus == models.IMAGE_STATUS_ACTIVE && !isPurge && !isOverridePendingDelete {
|
|
self.startPendingDeleteImage(ctx, image)
|
|
} else {
|
|
self.startDeleteImage(ctx, image)
|
|
}
|
|
}
|
|
|
|
func (self *ImageDeleteTask) startPendingDeleteImage(ctx context.Context, image *models.SImage) {
|
|
image.StopTorrents()
|
|
image.DoPendingDelete(ctx, self.UserCred)
|
|
self.SetStageComplete(ctx, nil)
|
|
}
|
|
|
|
func (self *ImageDeleteTask) startDeleteImage(ctx context.Context, image *models.SImage) {
|
|
log.Debugf("Delete image ....######")
|
|
|
|
err := image.RemoveFiles()
|
|
if err != nil {
|
|
msg := fmt.Sprintf("fail to remove %s %s", image.GetPath(""), err)
|
|
log.Errorf(msg)
|
|
self.SetStageFailed(ctx, msg)
|
|
return
|
|
}
|
|
|
|
image.SetStatus(self.UserCred, models.IMAGE_STATUS_DELETED, "delete")
|
|
|
|
image.RealDelete(ctx, self.UserCred)
|
|
|
|
self.SetStageComplete(ctx, nil)
|
|
}
|