mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #11872 from ioito/hotfix/qx-vpc-delete
fix(region): delete dirty network
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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{
|
||||
|
||||
Reference in New Issue
Block a user