fix(region): huawei subaccount (#19071)

This commit is contained in:
屈轩
2023-12-27 14:20:37 +08:00
committed by GitHub
parent 2294a47506
commit 6002deec6f
37 changed files with 481 additions and 523 deletions
+1 -2
View File
@@ -17,7 +17,6 @@ package models
import (
"context"
"database/sql"
"fmt"
"yunion.io/x/log"
"yunion.io/x/pkg/errors"
@@ -150,7 +149,7 @@ func (self *SCloudimage) syncWithImage(ctx context.Context, userCred mcclient.To
return err
}
skuUrl := fmt.Sprintf("%s/%s/%s.json", meta.ImageBase, region.ExternalId, image.GetGlobalId())
skuUrl := region.getMetaUrl(meta.ImageBase, image.GetGlobalId())
obj, err := db.FetchByExternalId(CachedimageManager, image.GetGlobalId())
if err != nil {
+1 -2
View File
@@ -17,7 +17,6 @@ package models
import (
"context"
"database/sql"
"fmt"
"strings"
"time"
@@ -1275,7 +1274,7 @@ func (self *SCloudregion) newCloudimage(ctx context.Context, userCred mcclient.T
return err
}
skuUrl := fmt.Sprintf("%s/%s/%s.json", meta.ImageBase, self.ExternalId, iImage.GetGlobalId())
skuUrl := self.getMetaUrl(meta.ImageBase, iImage.GetGlobalId())
err = meta.Get(skuUrl, image)
if err != nil {
return errors.Wrapf(err, "Get")
+1 -1
View File
@@ -587,7 +587,7 @@ func (self *SCloudregion) newDBInstanceSkuFromCloudSku(ctx context.Context, user
sku := &SDBInstanceSku{}
sku.SetModelManager(DBInstanceSkuManager, sku)
skuUrl := fmt.Sprintf("%s/%s/%s.json", meta.DBInstanceBase, self.ExternalId, externalId)
skuUrl := self.getMetaUrl(meta.DBInstanceBase, externalId)
err = meta.Get(skuUrl, sku)
if err != nil {
return errors.Wrapf(err, "Get")
+1 -1
View File
@@ -474,7 +474,7 @@ func (self *SCloudregion) newFromPublicCloudSku(ctx context.Context, userCred mc
zoneMaps[zone.ExternalId] = zone.Id
}
skuUrl := fmt.Sprintf("%s/%s/%s.json", meta.ElasticCacheBase, self.ExternalId, externalId)
skuUrl := self.getMetaUrl(meta.ElasticCacheBase, externalId)
sku := &SElasticcacheSku{}
sku.SetModelManager(ElasticcacheSkuManager, sku)
err = meta.Get(skuUrl, sku)
+1 -1
View File
@@ -289,7 +289,7 @@ func (self *SCloudregion) newFromCloudNasSku(ctx context.Context, userCred mccli
sku := &SNasSku{}
sku.SetModelManager(NasSkuManager, sku)
skuUrl := fmt.Sprintf("%s/%s/%s.json", meta.NasBase, self.ExternalId, isku.GetGlobalId())
skuUrl := self.getMetaUrl(meta.NasBase, isku.GetGlobalId())
err = meta.Get(skuUrl, sku)
if err != nil {
return errors.Wrapf(err, "Get")
+1 -1
View File
@@ -293,7 +293,7 @@ func (self *SCloudregion) newFromCloudNatSku(ctx context.Context, userCred mccli
sku := &SNatSku{}
sku.SetModelManager(NatSkuManager, sku)
skuUrl := fmt.Sprintf("%s/%s/%s.json", meta.NatBase, self.ExternalId, isku.GetGlobalId())
skuUrl := self.getMetaUrl(meta.NatBase, isku.GetGlobalId())
err = meta.Get(skuUrl, sku)
if err != nil {
return errors.Wrapf(err, "Get")
+10 -2
View File
@@ -1162,6 +1162,14 @@ func (self *SServerSku) setPrepaidPostpaidStatus(userCred mcclient.TokenCredenti
return nil
}
func (region *SCloudregion) getMetaUrl(base string, externalId string) string {
if region.Provider == api.CLOUD_PROVIDER_HUAWEI && strings.Contains(region.ExternalId, "_") {
idx := strings.Index(region.ExternalId, "_")
return fmt.Sprintf("%s/%s/%s.json", base, region.ExternalId[:idx], externalId)
}
return fmt.Sprintf("%s/%s/%s.json", base, region.ExternalId, externalId)
}
func (region *SCloudregion) newPublicCloudSku(ctx context.Context, userCred mcclient.TokenCredential, extSku SServerSku) error {
meta, err := yunionmeta.FetchYunionmeta(ctx)
if err != nil {
@@ -1179,7 +1187,7 @@ func (region *SCloudregion) newPublicCloudSku(ctx context.Context, userCred mccl
sku := &SServerSku{}
sku.SetModelManager(ServerSkuManager, sku)
skuUrl := fmt.Sprintf("%s/%s/%s.json", meta.ServerBase, region.ExternalId, extSku.ExternalId)
skuUrl := region.getMetaUrl(meta.ServerBase, extSku.ExternalId)
err = meta.Get(skuUrl, sku)
if err != nil {
return errors.Wrapf(err, "Get")
@@ -1227,7 +1235,7 @@ func (self *SServerSku) syncWithCloudSku(ctx context.Context, userCred mcclient.
}
sku := &SServerSku{}
skuUrl := fmt.Sprintf("%s/%s/%s.json", meta.ServerBase, region.ExternalId, extSku.ExternalId)
skuUrl := region.getMetaUrl(meta.ServerBase, extSku.ExternalId)
err = meta.Get(skuUrl, sku)
if err != nil {
return errors.Wrapf(err, "Get")