mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-01 15:07:17 +08:00
fix(region): cancel pending delete (#19373)
This commit is contained in:
@@ -283,6 +283,7 @@ type IStandaloneModel interface {
|
||||
|
||||
SetName(name string)
|
||||
MarkPendingDeleted()
|
||||
CancelPendingDeleted()
|
||||
|
||||
StandaloneModelManager() IStandaloneModelManager
|
||||
|
||||
|
||||
@@ -716,6 +716,10 @@ func (model *SModelBase) MarkPendingDeleted() {
|
||||
return
|
||||
}
|
||||
|
||||
func (model *SModelBase) CancelPendingDeleted() {
|
||||
return
|
||||
}
|
||||
|
||||
func (model *SModelBase) Delete(ctx context.Context, userCred mcclient.TokenCredential) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ import (
|
||||
"time"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/pkg/errors"
|
||||
"yunion.io/x/pkg/util/rbacscope"
|
||||
"yunion.io/x/pkg/util/timeutils"
|
||||
@@ -53,6 +52,11 @@ func (base *SPendingDeletedBase) MarkPendingDeleted() {
|
||||
base.PendingDeletedAt = timeutils.UtcNow()
|
||||
}
|
||||
|
||||
func (base *SPendingDeletedBase) CancelPendingDeleted() {
|
||||
base.PendingDeleted = false
|
||||
base.PendingDeletedAt = time.Time{}
|
||||
}
|
||||
|
||||
// GetPendingDeletedAt implements IPendingDeltable
|
||||
func (base *SPendingDeletedBase) GetPendingDeletedAt() time.Time {
|
||||
return base.PendingDeletedAt
|
||||
@@ -94,7 +98,6 @@ func (base *SPendingDeletedBase) MarkPendingDelete(model IStandaloneModel, ctx c
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
log.Errorf("MarkPendingDelete update fail %s", err)
|
||||
return errors.Wrap(err, "MarkPendingDelete.Update")
|
||||
}
|
||||
OpsLog.LogEvent(model, ACT_PENDING_DELETE, model.GetShortDesc(ctx), userCred)
|
||||
@@ -116,8 +119,7 @@ func (base *SPendingDeletedBase) MarkCancelPendingDelete(model IStandaloneModel,
|
||||
}
|
||||
_, err = Update(model, func() error {
|
||||
model.SetName(newName)
|
||||
base.PendingDeleted = false
|
||||
base.PendingDeletedAt = time.Time{}
|
||||
model.CancelPendingDeleted()
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
|
||||
@@ -2967,16 +2967,20 @@ func (self *SGuest) DoCancelPendingDelete(ctx context.Context, userCred mcclient
|
||||
eip.DoCancelPendingDelete(ctx, userCred)
|
||||
}
|
||||
|
||||
disks, _ := self.GetDisks()
|
||||
disks, err := self.GetDisks()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, disk := range disks {
|
||||
disk.DoCancelPendingDelete(ctx, userCred)
|
||||
}
|
||||
|
||||
if self.BillingType == billing_api.BILLING_TYPE_POSTPAID && !self.ExpiredAt.IsZero() {
|
||||
if err := self.CancelExpireTime(ctx, userCred); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
err := self.SVirtualResourceBase.DoCancelPendingDelete(ctx, userCred)
|
||||
err = self.SVirtualResourceBase.DoCancelPendingDelete(ctx, userCred)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user