github.com/vmware/govmomi@v0.51.0/cli/permissions/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 permissions 6 7 import ( 8 "context" 9 "flag" 10 11 "github.com/vmware/govmomi/cli" 12 ) 13 14 type ls struct { 15 *PermissionFlag 16 17 inherited bool 18 } 19 20 func init() { 21 cli.Register("permissions.ls", &ls{}) 22 } 23 24 func (cmd *ls) Register(ctx context.Context, f *flag.FlagSet) { 25 cmd.PermissionFlag, ctx = NewPermissionFlag(ctx) 26 cmd.PermissionFlag.Register(ctx, f) 27 28 f.BoolVar(&cmd.inherited, "a", true, "Include inherited permissions defined by parent entities") 29 } 30 31 func (cmd *ls) Process(ctx context.Context) error { 32 if err := cmd.PermissionFlag.Process(ctx); err != nil { 33 return err 34 } 35 return nil 36 } 37 38 func (cmd *ls) Usage() string { 39 return "[PATH]..." 40 } 41 42 func (cmd *ls) Description() string { 43 return `List the permissions defined on or effective on managed entities. 44 45 Examples: 46 govc permissions.ls 47 govc permissions.ls /dc1/host/cluster1` 48 } 49 50 func (cmd *ls) Run(ctx context.Context, f *flag.FlagSet) error { 51 refs, err := cmd.ManagedObjects(ctx, f.Args()) 52 if err != nil { 53 return err 54 } 55 56 m, err := cmd.Manager(ctx) 57 if err != nil { 58 return err 59 } 60 61 for _, ref := range refs { 62 perms, err := m.RetrieveEntityPermissions(ctx, ref, cmd.inherited) 63 if err != nil { 64 return err 65 } 66 67 cmd.List.Add(perms) 68 } 69 70 return cmd.WriteResult(&cmd.List) 71 }