mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-08-31 01:35:56 +08:00
Merge pull request #9386 from tb365/feature/tb-support-sync-skus-by-cloudregion
feat(region): support sync skus by cloudregion
This commit is contained in:
@@ -19,6 +19,7 @@ import (
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
|
||||
"yunion.io/x/onecloud/cmd/climc/shell"
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modulebase"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules"
|
||||
@@ -26,6 +27,23 @@ import (
|
||||
)
|
||||
|
||||
func init() {
|
||||
cmd := shell.NewResourceCmd(&modules.Cloudregions).WithKeyword("cloud-region")
|
||||
cmd.PerformClass("sync-skus", &options.CloudregionSkuSyncOptions{})
|
||||
|
||||
R(&options.SkuTaskQueryOptions{}, "cloud-region-sync-task-show", "Show details of skus sync tasks", func(s *mcclient.ClientSession, args *options.SkuTaskQueryOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
result, err := modules.Cloudregions.Get(s, "sync-tasks", params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(result)
|
||||
return nil
|
||||
})
|
||||
|
||||
type CloudregionListOptions struct {
|
||||
options.BaseListOptions
|
||||
|
||||
|
||||
@@ -169,3 +169,11 @@ type SkuTaskQueryInput struct {
|
||||
// 异步任务ID
|
||||
TaskIds []string `json:"task_ids"`
|
||||
}
|
||||
|
||||
type CloudregionSkuSyncInput struct {
|
||||
SkuSyncInput
|
||||
|
||||
// 同步资源类型
|
||||
// choices: serversku|elasticcachesku|dbinstance_sku
|
||||
Resource string `json:"resource"`
|
||||
}
|
||||
|
||||
@@ -1073,3 +1073,19 @@ func (self *SCloudregion) newCloudimage(ctx context.Context, userCred mcclient.T
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (manager *SCloudregionManager) AllowSyncSkus(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) bool {
|
||||
return db.IsAdminAllowPerform(userCred, manager, "sync-skus")
|
||||
}
|
||||
|
||||
func (manager *SCloudregionManager) PerformSyncSkus(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input api.CloudregionSkuSyncInput) (jsonutils.JSONObject, error) {
|
||||
return PerformActionSyncSkus(ctx, userCred, input.Resource, input.SkuSyncInput)
|
||||
}
|
||||
|
||||
func (manager *SCloudregionManager) AllowGetPropertySyncTasks(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) bool {
|
||||
return db.IsAdminAllowGetSpec(userCred, manager, "sync-tasks")
|
||||
}
|
||||
|
||||
func (manager *SCloudregionManager) GetPropertySyncTasks(ctx context.Context, userCred mcclient.TokenCredential, query api.SkuTaskQueryInput) (jsonutils.JSONObject, error) {
|
||||
return GetPropertySkusSyncTasks(ctx, userCred, query)
|
||||
}
|
||||
|
||||
@@ -5,9 +5,8 @@ import (
|
||||
"database/sql"
|
||||
"strings"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/pkg/errors"
|
||||
"yunion.io/x/pkg/utils"
|
||||
"yunion.io/x/sqlchemy"
|
||||
|
||||
|
||||
@@ -33,3 +33,12 @@ func (opts *SkuTaskQueryOptions) Params() (jsonutils.JSONObject, error) {
|
||||
params.Set("task_ids", jsonutils.Marshal(opts.TaskIds))
|
||||
return params, nil
|
||||
}
|
||||
|
||||
type CloudregionSkuSyncOptions struct {
|
||||
RESOURCE string `help:"Resource of skus" choices:"serversku|elasticcachesku|dbinstance_sku"`
|
||||
SkuSyncOptions
|
||||
}
|
||||
|
||||
func (opts *CloudregionSkuSyncOptions) Params() (jsonutils.JSONObject, error) {
|
||||
return jsonutils.Marshal(opts), nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user