Skip to content

Commit

Permalink
fix: optimized for cloudid (#7604)
Browse files Browse the repository at this point in the history
Co-authored-by: Qu Xuan <quxuan@yunionyun.com>
  • Loading branch information
ioito and Qu Xuan committed Aug 21, 2020
1 parent 46683b2 commit 5b898bb
Show file tree
Hide file tree
Showing 12 changed files with 486 additions and 451 deletions.
160 changes: 15 additions & 145 deletions cmd/climc/shell/cloudid/cloudgroup.go
Expand Up @@ -15,154 +15,24 @@
package cloudid

import (
"yunion.io/x/jsonutils"

"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/cmd/climc/shell"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"
)

func init() {
type CloudgroupListOptions struct {
options.BaseListOptions

ClouduserId string `json:"clouduser_id"`
CloudpolicyId string `json:"cloudpolicy_id"`
Usable bool `json:"usable"`
}
R(&CloudgroupListOptions{}, "cloud-group-list", "List cloud groups", func(s *mcclient.ClientSession, opts *CloudgroupListOptions) error {
params, err := options.ListStructToParams(opts)
if err != nil {
return err
}
result, err := modules.Cloudgroups.List(s, params)
if err != nil {
return err
}
printList(result, modules.Cloudgroups.GetColumns(s))
return nil
})

type CloudgroupCreateOptions struct {
NAME string `json:"name"`
PROVIDER string `json:"provider" choices:"Google|Aliyun|Aws|Huawei|Qcloud"`
CloudpolicyIds []string `json:"cloudpolicy_ids"`
Desc string `json:"description"`
}

R(&CloudgroupCreateOptions{}, "cloud-group-create", "Create cloud group", func(s *mcclient.ClientSession, opts *CloudgroupCreateOptions) error {
params := jsonutils.Marshal(opts)
result, err := modules.Cloudgroups.Create(s, params)
if err != nil {
return err
}
printObject(result)
return nil
})

type CloudgroupIdOptions struct {
ID string `help:"Cloudgroup Id"`
}

R(&CloudgroupIdOptions{}, "cloud-group-delete", "Delete cloud group", func(s *mcclient.ClientSession, opts *CloudgroupIdOptions) error {
result, err := modules.Cloudgroups.Delete(s, opts.ID, nil)
if err != nil {
return err
}
printObject(result)
return nil
})

R(&CloudgroupIdOptions{}, "cloud-group-show", "Show cloud group", func(s *mcclient.ClientSession, opts *CloudgroupIdOptions) error {
result, err := modules.Cloudgroups.Get(s, opts.ID, nil)
if err != nil {
return err
}
printObject(result)
return nil
})

R(&CloudgroupIdOptions{}, "cloud-group-syncstatus", "Sync cloud group status", func(s *mcclient.ClientSession, opts *CloudgroupIdOptions) error {
result, err := modules.Cloudgroups.PerformAction(s, opts.ID, "syncstatus", nil)
if err != nil {
return err
}
printObject(result)
return nil
})

type CloudgroupPolicyOptions struct {
ID string `help:"Cloudgroup Id"`
CLOUDPOLICY_ID string `help:"Cloudpolicy Id"`
}

R(&CloudgroupPolicyOptions{}, "cloud-group-attach-policy", "Attach policy for cloud group", func(s *mcclient.ClientSession, opts *CloudgroupPolicyOptions) error {
result, err := modules.Cloudgroups.PerformAction(s, opts.ID, "attach-policy", jsonutils.Marshal(opts))
if err != nil {
return err
}
printObject(result)
return nil
})

R(&CloudgroupPolicyOptions{}, "cloud-group-detach-policy", "Detach policy from cloud group", func(s *mcclient.ClientSession, opts *CloudgroupPolicyOptions) error {
result, err := modules.Cloudgroups.PerformAction(s, opts.ID, "detach-policy", jsonutils.Marshal(opts))
if err != nil {
return err
}
printObject(result)
return nil
})

type CloudgroupUserOptions struct {
ID string `help:"Cloudgroup Id"`
CLOUDUSER_ID string `help:"Clouduser Id"`
}

R(&CloudgroupUserOptions{}, "cloud-group-add-user", "Add user to cloud group", func(s *mcclient.ClientSession, opts *CloudgroupUserOptions) error {
result, err := modules.Cloudgroups.PerformAction(s, opts.ID, "add-user", jsonutils.Marshal(opts))
if err != nil {
return err
}
printObject(result)
return nil
})

R(&CloudgroupUserOptions{}, "cloud-group-remove-user", "Remove user from cloud group", func(s *mcclient.ClientSession, opts *CloudgroupUserOptions) error {
result, err := modules.Cloudgroups.PerformAction(s, opts.ID, "remove-user", jsonutils.Marshal(opts))
if err != nil {
return err
}
printObject(result)
return nil
})

type CloudgroupPoliciesOptions struct {
ID string `help:"Cloudgroup Id"`
CloudpolicyIds []string `json:"cloudpolicy_ids"`
}

R(&CloudgroupPoliciesOptions{}, "cloud-group-set-policies", "Set cloudpolicies for cloud group", func(s *mcclient.ClientSession, opts *CloudgroupPoliciesOptions) error {
result, err := modules.Cloudgroups.PerformAction(s, opts.ID, "set-policies", jsonutils.Marshal(opts))
if err != nil {
return err
}
printObject(result)
return nil
})

type CloudgroupUsersOptions struct {
ID string `help:"Cloudgroup Id"`
ClouduserIds []string `json:"clouduser_ids"`
}

R(&CloudgroupUsersOptions{}, "cloud-group-set-users", "Set users for cloud group", func(s *mcclient.ClientSession, opts *CloudgroupUsersOptions) error {
result, err := modules.Cloudgroups.PerformAction(s, opts.ID, "set-users", jsonutils.Marshal(opts))
if err != nil {
return err
}
printObject(result)
return nil
})

cmd := shell.NewResourceCmd(&modules.Cloudgroups).WithKeyword("cloud-group")
cmd.List(&options.CloudgroupListOptions{})
cmd.Create(&options.CloudgroupCreateOptions{})
cmd.Show(&options.CloudgroupIdOptions{})
cmd.Delete(&options.CloudgroupIdOptions{})
cmd.Perform("syncstatus", &options.CloudgroupIdOptions{})
cmd.Perform("attach-policy", &options.CloudgroupPolicyOptions{})
cmd.Perform("detach-policy", &options.CloudgroupPolicyOptions{})
cmd.Perform("add-user", &options.CloudgroupUserOptions{})
cmd.Perform("remove-user", &options.CloudgroupUserOptions{})
cmd.Perform("set-policies", &options.CloudgroupPolicyOptions{})
cmd.Perform("set-users", &options.CloudgroupUserOptions{})
cmd.Perform("public", &options.CloudgroupPublicOptions{})
cmd.Perform("private", &options.CloudgroupIdOptions{})
}
124 changes: 11 additions & 113 deletions cmd/climc/shell/cloudid/cloudpolicy.go
Expand Up @@ -15,122 +15,20 @@
package cloudid

import (
"yunion.io/x/jsonutils"
"yunion.io/x/pkg/errors"

"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/cmd/climc/shell"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"
)

func init() {
type CloudpolicyListOptions struct {
options.BaseListOptions

CloudproviderId string `json:"cloudprovider_id"`
ClouduserId string `json:"clouduser_id"`
CloudgroupId string `json:"cloudgroup_id"`
PolicyType string `help:"Filter cloudpolicy by policy type" choices:"system|custom"`
}
R(&CloudpolicyListOptions{}, "cloud-policy-list", "List cloud policies", func(s *mcclient.ClientSession, opts *CloudpolicyListOptions) error {
params, err := options.ListStructToParams(opts)
if err != nil {
return err
}
result, err := modules.Cloudpolicies.List(s, params)
if err != nil {
return err
}
printList(result, modules.Cloudpolicies.GetColumns(s))
return nil
})

type CloudpolicyIdOptions struct {
ID string `help:"Cloudpolicy Id"`
}

R(&CloudpolicyIdOptions{}, "cloud-policy-show", "Show cloud policiy details", func(s *mcclient.ClientSession, opts *CloudpolicyIdOptions) error {
result, err := modules.Cloudpolicies.Get(s, opts.ID, nil)
if err != nil {
return err
}
printObject(result)
return nil
})

R(&CloudpolicyIdOptions{}, "cloud-policy-syncstatus", "Sync cloud policiy status", func(s *mcclient.ClientSession, opts *CloudpolicyIdOptions) error {
result, err := modules.Cloudpolicies.PerformAction(s, opts.ID, "syncstatus", nil)
if err != nil {
return err
}
printObject(result)
return nil
})

R(&CloudpolicyIdOptions{}, "cloud-policy-lock", "Lock cloud policiy", func(s *mcclient.ClientSession, opts *CloudpolicyIdOptions) error {
result, err := modules.Cloudpolicies.PerformAction(s, opts.ID, "lock", nil)
if err != nil {
return err
}
printObject(result)
return nil
})

R(&CloudpolicyIdOptions{}, "cloud-policy-unlock", "Unlock cloud policiy", func(s *mcclient.ClientSession, opts *CloudpolicyIdOptions) error {
result, err := modules.Cloudpolicies.PerformAction(s, opts.ID, "unlock", nil)
if err != nil {
return err
}
printObject(result)
return nil
})

type CloudpolicyGroupOptions struct {
ID string `help:"Cloudpolicy Id"`
CLOUDGROUP_ID string `help:"Cloudgroup Id" json:"cloudgroup_id"`
}

R(&CloudpolicyGroupOptions{}, "cloud-policy-assign-group", "Assign cloud policiy to group", func(s *mcclient.ClientSession, opts *CloudpolicyGroupOptions) error {
result, err := modules.Cloudpolicies.PerformAction(s, opts.ID, "assign-group", jsonutils.Marshal(opts))
if err != nil {
return err
}
printObject(result)
return nil
})

R(&CloudpolicyGroupOptions{}, "cloud-policy-revoke-group", "Revoke cloud policiy from group", func(s *mcclient.ClientSession, opts *CloudpolicyGroupOptions) error {
result, err := modules.Cloudpolicies.PerformAction(s, opts.ID, "revoke-group", jsonutils.Marshal(opts))
if err != nil {
return err
}
printObject(result)
return nil
})

type CloudpolicyUpdateOption struct {
ID string
Name string
Description string
PolicyDocument string
}

R(&CloudpolicyUpdateOption{}, "cloud-policy-update", "Revoke cloud policiy from group", func(s *mcclient.ClientSession, opts *CloudpolicyUpdateOption) error {
params := jsonutils.Marshal(opts).(*jsonutils.JSONDict)
if len(opts.PolicyDocument) > 0 {
document, err := jsonutils.Parse([]byte(opts.PolicyDocument))
if err != nil {
return errors.Wrapf(err, "invalid policy document")
}
params.Remove("policy_document")
params.Remove("id")
params.Add(document, "document")
}
result, err := modules.Cloudpolicies.Update(s, opts.ID, params)
if err != nil {
return err
}
printObject(result)
return nil
})
cmd := shell.NewResourceCmd(&modules.Cloudpolicies).WithKeyword("cloud-policy")
cmd.Create(&options.CloudpolicyListOptions{})
cmd.List(&options.CloudpolicyListOptions{})
cmd.Show(&options.CloudpolicyIdOptions{})
cmd.Update(&options.CloudpolicyUpdateOption{})
cmd.Perform("syncstauts", &options.CloudpolicyIdOptions{})
cmd.Perform("lock", &options.CloudpolicyIdOptions{})
cmd.Perform("unlock", &options.CloudpolicyIdOptions{})
cmd.Perform("assign-group", &options.CloudpolicyGroupOptions{})
cmd.Perform("revoke-group", &options.CloudpolicyGroupOptions{})
}

0 comments on commit 5b898bb

Please sign in to comment.