From 11c0bc8264776363f7101d536b9ed098393517c4 Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Wed, 11 Aug 2021 20:11:26 +0800 Subject: [PATCH] fix(region): delete dirty network --- pkg/compute/models/vpcs.go | 3 --- pkg/compute/tasks/network_delete_task.go | 23 +++++++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/pkg/compute/models/vpcs.go b/pkg/compute/models/vpcs.go index fc6a04ba79..2e1554d7e5 100644 --- a/pkg/compute/models/vpcs.go +++ b/pkg/compute/models/vpcs.go @@ -213,9 +213,6 @@ func (self *SVpc) ValidateDeleteCondition(ctx context.Context) error { if self.Id == api.DEFAULT_VPC_ID { return httperrors.NewProtectedResourceError("not allow to delete default vpc") } - if self.Status == api.VPC_STATUS_UNKNOWN { - return self.SEnabledStatusInfrasResourceBase.ValidateDeleteCondition(ctx) - } cnt, err := self.GetNetworkCount() if err != nil { diff --git a/pkg/compute/tasks/network_delete_task.go b/pkg/compute/tasks/network_delete_task.go index db4d01efb1..d8fef1a60a 100644 --- a/pkg/compute/tasks/network_delete_task.go +++ b/pkg/compute/tasks/network_delete_task.go @@ -16,9 +16,9 @@ package tasks import ( "context" + "database/sql" "yunion.io/x/jsonutils" - "yunion.io/x/log" "yunion.io/x/pkg/errors" api "yunion.io/x/onecloud/pkg/apis/compute" @@ -39,7 +39,6 @@ func init() { } func (self *NetworkDeleteTask) taskFailed(ctx context.Context, network *models.SNetwork, err error) { - log.Errorf("network delete task fail: %v", err) network.SetStatus(self.UserCred, api.NETWORK_STATUS_DELETE_FAILED, err.Error()) db.OpsLog.LogEvent(network, db.ACT_ALLOCATE_FAIL, err, self.UserCred) logclient.AddActionLogWithStartable(self, network, logclient.ACT_DELETE, err, self.UserCred, false) @@ -53,19 +52,23 @@ func (self *NetworkDeleteTask) OnInit(ctx context.Context, obj db.IStandaloneMod db.OpsLog.LogEvent(network, db.ACT_DELOCATING, network.GetShortDesc(ctx), self.UserCred) inet, err := network.GetINetwork() - if inet != nil { - err = inet.Delete() - if err != nil { - self.taskFailed(ctx, network, errors.Wrapf(err, "inet.Delete")) + if err != nil { + if errors.Cause(err) == cloudprovider.ErrNotFound || errors.Cause(err) == sql.ErrNoRows { + self.taskComplete(ctx, network) return } - } else if errors.Cause(err) == cloudprovider.ErrNotFound { - // already deleted, do nothing - } else { - self.taskFailed(ctx, network, errors.Wrapf(err, "network.GetINetwork")) + self.taskFailed(ctx, network, errors.Wrapf(err, "GetINetwork")) return } + err = inet.Delete() + if err != nil { + self.taskFailed(ctx, network, errors.Wrapf(err, "inet.Delete")) + return + } + self.taskComplete(ctx, network) +} +func (self *NetworkDeleteTask) taskComplete(ctx context.Context, network *models.SNetwork) { network.RealDelete(ctx, self.UserCred) logclient.AddActionLogWithStartable(self, network, logclient.ACT_DELETE, "", self.UserCred, true) notifyclient.EventNotify(ctx, self.UserCred, notifyclient.SEventNotifyParam{