mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 06:09:39 +08:00
Merge pull request #56 in YUNIONIO/onecloud from ~QUXUAN/onecloud:hotfix/qx-provider-sync to release/2.1.0
* commit '7cb13784c2696ef5acf9c3cd67925aa0f542e7cb': 更新数据库前refresh资源信息 多账号同步依赖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
|
||||
}
|
||||
|
||||
@@ -508,6 +508,7 @@ func (manager *SDiskManager) SyncDisks(ctx context.Context, userCred mcclient.To
|
||||
|
||||
func (self *SDisk) syncWithCloudDisk(userCred mcclient.TokenCredential, extDisk cloudprovider.ICloudDisk) error {
|
||||
_, err := self.GetModelManager().TableSpec().Update(self, func() error {
|
||||
extDisk.Refresh()
|
||||
self.Name = extDisk.GetName()
|
||||
self.Status = extDisk.GetStatus()
|
||||
self.DiskFormat = extDisk.GetDiskFormat()
|
||||
|
||||
@@ -1186,7 +1186,7 @@ func (self *SGuest) GetIsolatedDevices() []SIsolatedDevice {
|
||||
|
||||
func (self *SGuest) syncWithCloudVM(ctx context.Context, userCred mcclient.TokenCredential, host *SHost, extVM cloudprovider.ICloudVM) error {
|
||||
diff, err := GuestManager.TableSpec().Update(self, func() error {
|
||||
|
||||
extVM.Refresh()
|
||||
self.Name = extVM.GetName()
|
||||
self.Status = extVM.GetStatus()
|
||||
self.VcpuCount = extVM.GetVcpuCount()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -458,6 +458,7 @@ func (manager *SNetworkManager) SyncNetworks(ctx context.Context, userCred mccli
|
||||
|
||||
func (self *SNetwork) SyncWithCloudNetwork(userCred mcclient.TokenCredential, extNet cloudprovider.ICloudNetwork) error {
|
||||
_, err := self.GetModelManager().TableSpec().Update(self, func() error {
|
||||
extNet.Refresh()
|
||||
self.Name = extNet.GetName()
|
||||
self.Status = extNet.GetStatus()
|
||||
self.GuestIpStart = extNet.GetIpStart()
|
||||
|
||||
@@ -238,6 +238,7 @@ func (manager *SSecurityGroupManager) SyncSecgroups(ctx context.Context, userCre
|
||||
|
||||
func (self *SSecurityGroup) SyncWithCloudSecurityGroup(userCred mcclient.TokenCredential, extSec cloudprovider.ICloudSecurityGroup) error {
|
||||
if _, err := self.GetModelManager().TableSpec().Update(self, func() error {
|
||||
extSec.Refresh()
|
||||
self.Name = extSec.GetName()
|
||||
self.Description = extSec.GetDescription()
|
||||
return nil
|
||||
|
||||
@@ -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
|
||||
@@ -237,6 +240,7 @@ func (manager *SVpcManager) SyncVPCs(ctx context.Context, userCred mcclient.Toke
|
||||
|
||||
func (self *SVpc) SyncWithCloudVpc(extVPC cloudprovider.ICloudVpc) error {
|
||||
_, err := self.GetModelManager().TableSpec().Update(self, func() error {
|
||||
extVPC.Refresh()
|
||||
self.Name = extVPC.GetName()
|
||||
self.Status = extVPC.GetStatus()
|
||||
self.CidrBlock = extVPC.GetCidrBlock()
|
||||
|
||||
@@ -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