Merge pull request #11872 from ioito/hotfix/qx-vpc-delete

fix(region): delete dirty network
This commit is contained in:
Zexi Li
2021-08-12 10:55:41 +08:00
committed by GitHub
2 changed files with 13 additions and 13 deletions
-3
View File
@@ -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 {
+13 -10
View File
@@ -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{