mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 06:09:39 +08:00
多账号同步依赖manager_id区分
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user