From 30f692b88de41a2df5f18c1793ab62146cb9a0e8 Mon Sep 17 00:00:00 2001 From: TangBin Date: Mon, 10 Sep 2018 15:03:31 +0800 Subject: [PATCH] add parameter climc --- cmd/climc/shell/parameters.go | 80 ++++++++++++++++------------------- 1 file changed, 37 insertions(+), 43 deletions(-) diff --git a/cmd/climc/shell/parameters.go b/cmd/climc/shell/parameters.go index 28ed9b1866..9b08647c12 100644 --- a/cmd/climc/shell/parameters.go +++ b/cmd/climc/shell/parameters.go @@ -10,7 +10,9 @@ import ( func init() { type ParametersListOptions struct { options.BaseListOptions - NamespaceId string `help:"Show parameter of specificated namespace id, ADMIN only"` + NamespaceId string `help:"List parameter of specificated namespace id, ADMIN only"` + User string `help:"List parameter of specificated user id/ name, ADMIN only"` + Service string `help:"List parameter of specificated service id/ name, ADMIN only"` } R(&ParametersListOptions{}, "parameter-list", "list parameters", func(s *mcclient.ClientSession, args *ParametersListOptions) error { @@ -19,12 +21,18 @@ func init() { return err } + var result *modules.ListResult if len(args.NamespaceId) > 0 { - params.Add(jsonutils.JSONTrue, "admin") params.Add(jsonutils.NewString(args.NamespaceId), "namespace_id") + result, err = modules.Parameters.List(s, params) + } else if len(args.User) > 0 { + result, err = modules.Parameters.ListInContext(s, params, &modules.UsersV3, args.User) + } else if len(args.Service) > 0 { + result, err = modules.Parameters.ListInContext(s, params, &modules.ServicesV3, args.Service) + } else { + result, err = modules.Parameters.List(s, params) } - result, err := modules.Parameters.List(s, params) if err != nil { return err } @@ -33,29 +41,32 @@ func init() { }) type ParametersShowOptions struct { - Namespace string `help:"Show parameter of specificated namespace, ADMIN only"` NamespaceId string `help:"Show parameter of specificated namespace id, ADMIN only"` - UserId string `help:"Show parameter created by specificated user, ADMIN only"` + User string `help:"Show parameter of specificated user or user id, ADMIN only"` + Service string `help:"Show parameter of specificated service or service id, 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 len(args.Namespace) > 0 { - params.Add(jsonutils.JSONTrue, "admin") - params.Add(jsonutils.NewString(args.Namespace), "namespace") - } - if len(args.NamespaceId) > 0 { params.Add(jsonutils.JSONTrue, "admin") params.Add(jsonutils.NewString(args.NamespaceId), "namespace_id") } - if len(args.UserId) > 0 { - params.Add(jsonutils.JSONTrue, "admin") - params.Add(jsonutils.NewString(args.UserId), "created_by") + var parameter jsonutils.JSONObject + var err error + if len(args.NamespaceId) > 0 { + params.Add(jsonutils.NewString(args.NamespaceId), "namespace_id") + parameter, err = modules.Parameters.Get(s, args.NAME, params) + } else if len(args.User) > 0 { + parameter, err = modules.Parameters.GetInContext(s, args.NAME, params, &modules.UsersV3, args.User) + } else if len(args.Service) > 0 { + parameter, err = modules.Parameters.GetInContext(s, args.NAME, params, &modules.ServicesV3, args.Service) + } else { + parameter, err = modules.Parameters.Get(s, args.NAME, params) } - parameter, err := modules.Parameters.Get(s, args.NAME, params) + if err != nil { return err } @@ -64,8 +75,8 @@ func init() { }) type ParametersCreateOptions struct { - User string `help:"Create parameter for specificated user, ADMIN only"` - Service string `help:"Create parameter for specificated service, ADMIN only"` + User string `help:"Create parameter for specificated user or user id, ADMIN only"` + Service string `help:"Create parameter for specificated service or service id, ADMIN only"` NAME string `help:"The name of parameter"` VALUE string `help:"The content of parameter"` } @@ -102,25 +113,16 @@ func init() { params.Add(jsonutils.NewString(args.VALUE), "value") } - var ctx modules.Manager - var ctxid string + var parameter jsonutils.JSONObject + var err error if len(args.User) > 0 { - ctxid = args.User - ctx = &modules.UsersV3 - params.Add(jsonutils.JSONTrue, "admin") - params.Add(jsonutils.NewString(args.User), "user_id") - + parameter, err = modules.Parameters.PutInContext(s, args.NAME, params, &modules.UsersV3, args.User) } else if len(args.Service) > 0 { - ctxid = args.Service - ctx = &modules.ServicesV3 - params.Add(jsonutils.JSONTrue, "admin") - params.Add(jsonutils.NewString(args.Service), "service_id") + parameter, err = modules.Parameters.PutInContext(s, args.NAME, params, &modules.ServicesV3, args.Service) } else { - ctxid = s.GetUserId() - ctx = &modules.UsersV3 + parameter, err = modules.Parameters.PutInContext(s, args.NAME, params, &modules.UsersV3, s.GetUserId()) } - parameter, err := modules.Parameters.PutInContext(s, args.NAME, params, ctx, ctxid) if err != nil { return err } @@ -137,24 +139,16 @@ func init() { R(&ParametersDeleteOptions{}, "parameter-delete", "delete notice", func(s *mcclient.ClientSession, args *ParametersDeleteOptions) error { params := jsonutils.NewDict() - var ctx modules.Manager - var ctxid string + var parameter jsonutils.JSONObject + var err error if len(args.User) > 0 { - ctxid = args.User - ctx = &modules.UsersV3 - params.Add(jsonutils.JSONTrue, "admin") - params.Add(jsonutils.NewString(args.User), "user_id") + parameter, err = modules.Parameters.DeleteInContext(s, args.NAME, params, &modules.UsersV3, args.User) } else if len(args.Service) > 0 { - ctxid = args.Service - ctx = &modules.ServicesV3 - params.Add(jsonutils.JSONTrue, "admin") - params.Add(jsonutils.NewString(args.Service), "service_id") + parameter, err = modules.Parameters.DeleteInContext(s, args.NAME, params, &modules.ServicesV3, args.Service) } else { - ctxid = s.GetUserId() - ctx = &modules.UsersV3 + parameter, err = modules.Parameters.DeleteInContext(s, args.NAME, params, &modules.UsersV3, s.GetUserId()) } - parameter, err := modules.Parameters.DeleteInContext(s, args.NAME, params, ctx, ctxid) if err != nil { return err }