diff --git a/pkg/compute/tasks/eip_dissociate_task.go b/pkg/compute/tasks/eip_dissociate_task.go index f91d7569eb..72283c2596 100644 --- a/pkg/compute/tasks/eip_dissociate_task.go +++ b/pkg/compute/tasks/eip_dissociate_task.go @@ -8,6 +8,7 @@ import ( "yunion.io/x/onecloud/pkg/cloudcommon/db" "yunion.io/x/onecloud/pkg/cloudcommon/db/taskman" + "yunion.io/x/onecloud/pkg/cloudprovider" "yunion.io/x/onecloud/pkg/compute/models" ) @@ -38,13 +39,13 @@ func (self *EipDissociateTask) OnInit(ctx context.Context, obj db.IStandaloneMod } extEip, err := eip.GetIEip() - if err != nil { + if err != nil && err != cloudprovider.ErrNotFound { msg := fmt.Sprintf("fail to find iEIP for eip %s", err) self.TaskFail(ctx, eip, msg, server) return } - if len(extEip.GetAssociationExternalId()) > 0 { + if err == nil && len(extEip.GetAssociationExternalId()) > 0 { err = extEip.Dissociate() if err != nil { msg := fmt.Sprintf("fail to remote dissociate eip %s", err)