From aad83ec56521da71eecc1cd90ceac706662e70e3 Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Tue, 17 Mar 2020 11:58:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E5=A4=B1=E8=B4=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/elasticcache_instances.go | 2 +- pkg/compute/models/managedresource.go | 17 +++++++++++++++++ pkg/compute/models/natgateways.go | 2 +- pkg/compute/models/purge.go | 4 ++-- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/pkg/compute/models/elasticcache_instances.go b/pkg/compute/models/elasticcache_instances.go index a8383c969a..bdfdfa5f02 100644 --- a/pkg/compute/models/elasticcache_instances.go +++ b/pkg/compute/models/elasticcache_instances.go @@ -621,7 +621,7 @@ func (manager *SElasticcacheManager) newFromCloudElasticcache(ctx context.Contex func (manager *SElasticcacheManager) getElasticcachesByProviderId(providerId string) ([]SElasticcache, error) { instances := []SElasticcache{} - err := fetchByManagerId(manager, providerId, &instances) + err := fetchByVpcManagerId(manager, providerId, &instances) if err != nil { return nil, errors.Wrapf(err, "getElasticcachesByProviderId.fetchByManagerId") } diff --git a/pkg/compute/models/managedresource.go b/pkg/compute/models/managedresource.go index 35f7850410..baafa626f8 100644 --- a/pkg/compute/models/managedresource.go +++ b/pkg/compute/models/managedresource.go @@ -689,3 +689,20 @@ func fetchByManagerId(manager db.IModelManager, providerId string, receiver inte q := manager.Query().Equals("manager_id", providerId) return db.FetchModelObjects(manager, q, receiver) } + +func fetchByVpcManagerId(manager db.IModelManager, providerId string, receiver interface{}) error { + vpc := VpcManager.Query().SubQuery() + q := manager.Query() + q = q.Join(vpc, sqlchemy.Equals(vpc.Field("id"), q.Field("vpc_id"))).Filter(sqlchemy.Equals(vpc.Field("manager_id"), providerId)) + return db.FetchModelObjects(manager, q, receiver) +} + +func fetchByLbVpcManagerId(manager db.IModelManager, providerId string, receiver interface{}) error { + vpc := VpcManager.Query().SubQuery() + lb := LoadbalancerManager.Query().SubQuery() + q := manager.Query() + q = q.Join(lb, sqlchemy.Equals(lb.Field("id"), q.Field("loadbalancer_id"))). + Join(vpc, sqlchemy.Equals(vpc.Field("id"), lb.Field("vpc_id"))). + Filter(sqlchemy.Equals(vpc.Field("manager_id"), providerId)) + return db.FetchModelObjects(manager, q, receiver) +} diff --git a/pkg/compute/models/natgateways.go b/pkg/compute/models/natgateways.go index d5fef34659..ffde53314c 100644 --- a/pkg/compute/models/natgateways.go +++ b/pkg/compute/models/natgateways.go @@ -212,7 +212,7 @@ func (self *SNatGateway) extractEipAddr(q *sqlchemy.SQuery) ([]string, error) { func (manager *SNatGatewayManager) getNatgatewaysByProviderId(providerId string) ([]SNatGateway, error) { nats := []SNatGateway{} - err := fetchByManagerId(manager, providerId, &nats) + err := fetchByVpcManagerId(manager, providerId, &nats) if err != nil { return nil, err } diff --git a/pkg/compute/models/purge.go b/pkg/compute/models/purge.go index 65c6ca75f6..2c85d3d160 100644 --- a/pkg/compute/models/purge.go +++ b/pkg/compute/models/purge.go @@ -217,7 +217,7 @@ func (lbacl *SCachedLoadbalancerAcl) purge(ctx context.Context, userCred mcclien func (manager *SLoadbalancerBackendGroupManager) purgeAll(ctx context.Context, userCred mcclient.TokenCredential, providerId string) error { lbbgs := make([]SLoadbalancerBackendGroup, 0) - err := fetchByManagerId(manager, providerId, &lbbgs) + err := fetchByLbVpcManagerId(manager, providerId, &lbbgs) if err != nil { return err } @@ -232,7 +232,7 @@ func (manager *SLoadbalancerBackendGroupManager) purgeAll(ctx context.Context, u func (manager *SLoadbalancerManager) purgeAll(ctx context.Context, userCred mcclient.TokenCredential, providerId string) error { lbs := make([]SLoadbalancer, 0) - err := fetchByManagerId(manager, providerId, &lbs) + err := fetchByVpcManagerId(manager, providerId, &lbs) if err != nil { return err }