Merge pull request #3994 from ioito/hotfix/qx-rds-sku-sync

fix: 避免每次重启region同步rds sku, 避免新加公有云账号未能及时同步sku问题
This commit is contained in:
yunion-ci-robot
2019-12-04 10:34:36 +08:00
committed by GitHub
2 changed files with 27 additions and 1 deletions
+1
View File
@@ -1001,6 +1001,7 @@ func syncPublicCloudProviderInfo(
if !driver.GetFactory().NeedSyncSkuFromCloud() {
syncRegionSkus(ctx, userCred, localRegion)
syncRegionDBInstanceSkus(ctx, userCred, localRegion.Id, true)
} else {
syncSkusFromPrivateCloud(ctx, userCred, syncResults, provider, remoteRegion)
}
+26 -1
View File
@@ -16,6 +16,7 @@ package models
import (
"context"
"database/sql"
"fmt"
"strings"
@@ -453,9 +454,28 @@ func (manager *SDBInstanceSkuManager) newFromCloudSku(ctx context.Context, userC
return manager.TableSpec().Insert(sku)
}
func SyncDBInstanceSkus(ctx context.Context, userCred mcclient.TokenCredential, isStart bool) {
func syncRegionDBInstanceSkus(ctx context.Context, userCred mcclient.TokenCredential, regionId string, isStart bool) {
if isStart {
q := DBInstanceSkuManager.Query()
if len(regionId) > 0 {
q = q.Equals("cloudregion_id", regionId)
}
cnt, err := q.Limit(1).CountWithError()
if err != nil && err != sql.ErrNoRows {
log.Errorf("SyncDBInstanceSkus.QueryDBInstanceSku %s", err)
return
}
if cnt > 0 {
log.Debugf("SyncDBInstanceSkus synced skus, skip...")
return
}
}
q := CloudregionManager.Query()
q = q.In("provider", CloudproviderManager.GetPublicProviderProvidersQuery())
if len(regionId) > 0 {
q = q.Equals("id", regionId)
}
cloudregions := []SCloudregion{}
err := db.FetchModelObjects(CloudregionManager, q, &cloudregions)
if err != nil {
@@ -475,4 +495,9 @@ func SyncDBInstanceSkus(ctx context.Context, userCred mcclient.TokenCredential,
notes := fmt.Sprintf("SyncDBInstanceSkus for region %s result: %s", region.Name, msg)
log.Infof(notes)
}
}
func SyncDBInstanceSkus(ctx context.Context, userCred mcclient.TokenCredential, isStart bool) {
syncRegionDBInstanceSkus(ctx, userCred, "", isStart)
}