From 97877eb3f69b1ef60d37bbc5a9861c94084ff2c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Wed, 15 Aug 2018 15:05:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=9A=E8=B4=A6=E5=8F=B7=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E4=BE=9D=E8=B5=96manager=5Fid=E5=8C=BA=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/cloudregions.go | 2 +- pkg/compute/models/hosts.go | 9 ++++++--- pkg/compute/models/storages.go | 9 ++++++--- pkg/compute/models/vpcs.go | 9 ++++++--- pkg/compute/tasks/cloud_provider_sync_info_task.go | 6 +++--- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/pkg/compute/models/cloudregions.go b/pkg/compute/models/cloudregions.go index 3ac4efcade..e3c31efbba 100644 --- a/pkg/compute/models/cloudregions.go +++ b/pkg/compute/models/cloudregions.go @@ -220,7 +220,7 @@ func (self *SCloudregion) AllowPerformDefaultVpc(ctx context.Context, userCred m } func (self *SCloudregion) PerformDefaultVpc(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) { - vpcs, err := VpcManager.getVpcsByRegion(self) + vpcs, err := VpcManager.getVpcsByRegion(self, nil) if err != nil { return nil, err } diff --git a/pkg/compute/models/hosts.go b/pkg/compute/models/hosts.go index e8858bcb8b..6b47c4e370 100644 --- a/pkg/compute/models/hosts.go +++ b/pkg/compute/models/hosts.go @@ -759,9 +759,12 @@ func (self *SHost) GetHostDriver() IHostDriver { return GetHostDriver(self.HostType) } -func (manager *SHostManager) getHostsByZone(zone *SZone) ([]SHost, error) { +func (manager *SHostManager) getHostsByZone(zone *SZone, provider *SCloudprovider) ([]SHost, error) { hosts := make([]SHost, 0) q := manager.Query().Equals("zone_id", zone.Id) + if provider != nil { + q = q.Equals("manager_id", provider.Id) + } err := db.FetchModelObjects(manager, q, &hosts) if err != nil { log.Errorf("%s", err) @@ -770,12 +773,12 @@ func (manager *SHostManager) getHostsByZone(zone *SZone) ([]SHost, error) { return hosts, nil } -func (manager *SHostManager) SyncHosts(ctx context.Context, userCred mcclient.TokenCredential, zone *SZone, hosts []cloudprovider.ICloudHost) ([]SHost, []cloudprovider.ICloudHost, compare.SyncResult) { +func (manager *SHostManager) SyncHosts(ctx context.Context, userCred mcclient.TokenCredential, provider *SCloudprovider, zone *SZone, hosts []cloudprovider.ICloudHost) ([]SHost, []cloudprovider.ICloudHost, compare.SyncResult) { localHosts := make([]SHost, 0) remoteHosts := make([]cloudprovider.ICloudHost, 0) syncResult := compare.SyncResult{} - dbHosts, err := manager.getHostsByZone(zone) + dbHosts, err := manager.getHostsByZone(zone, provider) if err != nil { syncResult.Error(err) return nil, nil, syncResult diff --git a/pkg/compute/models/storages.go b/pkg/compute/models/storages.go index 37c1f6fc13..4ac8ea7587 100644 --- a/pkg/compute/models/storages.go +++ b/pkg/compute/models/storages.go @@ -238,9 +238,12 @@ func (self *SStorage) SyncStatusWithHosts() { } } -func (manager *SStorageManager) getStoragesByZoneId(zoneId string) ([]SStorage, error) { +func (manager *SStorageManager) getStoragesByZoneId(zoneId string, provider *SCloudprovider) ([]SStorage, error) { storages := make([]SStorage, 0) q := manager.Query().Equals("zone_id", zoneId) + if provider != nil { + q = q.Equals("manager_id", provider.Id) + } err := db.FetchModelObjects(manager, q, &storages) if err != nil { log.Errorf("getStoragesByZoneId fail %s", err) @@ -264,7 +267,7 @@ func (manager *SStorageManager) scanLegacyStorages() error { return nil } -func (manager *SStorageManager) SyncStorages(ctx context.Context, userCred mcclient.TokenCredential, zone *SZone, storages []cloudprovider.ICloudStorage) ([]SStorage, []cloudprovider.ICloudStorage, compare.SyncResult) { +func (manager *SStorageManager) SyncStorages(ctx context.Context, userCred mcclient.TokenCredential, provider *SCloudprovider, zone *SZone, storages []cloudprovider.ICloudStorage) ([]SStorage, []cloudprovider.ICloudStorage, compare.SyncResult) { localStorages := make([]SStorage, 0) remoteStorages := make([]cloudprovider.ICloudStorage, 0) syncResult := compare.SyncResult{} @@ -275,7 +278,7 @@ func (manager *SStorageManager) SyncStorages(ctx context.Context, userCred mccli return nil, nil, syncResult } - dbStorages, err := manager.getStoragesByZoneId(zone.Id) + dbStorages, err := manager.getStoragesByZoneId(zone.Id, provider) if err != nil { syncResult.Error(err) return nil, nil, syncResult diff --git a/pkg/compute/models/vpcs.go b/pkg/compute/models/vpcs.go index bba2aed865..1b7cbd74f3 100644 --- a/pkg/compute/models/vpcs.go +++ b/pkg/compute/models/vpcs.go @@ -146,9 +146,12 @@ func (self *SVpc) GetExtraDetails(ctx context.Context, userCred mcclient.TokenCr return self.getMoreDetails(extra) } -func (manager *SVpcManager) getVpcsByRegion(region *SCloudregion) ([]SVpc, error) { +func (manager *SVpcManager) getVpcsByRegion(region *SCloudregion, provider *SCloudprovider) ([]SVpc, error) { vpcs := make([]SVpc, 0) q := manager.Query().Equals("cloudregion_id", region.Id) + if provider != nil { + q = q.Equals("manager_id", provider.Id) + } err := db.FetchModelObjects(manager, q, &vpcs) if err != nil { return nil, err @@ -167,12 +170,12 @@ func (self *SVpc) setDefault(def bool) error { return err } -func (manager *SVpcManager) SyncVPCs(ctx context.Context, userCred mcclient.TokenCredential, region *SCloudregion, vpcs []cloudprovider.ICloudVpc) ([]SVpc, []cloudprovider.ICloudVpc, compare.SyncResult) { +func (manager *SVpcManager) SyncVPCs(ctx context.Context, userCred mcclient.TokenCredential, provider *SCloudprovider, region *SCloudregion, vpcs []cloudprovider.ICloudVpc) ([]SVpc, []cloudprovider.ICloudVpc, compare.SyncResult) { localVPCs := make([]SVpc, 0) remoteVPCs := make([]cloudprovider.ICloudVpc, 0) syncResult := compare.SyncResult{} - dbVPCs, err := manager.getVpcsByRegion(region) + dbVPCs, err := manager.getVpcsByRegion(region, provider) if err != nil { syncResult.Error(err) return nil, nil, syncResult diff --git a/pkg/compute/tasks/cloud_provider_sync_info_task.go b/pkg/compute/tasks/cloud_provider_sync_info_task.go index b06d05b483..997f0792f3 100644 --- a/pkg/compute/tasks/cloud_provider_sync_info_task.go +++ b/pkg/compute/tasks/cloud_provider_sync_info_task.go @@ -130,7 +130,7 @@ func syncRegionVPCs(ctx context.Context, provider *models.SCloudprovider, task * return } - localVpcs, remoteVpcs, result := models.VpcManager.SyncVPCs(ctx, task.UserCred, localRegion, vpcs) + localVpcs, remoteVpcs, result := models.VpcManager.SyncVPCs(ctx, task.UserCred, provider, localRegion, vpcs) msg := result.Result() log.Infof("SyncVPCs for region %s result: %s", localRegion.Name, msg) if result.IsError() { @@ -209,7 +209,7 @@ func syncZoneStorages(ctx context.Context, provider *models.SCloudprovider, task logSyncFailed(provider, task, msg) return } - localStorages, remoteStorages, result := models.StorageManager.SyncStorages(ctx, task.UserCred, localZone, storages) + localStorages, remoteStorages, result := models.StorageManager.SyncStorages(ctx, task.UserCred, provider, localZone, storages) msg := result.Result() log.Infof("SyncZones for region %s result: %s", localZone.Name, msg) if result.IsError() { @@ -267,7 +267,7 @@ func syncZoneHosts(ctx context.Context, provider *models.SCloudprovider, task *C logSyncFailed(provider, task, msg) return } - localHosts, remoteHosts, result := models.HostManager.SyncHosts(ctx, task.UserCred, localZone, hosts) + localHosts, remoteHosts, result := models.HostManager.SyncHosts(ctx, task.UserCred, provider, localZone, hosts) msg := result.Result() log.Infof("SyncHosts for zone %s result: %s", localZone.Name, msg) if result.IsError() {