mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
skus sync with account
This commit is contained in:
@@ -208,6 +208,9 @@ func (self *SkusZone) getExternalZone() (string, string, string) {
|
||||
if len(parts) == 3 {
|
||||
// provider, region, zone
|
||||
return parts[0], parts[1], parts[2]
|
||||
} else if len(parts) == 2 && parts[0] == models.CLOUD_PROVIDER_AZURE {
|
||||
// azure 没有zone的概念
|
||||
return parts[0], parts[1], parts[1]
|
||||
}
|
||||
|
||||
log.Debugf("SkusZone invalid external zone id %s", self.ExternalZoneId)
|
||||
@@ -235,9 +238,17 @@ func (self *SkusZoneList) initData(provider string, region models.SCloudregion,
|
||||
}
|
||||
}
|
||||
|
||||
func (self *SkusZoneList) Refresh() error {
|
||||
provideIds := cloudprovider.GetRegistedProviderIds()
|
||||
for _, p := range provideIds {
|
||||
func (self *SkusZoneList) Refresh(providerIds *[]string) error {
|
||||
self.Data = []*SkusZone{}
|
||||
|
||||
var pIds []string
|
||||
if providerIds == nil {
|
||||
pIds = cloudprovider.GetRegistedProviderIds()
|
||||
} else {
|
||||
pIds = *providerIds
|
||||
}
|
||||
|
||||
for _, p := range pIds {
|
||||
regions, e := models.CloudregionManager.GetRegionByProvider(p)
|
||||
if e != nil {
|
||||
return e
|
||||
@@ -288,7 +299,7 @@ func (self *SkusZoneList) SyncToLocalDB() error {
|
||||
|
||||
func SyncSkus(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
skus := SkusZoneList{}
|
||||
if e := skus.Refresh(); e != nil {
|
||||
if e := skus.Refresh(nil); e != nil {
|
||||
log.Errorf("SyncSkus refresh failed, %s", e.Error())
|
||||
}
|
||||
|
||||
@@ -296,3 +307,17 @@ func SyncSkus(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
log.Errorf("SyncSkus sync to local db failed, %s", e.Error())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func SyncSkusByProviderIds(providerIds []string) error {
|
||||
skus := SkusZoneList{}
|
||||
if e := skus.Refresh(&providerIds); e != nil {
|
||||
return fmt.Errorf("SyncSkus refresh failed, %s", e.Error())
|
||||
}
|
||||
|
||||
if e := skus.SyncToLocalDB(); e != nil {
|
||||
return fmt.Errorf("SyncSkus sync to local db failed, %s", e.Error())
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/db"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/db/taskman"
|
||||
"yunion.io/x/onecloud/pkg/compute/models"
|
||||
"yunion.io/x/onecloud/pkg/compute/skus"
|
||||
)
|
||||
|
||||
type CloudAccountSyncInfoTask struct {
|
||||
@@ -82,6 +83,11 @@ func (self *CloudAccountSyncInfoTask) OnCloudaccountSyncComplete(ctx context.Con
|
||||
if account != nil {
|
||||
account.SetStatus(self.UserCred, models.CLOUD_PROVIDER_CONNECTED, "")
|
||||
}
|
||||
|
||||
// sync skus
|
||||
if err := skus.SyncSkusByProviderIds([]string{cloudprovider.GetId()}); err != nil {
|
||||
self.SetStageFailed(ctx, err.Error())
|
||||
}
|
||||
}
|
||||
self.SetStageComplete(ctx, nil)
|
||||
}
|
||||
|
||||
+10
-3
@@ -87,7 +87,6 @@ func (self *SImage) GetStatus() string {
|
||||
}
|
||||
|
||||
func (self *SImage) Refresh() error {
|
||||
// todo: GetImage
|
||||
new, err := self.storageCache.region.GetImage(self.ImageId)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -173,7 +172,11 @@ func (self *SRegion) ExportImage(instanceId string, imageId string) (*ImageExpor
|
||||
}
|
||||
|
||||
func (self *SRegion) GetImage(imageId string) (*SImage, error) {
|
||||
images, _, err := self.GetImages("", ImageOwnerSelf, []string{imageId}, "", 0, 1)
|
||||
if len(imageId) == 0 {
|
||||
return nil, fmt.Errorf("image id should not be empty")
|
||||
}
|
||||
|
||||
images, _, err := self.GetImages("", ImageOwnerType(""), []string{imageId}, "", 0, 1)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -184,7 +187,11 @@ func (self *SRegion) GetImage(imageId string) (*SImage, error) {
|
||||
}
|
||||
|
||||
func (self *SRegion) GetImageByName(name string) (*SImage, error) {
|
||||
images, _, err := self.GetImages("", ImageOwnerSelf, nil, name, 0, 1)
|
||||
if len(name) == 0 {
|
||||
return nil, fmt.Errorf("image name should not be empty")
|
||||
}
|
||||
|
||||
images, _, err := self.GetImages("", ImageOwnerType(""), nil, name, 0, 1)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user