多账号同步依赖manager_id区分

This commit is contained in:
屈轩
2018-08-15 15:18:46 +08:00
parent 815ec7f94f
commit 97877eb3f6
5 changed files with 22 additions and 13 deletions
+1 -1
View File
@@ -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
}
+6 -3
View File
@@ -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
+6 -3
View File
@@ -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
+6 -3
View File
@@ -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
@@ -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() {