modelartsBugFix

This commit is contained in:
mhf
2022-09-15 21:22:40 +08:00
parent c6b99377eb
commit dea296172a
14 changed files with 135 additions and 102 deletions
+2
View File
@@ -46,6 +46,7 @@ type ModelartsPoolDetails struct {
apis.SExternalizedResourceBase
SBillingResourceBase
ManagedResourceInfo
CloudregionResourceInfo
}
func (self ModelartsPoolDetails) GetMetricTags() map[string]string {
@@ -66,6 +67,7 @@ type ModelartsPoolListInput struct {
apis.VirtualResourceListInput
apis.ExternalizedResourceBaseListInput
ManagedResourceListInput
RegionalFilterListInput
apis.DeletePreventableResourceBaseListInput
}
+2 -1
View File
@@ -19,7 +19,7 @@ import "yunion.io/x/onecloud/pkg/apis"
type ModelartsPoolSkuDetails struct {
apis.EnabledStatusStandaloneResourceDetails
ManagedResourceInfo
// CloudregionResourceInfo
CloudregionResourceInfo
}
const (
@@ -31,5 +31,6 @@ type ModelartsPoolSkuListInput struct {
apis.EnabledStatusStandaloneResourceListInput
apis.ExternalizedResourceBaseListInput
RegionalFilterListInput
ManagedResourceListInput
}
-5
View File
@@ -316,11 +316,6 @@ type ICloudProvider interface {
CreateICloudCDNDomain(opts *CdnCreateOptions) (ICloudCDNDomain, error)
GetMetrics(opts *MetricListOptions) ([]MetricValues, error)
GetIModelartsPools() ([]ICloudModelartsPool, error)
GetIModelartsPoolById(id string) (ICloudModelartsPool, error)
CreateIModelartsPool(pool *ModelartsPoolCreateOption) (ICloudModelartsPool, error)
GetIModelartsPoolSku() ([]ICloudModelartsPoolSku, error)
}
func IsSupportCapability(prod ICloudProvider, capa string) bool {
+5
View File
@@ -194,6 +194,11 @@ type ICloudRegion interface {
GetICloudKubeClusterById(id string) (ICloudKubeCluster, error)
GetICloudTablestores() ([]ICloudTablestore, error)
GetIModelartsPools() ([]ICloudModelartsPool, error)
GetIModelartsPoolById(id string) (ICloudModelartsPool, error)
CreateIModelartsPool(pool *ModelartsPoolCreateOption) (ICloudModelartsPool, error)
GetIModelartsPoolSku() ([]ICloudModelartsPoolSku, error)
}
type ICloudZone interface {
+8 -8
View File
@@ -1883,8 +1883,8 @@ func syncPublicCloudProviderInfo(
}
if cloudprovider.IsSupportModelartsPool(driver) && syncRange.NeedSyncResource(cloudprovider.CLOUD_CAPABILITY_MODELARTES) {
syncModelartsPools(ctx, userCred, syncResults, provider, driver)
syncModelartsPoolSku(ctx, userCred, syncResults, provider, driver)
syncModelartsPoolSkus(ctx, userCred, syncResults, provider, localRegion, remoteRegion)
syncModelartsPools(ctx, userCred, syncResults, provider, localRegion, remoteRegion)
}
return nil
@@ -2347,26 +2347,26 @@ func syncTablestore(ctx context.Context, userCred mcclient.TokenCredential, sync
return nil
}
func syncModelartsPools(ctx context.Context, userCred mcclient.TokenCredential, syncResults SSyncResultSet, provider *SCloudprovider, driver cloudprovider.ICloudProvider) error {
ipools, err := driver.GetIModelartsPools()
func syncModelartsPools(ctx context.Context, userCred mcclient.TokenCredential, syncResults SSyncResultSet, provider *SCloudprovider, localRegion *SCloudregion, remoteRegion cloudprovider.ICloudRegion) error {
ipools, err := remoteRegion.GetIModelartsPools()
if err != nil {
msg := fmt.Sprintf("GetIModelartsPools for provider %s failed %s", err, ipools)
log.Errorf(msg)
return err
}
result := provider.SyncModelartsPools(ctx, userCred, ipools)
result := localRegion.SyncModelartsPools(ctx, userCred, provider, ipools)
log.Infof("SyncModelartsPools for region %s result: %s", provider.GetName(), result.Result())
return nil
}
func syncModelartsPoolSkus(ctx context.Context, userCred mcclient.TokenCredential, syncResults SSyncResultSet, provider *SCloudprovider, driver cloudprovider.ICloudProvider) error {
ipools, err := driver.GetIModelartsPoolSku()
func syncModelartsPoolSkus(ctx context.Context, userCred mcclient.TokenCredential, syncResults SSyncResultSet, provider *SCloudprovider, localRegion *SCloudregion, remoteRegion cloudprovider.ICloudRegion) error {
ipools, err := remoteRegion.GetIModelartsPoolSku()
if err != nil {
msg := fmt.Sprintf("GetIModelartsPoolSku for provider %s failed %s", err, ipools)
log.Errorf(msg)
return err
}
result := provider.SyncModelartsPoolSkus(ctx, userCred, ipools)
result := localRegion.SyncModelartsPoolSkus(ctx, userCred, provider, ipools)
log.Infof("SyncModelartsPoolSkus for region %s result: %s", provider.GetName(), result.Result())
return nil
}
+23 -19
View File
@@ -16,7 +16,6 @@ package models
import (
"context"
"fmt"
"yunion.io/x/jsonutils"
"yunion.io/x/log"
@@ -37,6 +36,7 @@ type SModelartsPoolSkuManager struct {
db.SExternalizedResourceBaseManager
db.SEnabledStatusStandaloneResourceBaseManager
SCloudregionResourceBaseManager
SManagedResourceBaseManager
}
@@ -59,6 +59,7 @@ type SModelartsPoolSku struct {
SManagedResourceBase
db.SEnabledStatusStandaloneResourceBase
db.SExternalizedResourceBase
SCloudregionResourceBase
Type string `width:"128" charset:"ascii" nullable:"true" list:"user" create:"admin_optional" update:"admin"` // 资源规格类型
// CPU 架构 x86|xarm
@@ -100,6 +101,10 @@ func (man *SModelartsPoolSkuManager) ListItemFilter(
if err != nil {
return nil, errors.Wrap(err, "SManagedResourceBaseManager.ListItemFilter")
}
q, err = man.SCloudregionResourceBaseManager.ListItemFilter(ctx, q, userCred, query.RegionalFilterListInput)
if err != nil {
return nil, errors.Wrap(err, "SCloudregionResourceBaseManager.ListItemFilter")
}
return q, nil
}
@@ -122,6 +127,10 @@ func (man *SModelartsPoolSkuManager) OrderByExtraFields(
if err != nil {
return nil, errors.Wrap(err, "SManagedResourceBaseManager.OrderByExtraFields")
}
q, err = man.SCloudregionResourceBaseManager.OrderByExtraFields(ctx, q, userCred, query.RegionalFilterListInput)
if err != nil {
return nil, errors.Wrap(err, "SCloudregionResourceBaseManager.OrderByExtraFields")
}
return q, nil
}
@@ -148,11 +157,13 @@ func (manager *SModelartsPoolSkuManager) FetchCustomizeColumns(
rows := make([]api.ModelartsPoolSkuDetails, len(objs))
enabledRows := manager.SEnabledStatusStandaloneResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList)
manRows := manager.SManagedResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList)
regRows := manager.SCloudregionResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList)
for i := range rows {
rows[i] = api.ModelartsPoolSkuDetails{
EnabledStatusStandaloneResourceDetails: enabledRows[i],
ManagedResourceInfo: manRows[i],
CloudregionResourceInfo: regRows[i],
}
}
@@ -179,8 +190,11 @@ func (manager *SModelartsPoolSkuManager) ListItemExportKeys(ctx context.Context,
return q, nil
}
func (self *SCloudprovider) GetModelartsPoolSkus() ([]SModelartsPoolSku, error) {
q := ModelartsPoolSkuManager.Query()
func (self *SCloudregion) GetModelartsPoolSkus(managerId string) ([]SModelartsPoolSku, error) {
q := ModelartsPoolSkuManager.Query().Equals("cloudregion_id", self.Id)
if len(managerId) > 0 {
q = q.Equals("manager_id", managerId)
}
ret := []SModelartsPoolSku{}
err := db.FetchModelObjects(ModelartsPoolSkuManager, q, &ret)
if err != nil {
@@ -189,12 +203,12 @@ func (self *SCloudprovider) GetModelartsPoolSkus() ([]SModelartsPoolSku, error)
return ret, nil
}
func (self *SCloudprovider) SyncModelartsPoolSkus(ctx context.Context, userCred mcclient.TokenCredential, exts []cloudprovider.ICloudModelartsPoolSku) compare.SyncResult {
func (self *SCloudregion) SyncModelartsPoolSkus(ctx context.Context, userCred mcclient.TokenCredential, provider *SCloudprovider, exts []cloudprovider.ICloudModelartsPoolSku) compare.SyncResult {
// 加锁防止重入
lockman.LockRawObject(ctx, self.Provider, "modelarts-pool-sku")
defer lockman.ReleaseRawObject(ctx, self.Provider, "modelarts-pool-sku")
result := compare.SyncResult{}
dbPoolSku, err := self.GetModelartsPoolSkus()
dbPoolSku, err := self.GetModelartsPoolSkus(provider.Id)
if err != nil {
result.Error(err)
return result
@@ -233,7 +247,7 @@ func (self *SCloudprovider) SyncModelartsPoolSkus(ctx context.Context, userCred
// 创建本地没有的云上资源
for i := 0; i < len(added); i++ {
err := self.newFromCloudModelartsPoolSku(ctx, userCred, added[i])
err := self.newFromCloudModelartsPoolSku(ctx, userCred, provider, added[i])
if err != nil {
result.AddError(err)
continue
@@ -262,9 +276,10 @@ func (self *SModelartsPoolSku) syncWithCloudSku(ctx context.Context, userCred mc
return err
}
func (self *SCloudprovider) newFromCloudModelartsPoolSku(ctx context.Context, userCred mcclient.TokenCredential, isku cloudprovider.ICloudModelartsPoolSku) error {
func (self *SCloudregion) newFromCloudModelartsPoolSku(ctx context.Context, userCred mcclient.TokenCredential, provider *SCloudprovider, isku cloudprovider.ICloudModelartsPoolSku) error {
sku := SModelartsPoolSku{}
sku.SetModelManager(ModelartsPoolSkuManager, &sku)
sku.CloudregionId = self.Id
sku.Name = isku.GetName()
sku.CpuCount = isku.GetCpuCoreCount()
sku.CpuArch = isku.GetCpuArch()
@@ -277,17 +292,6 @@ func (self *SCloudprovider) newFromCloudModelartsPoolSku(ctx context.Context, us
sku.NpuType = isku.GetNpuType()
sku.NpuSize = isku.GetNpuSize()
sku.ExternalId = isku.GetGlobalId()
sku.ManagerId = provider.Id
return ModelartsPoolSkuManager.TableSpec().Insert(ctx, &sku)
}
func syncModelartsPoolSku(ctx context.Context, userCred mcclient.TokenCredential, syncResults SSyncResultSet, provider *SCloudprovider, driver cloudprovider.ICloudProvider) error {
ipools, err := driver.GetIModelartsPoolSku()
if err != nil {
msg := fmt.Sprintf("GetIModelartsPoolsSku for provider %s failed %s", err, ipools)
log.Errorf(msg)
return err
}
result := provider.SyncModelartsPoolSkus(ctx, userCred, ipools)
log.Infof("SyncModelartsPools for region %s result: %s", provider.GetName(), result.Result())
return nil
}
+48 -23
View File
@@ -20,6 +20,7 @@ import (
"time"
"yunion.io/x/jsonutils"
"yunion.io/x/log"
"yunion.io/x/pkg/errors"
"yunion.io/x/pkg/util/compare"
"yunion.io/x/sqlchemy"
@@ -41,6 +42,7 @@ type SModelartsPoolManager struct {
db.SExternalizedResourceBaseManager
SDeletePreventableResourceBaseManager
SCloudregionResourceBaseManager
SManagedResourceBaseManager
}
@@ -64,6 +66,7 @@ type SModelartsPool struct {
SManagedResourceBase
SBillingResourceBase
SCloudregionResourceBase
SDeletePreventableResourceBase
InstanceType string `width:"72" charset:"ascii" nullable:"true" list:"user" update:"user" create:"optional"`
@@ -73,7 +76,7 @@ type SModelartsPool struct {
}
func (manager *SModelartsPoolManager) GetContextManagers() [][]db.IModelManager {
return [][]db.IModelManager{}
return [][]db.IModelManager{{CloudregionManager}}
}
// Pool实例列表
@@ -100,7 +103,10 @@ func (man *SModelartsPoolManager) ListItemFilter(
if err != nil {
return nil, errors.Wrap(err, "SManagedResourceBaseManager.ListItemFilter")
}
q, err = man.SCloudregionResourceBaseManager.ListItemFilter(ctx, q, userCred, query.RegionalFilterListInput)
if err != nil {
return nil, errors.Wrap(err, "SCloudregionResourceBaseManager.ListItemFilter")
}
return q, nil
}
@@ -114,6 +120,10 @@ func (man *SModelartsPoolManager) OrderByExtraFields(
if err != nil {
return nil, errors.Wrap(err, "SVirtualResourceBaseManager.OrderByExtraFields")
}
q, err = man.SCloudregionResourceBaseManager.OrderByExtraFields(ctx, q, userCred, query.RegionalFilterListInput)
if err != nil {
return nil, errors.Wrap(err, "SCloudregionResourceBaseManager.OrderByExtraFields")
}
q, err = man.SManagedResourceBaseManager.OrderByExtraFields(ctx, q, userCred, query.ManagedResourceListInput)
if err != nil {
return nil, errors.Wrap(err, "SManagedResourceBaseManager.OrderByExtraFields")
@@ -126,6 +136,10 @@ func (man *SModelartsPoolManager) QueryDistinctExtraField(q *sqlchemy.SQuery, fi
if err == nil {
return q, nil
}
q, err = man.SCloudregionResourceBaseManager.QueryDistinctExtraField(q, field)
if err == nil {
return q, nil
}
q, err = man.SManagedResourceBaseManager.QueryDistinctExtraField(q, field)
if err == nil {
return q, nil
@@ -148,11 +162,13 @@ func (manager *SModelartsPoolManager) FetchCustomizeColumns(
rows := make([]api.ModelartsPoolDetails, len(objs))
virtRows := manager.SVirtualResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList)
manRows := manager.SManagedResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList)
regRows := manager.SCloudregionResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList)
for i := range rows {
rows[i] = api.ModelartsPoolDetails{
VirtualResourceDetails: virtRows[i],
ManagedResourceInfo: manRows[i],
VirtualResourceDetails: virtRows[i],
ManagedResourceInfo: manRows[i],
CloudregionResourceInfo: regRows[i],
}
}
@@ -176,8 +192,11 @@ func (manager *SModelartsPoolManager) ListItemExportKeys(ctx context.Context,
}
return q, nil
}
func (self *SCloudprovider) GetPools() ([]SModelartsPool, error) {
q := ModelartsPoolManager.Query().Equals("manager_id", self.Id)
func (self *SCloudregion) GetPools(managerId string) ([]SModelartsPool, error) {
q := ModelartsPoolManager.Query().Equals("cloudregion_id", self.Id)
if len(managerId) > 0 {
q = q.Equals("manager_id", managerId)
}
ret := []SModelartsPool{}
err := db.FetchModelObjects(ModelartsPoolManager, q, &ret)
if err != nil {
@@ -186,12 +205,12 @@ func (self *SCloudprovider) GetPools() ([]SModelartsPool, error) {
return ret, nil
}
func (self *SCloudprovider) SyncModelartsPools(ctx context.Context, userCred mcclient.TokenCredential, exts []cloudprovider.ICloudModelartsPool) compare.SyncResult {
func (self *SCloudregion) SyncModelartsPools(ctx context.Context, userCred mcclient.TokenCredential, provider *SCloudprovider, exts []cloudprovider.ICloudModelartsPool) compare.SyncResult {
// 加锁防止重入
lockman.LockRawObject(ctx, ModelartsPoolManager.KeywordPlural(), fmt.Sprintf("%s", self.Id))
defer lockman.ReleaseRawObject(ctx, ModelartsPoolManager.KeywordPlural(), fmt.Sprintf("%s", self.Id))
lockman.LockRawObject(ctx, ModelartsPoolManager.KeywordPlural(), fmt.Sprintf("%s-%s", provider.Id, self.Id))
defer lockman.ReleaseRawObject(ctx, ModelartsPoolManager.KeywordPlural(), fmt.Sprintf("%s-%s", provider.Id, self.Id))
result := compare.SyncResult{}
dbPools, err := self.GetPools()
dbPools, err := self.GetPools(provider.Id)
if err != nil {
result.Error(err)
return result
@@ -230,7 +249,7 @@ func (self *SCloudprovider) SyncModelartsPools(ctx context.Context, userCred mcc
// 创建本地没有的云上资源
for i := 0; i < len(added); i++ {
_, err := self.newFromCloudModelartsPool(ctx, userCred, self, added[i])
_, err := self.newFromCloudModelartsPool(ctx, userCred, provider, added[i])
if err != nil {
result.AddError(err)
continue
@@ -241,7 +260,8 @@ func (self *SCloudprovider) SyncModelartsPools(ctx context.Context, userCred mcc
}
// 判断资源是否可以删除
func (self *SModelartsPool) ValidateDeleteCondition(ctx context.Context) error {
func (self *SModelartsPool) ValidateDeleteCondition(ctx context.Context, info jsonutils.JSONObject) error {
log.Errorln("this is IN Validata")
if self.DisableDelete.IsTrue() {
return httperrors.NewInvalidStatusError("ModelartsPool is locked, cannot delete")
}
@@ -313,14 +333,6 @@ func (self *SModelartsPool) CustomizeDelete(ctx context.Context, userCred mcclie
return self.StartDeleteTask(ctx, userCred, "")
}
func (self *SModelartsPool) GetICloudModelartsPool(ctx context.Context) (cloudprovider.ICloudModelartsPool, error) {
iProvider, err := self.GetDriver(ctx)
if err != nil {
return nil, errors.Wrap(err, "self.GetDriver")
}
return iProvider.GetIModelartsPoolById(self.ExternalId)
}
func (self *SModelartsPool) StartDeleteTask(ctx context.Context, userCred mcclient.TokenCredential, parentTaskId string) error {
task, err := taskman.TaskManager.NewTask(ctx, "ModelartsPoolDeleteTask", self, userCred, nil, parentTaskId, "", nil)
if err != nil {
@@ -331,16 +343,28 @@ func (self *SModelartsPool) StartDeleteTask(ctx context.Context, userCred mcclie
return nil
}
func (self *SModelartsPool) GetIRegion() (cloudprovider.ICloudRegion, error) {
region, err := self.GetRegion()
if err != nil {
return nil, errors.Wrapf(err, "GetRegion")
}
provider, err := self.GetDriver(context.Background())
if err != nil {
return nil, errors.Wrap(err, "self.GetDriver")
}
return provider.GetIRegionById(region.GetExternalId())
}
// 获取云上对应的资源
func (self *SModelartsPool) GetIModelartsPool() (cloudprovider.ICloudModelartsPool, error) {
if len(self.ExternalId) == 0 {
return nil, errors.Wrapf(cloudprovider.ErrNotFound, "empty externalId")
}
iProvider, err := self.GetDriver(context.Background())
iRegion, err := self.GetIRegion()
if err != nil {
return nil, errors.Wrap(err, "self.GetDriver")
}
return iProvider.GetIModelartsPoolById(self.ExternalId)
return iRegion.GetIModelartsPoolById(self.ExternalId)
}
// 同步资源属性
@@ -374,11 +398,12 @@ func (self *SModelartsPool) SyncWithCloudModelartsPool(ctx context.Context, user
return nil
}
func (self *SCloudprovider) newFromCloudModelartsPool(ctx context.Context, userCred mcclient.TokenCredential, provider *SCloudprovider, ext cloudprovider.ICloudModelartsPool) (*SModelartsPool, error) {
func (self *SCloudregion) newFromCloudModelartsPool(ctx context.Context, userCred mcclient.TokenCredential, provider *SCloudprovider, ext cloudprovider.ICloudModelartsPool) (*SModelartsPool, error) {
pool := SModelartsPool{}
pool.SetModelManager(ModelartsPoolManager, &pool)
pool.ExternalId = ext.GetGlobalId()
pool.CloudregionId = self.Id
pool.ManagerId = provider.Id
pool.IsEmulated = ext.IsEmulated()
pool.Status = ext.GetStatus()
@@ -52,13 +52,13 @@ func (self *ModelartsPoolCreateTask) OnInit(ctx context.Context, obj db.IStandal
InstanceType: pool.InstanceType,
WorkType: pool.WorkType,
}
iProvider, err := pool.GetDriver(ctx)
iRegion, err := pool.GetIRegion()
if err != nil {
self.taskFailed(ctx, pool, errors.Wrapf(err, "pool.GetDriver"))
return
}
ipool, err := iProvider.CreateIModelartsPool(opts)
ipool, err := iRegion.CreateIModelartsPool(opts)
if err != nil {
self.taskFailed(ctx, pool, errors.Wrapf(err, "iProvider.CreateIModelartsPool"))
return
+21 -16
View File
@@ -29,6 +29,7 @@ import (
type SModelartsPool struct {
client *SHuaweiClient
region *SRegion
multicloud.SResourceBase
Metadata SModelartsPoolMetadata `json:"metadata"`
@@ -87,9 +88,9 @@ type SModelartsPoolNetworkMetadata struct {
CreationTimestamp string `json:"creationTimestamp"`
}
func (self *SHuaweiClient) GetIModelartsPools() ([]cloudprovider.ICloudModelartsPool, error) {
func (self *SRegion) GetIModelartsPools() ([]cloudprovider.ICloudModelartsPool, error) {
pools := make([]SModelartsPool, 0)
resObj, err := self.modelartsPoolList("pools", nil)
resObj, err := self.client.modelartsPoolList("pools", nil)
if err != nil {
return nil, errors.Wrap(err, "region.GetPools")
}
@@ -99,14 +100,16 @@ func (self *SHuaweiClient) GetIModelartsPools() ([]cloudprovider.ICloudModelarts
}
res := make([]cloudprovider.ICloudModelartsPool, len(pools))
for i := 0; i < len(pools); i++ {
pools[i].client = self
pools[i].region = self
pools[i].client = self.GetClient()
res[i] = &pools[i]
}
return res, nil
}
func (self *SHuaweiClient) CreateIModelartsPool(args *cloudprovider.ModelartsPoolCreateOption) (cloudprovider.ICloudModelartsPool, error) {
netObj, err := self.modelartsPoolNetworkList("network", nil)
func (self *SRegion) CreateIModelartsPool(args *cloudprovider.ModelartsPoolCreateOption) (cloudprovider.ICloudModelartsPool, error) {
netObj, err := self.client.modelartsPoolNetworkList("network", nil)
if err != nil {
return nil, errors.Wrap(err, "SHuaweiClient.GetPools")
}
@@ -116,7 +119,7 @@ func (self *SHuaweiClient) CreateIModelartsPool(args *cloudprovider.ModelartsPoo
if len(netRes) != 0 {
netId = netRes[0].Metadata.Name
} else {
createNetObj, err := self.CreatePoolNetworks()
createNetObj, err := self.client.CreatePoolNetworks()
if err != nil {
return nil, errors.Wrap(err, "SHuaweiClient.CreatePoolNetworks")
}
@@ -148,7 +151,7 @@ func (self *SHuaweiClient) CreateIModelartsPool(args *cloudprovider.ModelartsPoo
},
},
}
obj, err := self.modelartsPoolCreate("pools", params)
obj, err := self.client.modelartsPoolCreate("pools", params)
if err != nil {
return nil, errors.Wrap(err, "SHuaweiClient.GetPools")
}
@@ -156,19 +159,20 @@ func (self *SHuaweiClient) CreateIModelartsPool(args *cloudprovider.ModelartsPoo
obj.Unmarshal(&pool)
res := []cloudprovider.ICloudModelartsPool{}
for i := 0; i < 1; i++ {
pool.client = self
pool.region = self
pool.client = self.GetClient()
res = append(res, pool)
}
return res[0], nil
}
func (self *SHuaweiClient) DeletePool(poolName string) (jsonutils.JSONObject, error) {
return self.modelartsPoolDelete("pools", poolName, nil)
func (self *SRegion) DeletePool(poolName string) (jsonutils.JSONObject, error) {
return self.client.modelartsPoolDelete("pools", poolName, nil)
}
func (self *SHuaweiClient) GetIModelartsPoolById(poolId string) (cloudprovider.ICloudModelartsPool, error) {
obj, err := self.modelartsPoolById(poolId, nil)
func (self *SRegion) GetIModelartsPoolById(poolId string) (cloudprovider.ICloudModelartsPool, error) {
obj, err := self.client.modelartsPoolById(poolId, nil)
if err != nil {
if strings.Contains(err.Error(), "not found") {
return nil, errors.Wrapf(cloudprovider.ErrNotFound, "")
@@ -179,14 +183,15 @@ func (self *SHuaweiClient) GetIModelartsPoolById(poolId string) (cloudprovider.I
obj.Unmarshal(&pool)
res := []cloudprovider.ICloudModelartsPool{}
for i := 0; i < 1; i++ {
pool.client = self
pool.region = self
pool.client = self.GetClient()
res = append(res, pool)
}
return res[0], nil
}
func (self *SHuaweiClient) MonitorPool(poolId string) (*SModelartsMetrics, error) {
resObj, err := self.modelartsPoolMonitor(poolId, nil)
func (self *SRegion) MonitorPool(poolId string) (*SModelartsMetrics, error) {
resObj, err := self.client.modelartsPoolMonitor(poolId, nil)
if err != nil {
return nil, errors.Wrapf(err, "send request error")
}
@@ -333,7 +338,7 @@ func (self *SModelartsPool) SetTags(tags map[string]string, replace bool) error
}
func (self *SModelartsPool) Delete() error {
_, err := self.client.DeletePool(self.GetId())
_, err := self.region.DeletePool(self.GetId())
if err != nil {
return err
}
+2 -2
View File
@@ -55,10 +55,10 @@ type SModelartsResourceflavorsStatus struct {
Phase map[string]interface{} `json:"phase"`
}
func (self *SHuaweiClient) GetIModelartsPoolSku() ([]cloudprovider.ICloudModelartsPoolSku, error) {
func (self *SRegion) GetIModelartsPoolSku() ([]cloudprovider.ICloudModelartsPoolSku, error) {
params := make(map[string]interface{})
resourceflavors := make([]SModelartsPoolSku, 0)
obj, err := self.modelartsResourceflavors("resourceflavors", params)
obj, err := self.client.modelartsResourceflavors("resourceflavors", params)
if err != nil {
return nil, errors.Wrap(err, "region.modelartsResourceflavors")
}
@@ -304,23 +304,3 @@ func (self *SHuaweiProvider) CreateICloudSAMLProvider(opts *cloudprovider.SAMLPr
}
return sp, nil
}
func (self *SHuaweiProvider) CreateIModelartsPool(args *cloudprovider.ModelartsPoolCreateOption) (cloudprovider.ICloudModelartsPool, error) {
return self.client.CreateIModelartsPool(args)
}
func (self *SHuaweiProvider) GetIModelartsPoolById(poolId string) (cloudprovider.ICloudModelartsPool, error) {
return self.client.GetIModelartsPoolById(poolId)
}
func (self *SHuaweiProvider) GetIModelartsPools() ([]cloudprovider.ICloudModelartsPool, error) {
return self.client.GetIModelartsPools()
}
func (self *SHuaweiProvider) GetMetrics(opts *cloudprovider.MetricListOptions) ([]cloudprovider.MetricValues, error) {
return self.client.GetMetrics(opts)
}
func (self *SHuaweiProvider) GetIModelartsPoolSku() ([]cloudprovider.ICloudModelartsPoolSku, error) {
return self.client.GetIModelartsPoolSku()
}
@@ -29,7 +29,7 @@ func init() {
}
shellutils.R(&ModelartsPoolListOption{}, "modelarts-pool-list", "List Modelarts Pool", func(cli *huawei.SRegion, args *ModelartsPoolListOption) error {
pools, err := cli.GetClient().GetIModelartsPools()
pools, err := cli.GetIModelartsPools()
if err != nil {
return err
}
@@ -38,7 +38,7 @@ func init() {
})
shellutils.R(&ModelartsPoolListOption{}, "modelarts-pool-detail", "List pool", func(cli *huawei.SRegion, args *ModelartsPoolListOption) error {
pools, err := cli.GetClient().GetIModelartsPoolById(args.PoolId)
pools, err := cli.GetIModelartsPoolById(args.PoolId)
if err != nil {
return err
}
@@ -47,7 +47,7 @@ func init() {
})
shellutils.R(&cloudprovider.ModelartsPoolCreateOption{}, "modelarts-pool-create", "Create Modelarts Pool", func(cli *huawei.SRegion, args *cloudprovider.ModelartsPoolCreateOption) error {
res, err := cli.GetClient().CreateIModelartsPool(args)
res, err := cli.CreateIModelartsPool(args)
if err != nil {
return err
}
@@ -57,7 +57,7 @@ func init() {
})
shellutils.R(&ModelartsPoolListOption{}, "modelarts-pool-delete", "Delete Modelarts Pool", func(cli *huawei.SRegion, args *ModelartsPoolListOption) error {
res, err := cli.GetClient().DeletePool(args.PoolId)
res, err := cli.DeletePool(args.PoolId)
if err != nil {
return err
}
@@ -67,7 +67,7 @@ func init() {
})
shellutils.R(&ModelartsPoolListOption{}, "modelarts-pool-monitor", "Delete Modelarts Pool", func(cli *huawei.SRegion, args *ModelartsPoolListOption) error {
res, err := cli.GetClient().MonitorPool(args.PoolId)
res, err := cli.MonitorPool(args.PoolId)
if err != nil {
return err
}
@@ -25,7 +25,7 @@ func init() {
PoolName string `help:"Pool Name"`
}
shellutils.R(&ModelartsResourceflavorsListOption{}, "modelarts-sku-list", "List Modelarts Pool", func(cli *huawei.SRegion, args *ModelartsResourceflavorsListOption) error {
resourceflavors, err := cli.GetClient().GetIModelartsPoolSku()
resourceflavors, err := cli.GetIModelartsPoolSku()
if err != nil {
return err
}
+16
View File
@@ -376,3 +376,19 @@ func (self *SRegionEipBase) GetIEips() ([]cloudprovider.ICloudEIP, error) {
func (self *SRegionEipBase) CreateEIP(eip *cloudprovider.SEip) (cloudprovider.ICloudEIP, error) {
return nil, errors.Wrapf(cloudprovider.ErrNotImplemented, "CreateEIP")
}
func (self *SRegion) GetIModelartsPools() ([]cloudprovider.ICloudModelartsPool, error) {
return nil, errors.Wrapf(cloudprovider.ErrNotImplemented, "GetIModelartsPools")
}
func (self *SRegion) GetIModelartsPoolById(id string) (cloudprovider.ICloudModelartsPool, error) {
return nil, errors.Wrapf(cloudprovider.ErrNotImplemented, "GetIModelartsPoolDetail")
}
func (self *SRegion) CreateIModelartsPool(pool *cloudprovider.ModelartsPoolCreateOption) (cloudprovider.ICloudModelartsPool, error) {
return nil, errors.Wrapf(cloudprovider.ErrNotImplemented, "CreateIModelartsPool")
}
func (self *SRegion) GetIModelartsPoolSku() ([]cloudprovider.ICloudModelartsPoolSku, error) {
return nil, errors.Wrapf(cloudprovider.ErrNotImplemented, "GetIModelartsPoolSku")
}