mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
modelartsBugFix
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user