fix(region): cancel pending delete (#19373)

This commit is contained in:
屈轩
2024-01-30 14:12:45 +08:00
committed by GitHub
parent 5c61e4c46c
commit afbd0f922f
4 changed files with 17 additions and 6 deletions
+1
View File
@@ -283,6 +283,7 @@ type IStandaloneModel interface {
SetName(name string)
MarkPendingDeleted()
CancelPendingDeleted()
StandaloneModelManager() IStandaloneModelManager
+4
View File
@@ -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
}
+6 -4
View File
@@ -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 {
+6 -2
View File
@@ -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
}