github.com/vmware/govmomi@v0.51.0/cli/role/ls.go (about) 1 // © Broadcom. All Rights Reserved. 2 // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. 3 // SPDX-License-Identifier: Apache-2.0 4 5 package role 6 7 import ( 8 "context" 9 "flag" 10 "fmt" 11 "io" 12 "text/tabwriter" 13 14 "github.com/vmware/govmomi/cli" 15 "github.com/vmware/govmomi/cli/permissions" 16 "github.com/vmware/govmomi/object" 17 "github.com/vmware/govmomi/vim25/types" 18 ) 19 20 type ls struct { 21 *permissions.PermissionFlag 22 } 23 24 func init() { 25 cli.Register("role.ls", &ls{}) 26 } 27 28 func (cmd *ls) Register(ctx context.Context, f *flag.FlagSet) { 29 cmd.PermissionFlag, ctx = permissions.NewPermissionFlag(ctx) 30 cmd.PermissionFlag.Register(ctx, f) 31 } 32 33 func (cmd *ls) Process(ctx context.Context) error { 34 if err := cmd.PermissionFlag.Process(ctx); err != nil { 35 return err 36 } 37 return nil 38 } 39 40 func (cmd *ls) Usage() string { 41 return "[NAME]" 42 } 43 44 func (cmd *ls) Description() string { 45 return `List authorization roles. 46 47 If NAME is provided, list privileges for the role. 48 49 Examples: 50 govc role.ls 51 govc role.ls Admin` 52 } 53 54 type lsRoleList object.AuthorizationRoleList 55 56 func (rl lsRoleList) Write(w io.Writer) error { 57 tw := tabwriter.NewWriter(w, 2, 0, 2, ' ', 0) 58 59 for _, role := range rl { 60 fmt.Fprintf(tw, "%s\t%s\n", role.Name, role.Info.GetDescription().Summary) 61 } 62 63 return tw.Flush() 64 } 65 66 type lsRole types.AuthorizationRole 67 68 func (r lsRole) Write(w io.Writer) error { 69 for _, p := range r.Privilege { 70 fmt.Println(p) 71 } 72 return nil 73 } 74 75 func (cmd *ls) Run(ctx context.Context, f *flag.FlagSet) error { 76 if f.NArg() > 1 { 77 return flag.ErrHelp 78 } 79 80 _, err := cmd.Manager(ctx) 81 if err != nil { 82 return err 83 } 84 85 if f.NArg() == 1 { 86 role, err := cmd.Role(f.Arg(0)) 87 if err != nil { 88 return err 89 } 90 91 return cmd.WriteResult(lsRole(*role)) 92 } 93 94 return cmd.WriteResult(lsRoleList(cmd.Roles)) 95 }