mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #8689 from swordqiu/hotfix/qj-change-owner-update-quota-usages
fix: change owner should update quota usages
This commit is contained in:
@@ -201,6 +201,9 @@ func (model *SDomainLevelResourceBase) PerformChangeOwner(ctx context.Context, u
|
||||
}
|
||||
}
|
||||
|
||||
// cancel usage
|
||||
model.cleanModelUsages(ctx, userCred)
|
||||
|
||||
_, err = Update(model, func() error {
|
||||
model.DomainId = ownerId.GetProjectDomainId()
|
||||
model.DomainSrc = string(apis.OWNER_SOURCE_LOCAL)
|
||||
@@ -210,6 +213,9 @@ func (model *SDomainLevelResourceBase) PerformChangeOwner(ctx context.Context, u
|
||||
return nil, errors.Wrap(err, "Update")
|
||||
}
|
||||
|
||||
// add usage
|
||||
model.RecoverUsages(ctx, userCred)
|
||||
|
||||
OpsLog.SyncOwner(model, former, userCred)
|
||||
notes := struct {
|
||||
OldDomainId string
|
||||
|
||||
@@ -548,17 +548,24 @@ func (model *SModelBase) CustomizeDelete(ctx context.Context, userCred mcclient.
|
||||
return nil
|
||||
}
|
||||
|
||||
func cleanModelUsages(ctx context.Context, userCred mcclient.TokenCredential, model IModel) {
|
||||
func (model *SModelBase) cleanModelUsages(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
usages := model.GetIModel().GetUsages()
|
||||
if CancelUsages != nil && len(usages) > 0 {
|
||||
CancelUsages(ctx, userCred, usages)
|
||||
}
|
||||
}
|
||||
|
||||
func (model *SModelBase) RecoverUsages(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
usages := model.GetIModel().GetUsages()
|
||||
if AddUsages != nil && len(usages) > 0 {
|
||||
AddUsages(ctx, userCred, usages)
|
||||
}
|
||||
}
|
||||
|
||||
func (model *SModelBase) PreDelete(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
// clean usage on predelete
|
||||
// clean usage before fakedelete for pending delete models
|
||||
cleanModelUsages(ctx, userCred, model)
|
||||
model.cleanModelUsages(ctx, userCred)
|
||||
}
|
||||
|
||||
func (model *SModelBase) PostDelete(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
|
||||
@@ -379,6 +379,9 @@ func (model *SVirtualResourceBase) PerformChangeOwner(ctx context.Context, userC
|
||||
}
|
||||
}
|
||||
|
||||
// cancel usage
|
||||
model.cleanModelUsages(ctx, userCred)
|
||||
|
||||
_, err = Update(model, func() error {
|
||||
model.DomainId = ownerId.GetProjectDomainId()
|
||||
model.ProjectId = ownerId.GetProjectId()
|
||||
@@ -389,6 +392,9 @@ func (model *SVirtualResourceBase) PerformChangeOwner(ctx context.Context, userC
|
||||
return nil, errors.Wrap(err, "Update")
|
||||
}
|
||||
|
||||
// add usage
|
||||
model.RecoverUsages(ctx, userCred)
|
||||
|
||||
OpsLog.SyncOwner(model, former, userCred)
|
||||
notes := struct {
|
||||
OldProjectId string
|
||||
@@ -456,13 +462,6 @@ func (model *SVirtualResourceBase) PerformCancelDelete(ctx context.Context, user
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (model *SVirtualResourceBase) RecoverUsages(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
usages := model.GetIModel().GetUsages()
|
||||
if AddUsages != nil && len(usages) > 0 {
|
||||
AddUsages(ctx, userCred, usages)
|
||||
}
|
||||
}
|
||||
|
||||
func (model *SVirtualResourceBase) DoCancelPendingDelete(ctx context.Context, userCred mcclient.TokenCredential) error {
|
||||
err := model.CancelPendingDelete(ctx, userCred)
|
||||
if err == nil {
|
||||
|
||||
Reference in New Issue
Block a user