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:
Zexi Li
2020-12-13 13:51:23 +08:00
committed by GitHub
5 changed files with 52 additions and 2 deletions
+18
View File
@@ -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
+8
View File
@@ -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"`
}
+16
View File
@@ -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)
}
+1 -2
View File
@@ -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"
+9
View File
@@ -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
}