mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 14:19:49 +08:00
Merge pull request #3595 from tb365/bugfix/tb-redis-skus-sync-1112
elastic cache sync bugfix
This commit is contained in:
@@ -110,24 +110,32 @@ func syncRegionSkus(ctx context.Context, userCred mcclient.TokenCredential, loca
|
||||
log.Errorf("GetSkuCountByRegion fail %s", err)
|
||||
return
|
||||
}
|
||||
if cnt > 0 {
|
||||
return
|
||||
}
|
||||
// 提前同步instance type.如果同步失败可能导致vm 内存显示为0
|
||||
if err = syncSkusByRegion(localRegion); err != nil {
|
||||
msg := fmt.Sprintf("Get Skus for region %s failed %s", localRegion.GetName(), err)
|
||||
log.Errorln(msg)
|
||||
// 暂时不终止同步
|
||||
// logSyncFailed(provider, task, msg)
|
||||
return
|
||||
|
||||
if cnt == 0 {
|
||||
// 提前同步instance type.如果同步失败可能导致vm 内存显示为0
|
||||
if err = syncSkusByRegion(localRegion); err != nil {
|
||||
msg := fmt.Sprintf("Get Skus for region %s failed %s", localRegion.GetName(), err)
|
||||
log.Errorln(msg)
|
||||
// 暂时不终止同步
|
||||
// logSyncFailed(provider, task, msg)
|
||||
return
|
||||
}
|
||||
|
||||
_, err = modules.SchedManager.SyncSku(auth.GetAdminSession(ctx, options.Options.Region, ""), false)
|
||||
if err != nil {
|
||||
log.Errorf("SchedManager SyncSku %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
_, err = modules.SchedManager.SyncSku(auth.GetAdminSession(ctx, options.Options.Region, ""), false)
|
||||
cnt, err = ElasticcacheSkuManager.GetSkuCountByRegion(regionId)
|
||||
if err != nil {
|
||||
log.Errorf("SchedManager SyncSku %s", err)
|
||||
log.Errorf("ElasticcacheSkuManager.GetSkuCountByRegion fail %s", err)
|
||||
return
|
||||
}
|
||||
|
||||
syncElasticCacheSkusByRegion(ctx, userCred, localRegion)
|
||||
if cnt == 0 {
|
||||
syncElasticCacheSkusByRegion(ctx, userCred, localRegion)
|
||||
}
|
||||
}
|
||||
|
||||
func syncProjects(ctx context.Context, userCred mcclient.TokenCredential, syncResults SSyncResultSet, driver cloudprovider.ICloudProvider, provider *SCloudprovider) {
|
||||
|
||||
@@ -121,6 +121,16 @@ func (self *SElasticcache) GetCustomizeColumns(ctx context.Context, userCred mcc
|
||||
extra := self.SStatusStandaloneResourceBase.GetCustomizeColumns(ctx, userCred, query)
|
||||
info := self.getCloudProviderInfo()
|
||||
extra.Update(jsonutils.Marshal(&info))
|
||||
|
||||
vpc, err := VpcManager.FetchById(self.VpcId)
|
||||
if err == nil {
|
||||
extra.Set("vpc", jsonutils.NewString(vpc.GetName()))
|
||||
}
|
||||
|
||||
network, err := NetworkManager.FetchById(self.NetworkId)
|
||||
if err == nil {
|
||||
extra.Set("network", jsonutils.NewString(network.GetName()))
|
||||
}
|
||||
return extra
|
||||
}
|
||||
|
||||
|
||||
@@ -96,6 +96,12 @@ func (self *SElasticcacheSku) GetCustomizeColumns(ctx context.Context, userCred
|
||||
return self.SStatusStandaloneResourceBase.GetCustomizeColumns(ctx, userCred, query)
|
||||
}
|
||||
|
||||
func (manager *SElasticcacheSkuManager) GetSkuCountByRegion(regionId string) (int, error) {
|
||||
q := manager.Query().Equals("cloudregion_id", regionId)
|
||||
|
||||
return q.CountWithError()
|
||||
}
|
||||
|
||||
func (manager *SElasticcacheSkuManager) FetchCustomizeColumns(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, objs []db.IModel, fields stringutils2.SSortedStrings) []*jsonutils.JSONDict {
|
||||
regions := map[string]string{}
|
||||
for i := range objs {
|
||||
@@ -189,7 +195,7 @@ func (manager *SElasticcacheSkuManager) FetchSkusByRegion(regionID string) ([]SE
|
||||
return skus, nil
|
||||
}
|
||||
|
||||
func (manager *SElasticcacheSkuManager) syncDBInstanceSkus(ctx context.Context, userCred mcclient.TokenCredential, region *SCloudregion, extSkuMeta *SSkuResourcesMeta) compare.SyncResult {
|
||||
func (manager *SElasticcacheSkuManager) syncElasticcacheSkus(ctx context.Context, userCred mcclient.TokenCredential, region *SCloudregion, extSkuMeta *SSkuResourcesMeta) compare.SyncResult {
|
||||
lockman.LockClass(ctx, manager, db.GetLockClassKey(manager, userCred))
|
||||
defer lockman.ReleaseClass(ctx, manager, db.GetLockClassKey(manager, userCred))
|
||||
|
||||
|
||||
@@ -179,9 +179,8 @@ func (self *SSkuResourcesMeta) filterByRegion(items []jsonutils.JSONObject) []js
|
||||
ret := []jsonutils.JSONObject{}
|
||||
for i := range items {
|
||||
item := items[i]
|
||||
provider, _ := item.GetString("provider")
|
||||
regionId, _ := item.GetString("cloudregion_id")
|
||||
if self.region.GetExternalId() != fmt.Sprintf("%s/%s", provider, regionId) {
|
||||
if self.region.GetExternalId() != strings.TrimSpace(regionId) {
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -305,7 +304,7 @@ func SyncElasticCacheSkus(ctx context.Context, userCred mcclient.TokenCredential
|
||||
for i := range cloudregions {
|
||||
region := &cloudregions[i]
|
||||
meta.SetRegionFilter(region)
|
||||
result := ElasticcacheSkuManager.syncDBInstanceSkus(ctx, userCred, region, meta)
|
||||
result := ElasticcacheSkuManager.syncElasticcacheSkus(ctx, userCred, region, meta)
|
||||
notes := fmt.Sprintf("syncElasticCacheSkusByRegion %s result: %s", region.Name, result.Result())
|
||||
log.Infof(notes)
|
||||
}
|
||||
@@ -320,7 +319,7 @@ func syncElasticCacheSkusByRegion(ctx context.Context, userCred mcclient.TokenCr
|
||||
}
|
||||
|
||||
meta.SetRegionFilter(region)
|
||||
result := ElasticcacheSkuManager.syncDBInstanceSkus(ctx, userCred, region, meta)
|
||||
result := ElasticcacheSkuManager.syncElasticcacheSkus(ctx, userCred, region, meta)
|
||||
notes := fmt.Sprintf("syncElasticCacheSkusByRegion %s result: %s", region.Name, result.Result())
|
||||
log.Infof(notes)
|
||||
}
|
||||
|
||||
@@ -32,11 +32,15 @@ type SElasticcacheAccount struct {
|
||||
}
|
||||
|
||||
func (self *SElasticcacheAccount) GetId() string {
|
||||
return fmt.Sprintf("%s/admin", self.cacheDB.InstanceID)
|
||||
return fmt.Sprintf("%s/root", self.cacheDB.InstanceID)
|
||||
}
|
||||
|
||||
func (self *SElasticcacheAccount) GetName() string {
|
||||
return self.cacheDB.AccessUser
|
||||
if len(self.cacheDB.AccessUser) > 0 {
|
||||
return self.cacheDB.AccessUser
|
||||
}
|
||||
|
||||
return "root"
|
||||
}
|
||||
|
||||
func (self *SElasticcacheAccount) GetGlobalId() string {
|
||||
|
||||
@@ -17,6 +17,9 @@ package huawei
|
||||
import (
|
||||
"time"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/pkg/errors"
|
||||
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
"yunion.io/x/onecloud/pkg/cloudprovider"
|
||||
"yunion.io/x/onecloud/pkg/multicloud"
|
||||
@@ -56,6 +59,20 @@ func (self *SElasticcacheBackup) GetGlobalId() string {
|
||||
return self.GetId()
|
||||
}
|
||||
|
||||
func (self *SElasticcacheBackup) Refresh() error {
|
||||
cache, err := self.cacheDB.GetICloudElasticcacheBackup(self.GetId())
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "ElasticcacheBackup.Refresh.GetICloudElasticcacheBackup")
|
||||
}
|
||||
|
||||
err = jsonutils.Update(self, cache)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "ElasticcacheBackup.Refresh.Update")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (self *SElasticcacheBackup) GetStatus() string {
|
||||
switch self.Status {
|
||||
case "waiting", "backuping":
|
||||
|
||||
@@ -19,10 +19,9 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/pkg/errors"
|
||||
|
||||
billing_api "yunion.io/x/onecloud/pkg/apis/billing"
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
@@ -98,6 +97,20 @@ func (self *SElasticcache) GetGlobalId() string {
|
||||
return self.GetId()
|
||||
}
|
||||
|
||||
func (self *SElasticcache) Refresh() error {
|
||||
cache, err := self.region.GetElasticCache(self.GetId())
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Elasticcache.Refresh.GetElasticCache")
|
||||
}
|
||||
|
||||
err = jsonutils.Update(self, cache)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Elasticcache.Refresh.Update")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (self *SElasticcache) GetStatus() string {
|
||||
switch self.Status {
|
||||
case "RUNNING":
|
||||
|
||||
Reference in New Issue
Block a user