From 5f01cb9c04da6b7ad43287cdcdae08962fb80b3b Mon Sep 17 00:00:00 2001 From: TangBin Date: Wed, 5 Sep 2018 19:48:52 +0800 Subject: [PATCH] add climc --- cmd/climc/shell/parameters.go | 122 +++++++++++++++++++++++++ pkg/mcclient/modules/managers.go | 8 ++ pkg/mcclient/modules/mod_parameters.go | 17 ++++ 3 files changed, 147 insertions(+) create mode 100644 cmd/climc/shell/parameters.go create mode 100644 pkg/mcclient/modules/mod_parameters.go diff --git a/cmd/climc/shell/parameters.go b/cmd/climc/shell/parameters.go new file mode 100644 index 0000000000..2d1c49caa0 --- /dev/null +++ b/cmd/climc/shell/parameters.go @@ -0,0 +1,122 @@ +package shell + +import ( + "yunion.io/x/jsonutils" + "yunion.io/x/onecloud/pkg/mcclient" + "yunion.io/x/onecloud/pkg/mcclient/modules" + "yunion.io/x/onecloud/pkg/mcclient/options" +) + +func init() { + type ParametersListOptions struct { + options.BaseListOptions + } + + R(&ParametersListOptions{}, "parameter-list", "list parameters", func(s *mcclient.ClientSession, args *ParametersListOptions) error { + params, err := options.ListStructToParams(args) + if err != nil { + return err + } + + result, err := modules.Parameters.List(s, params) + if err != nil { + return err + } + printList(result, modules.Parameters.GetColumns(s)) + return nil + }) + + type ParametersShowOptions struct { + Admin bool `help:"Show parameter of all users, ADMIN only"` + UserId string `help:"Show parameter of a user, ADMIN only"` + NAME string `help:"The name of parameter"` + } + + R(&ParametersShowOptions{}, "parameter-show", "show a parameter", func(s *mcclient.ClientSession, args *ParametersShowOptions) error { + params := jsonutils.NewDict() + if args.Admin { + params.Add(jsonutils.JSONTrue, "admin") + } + + if len(args.UserId) > 0 { + params.Add(jsonutils.NewString(args.UserId), "user_id") + } + parameter, err := modules.Parameters.Get(s, args.NAME, params) + if err != nil { + return err + } + printObject(parameter) + return nil + }) + + type ParametersCreateOptions struct { + NAME string `help:"The name of parameter"` + VALUE string `help:"The content of parameter"` + } + + R(&ParametersCreateOptions{}, "parameter-create", "create a parameter", func(s *mcclient.ClientSession, args *ParametersCreateOptions) error { + params := jsonutils.NewDict() + params.Add(jsonutils.NewString(args.NAME), "name") + params.Add(jsonutils.NewString(args.VALUE), "value") + + parameter, err := modules.Parameters.Create(s, params) + if err != nil { + return err + } + printObject(parameter) + return nil + }) + + type ParametersUpdateOptions struct { + Admin bool `help:"Update parameter of all users, ADMIN only"` + UserId string `help:"Update parameter of a user, ADMIN only"` + NAME string `help:"The name of parameter"` + VALUE string `help:"The content of parameter"` + } + + R(&ParametersUpdateOptions{}, "parameter-update", "update parameter", func(s *mcclient.ClientSession, args *ParametersUpdateOptions) error { + params := jsonutils.NewDict() + if len(args.VALUE) > 0 { + params.Add(jsonutils.NewString(args.VALUE), "value") + } + + if args.Admin { + params.Add(jsonutils.JSONTrue, "admin") + } + + if len(args.UserId) > 0 { + params.Add(jsonutils.NewString(args.UserId), "user_id") + } + + parameter, err := modules.Parameters.Update(s, args.NAME, params) + if err != nil { + return err + } + printObject(parameter) + return nil + }) + + type ParametersDeleteOptions struct { + Admin bool `help:"delete parameter of a user, ADMIN only"` + UserId string `help:"delete parameter of a user, ADMIN only"` + NAME string `help:"The name of parameter"` + } + + R(&ParametersDeleteOptions{}, "parameter-delete", "delete notice", func(s *mcclient.ClientSession, args *ParametersDeleteOptions) error { + params := jsonutils.NewDict() + if args.Admin { + params.Add(jsonutils.JSONTrue, "admin") + } + + if len(args.UserId) > 0 { + params.Add(jsonutils.NewString(args.UserId), "user_id") + } + + parameter, err := modules.Notice.Delete(s, args.NAME, params) + if err != nil { + return err + } + printObject(parameter) + return nil + }) +} diff --git a/pkg/mcclient/modules/managers.go b/pkg/mcclient/modules/managers.go index b138009ed1..bc7e30dd93 100644 --- a/pkg/mcclient/modules/managers.go +++ b/pkg/mcclient/modules/managers.go @@ -115,3 +115,11 @@ func NewYunionAgentManager(keyword, keywordPlural string, columns, adminColumns serviceType: "yunionagent"}, Keyword: keyword, KeywordPlural: keywordPlural} } + +func NewYunionConfManager(keyword, keywordPlural string, columns, adminColumns []string) ResourceManager { + return ResourceManager{ + BaseManager: BaseManager{columns: columns, + adminColumns: adminColumns, + serviceType: "yunionconf"}, + Keyword: keyword, KeywordPlural: keywordPlural} +} \ No newline at end of file diff --git a/pkg/mcclient/modules/mod_parameters.go b/pkg/mcclient/modules/mod_parameters.go new file mode 100644 index 0000000000..7ae596c261 --- /dev/null +++ b/pkg/mcclient/modules/mod_parameters.go @@ -0,0 +1,17 @@ +package modules + +type ParametersManager struct { + ResourceManager +} + +var ( + Parameters ParametersManager +) + +func init() { + Parameters = ParametersManager{NewYunionConfManager("parameter", "parameters", + []string{"id", "created_at", "update_at", "name", "value"}, + []string{"user_id"}, + )} + register(&Parameters) +} \ No newline at end of file