github.com/vmware/govmomi@v0.51.0/cli/namespace/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 namespace 6 7 import ( 8 "context" 9 "flag" 10 "fmt" 11 "io" 12 13 "github.com/vmware/govmomi/vapi/namespace" 14 15 "github.com/vmware/govmomi/cli" 16 "github.com/vmware/govmomi/cli/flags" 17 ) 18 19 type lsResult []namespace.NamespacesInstanceSummary 20 21 func (r lsResult) Write(w io.Writer) error { 22 for _, e := range r { 23 fmt.Fprintln(w, e.Namespace) 24 } 25 return nil 26 } 27 28 type ls struct { 29 *flags.ClientFlag 30 *flags.OutputFlag 31 } 32 33 func init() { 34 cli.Register("namespace.ls", &ls{}) 35 } 36 37 func (cmd *ls) Register(ctx context.Context, f *flag.FlagSet) { 38 cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) 39 cmd.ClientFlag.Register(ctx, f) 40 41 cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) 42 cmd.OutputFlag.Register(ctx, f) 43 } 44 45 func (cmd *ls) Process(ctx context.Context) error { 46 if err := cmd.ClientFlag.Process(ctx); err != nil { 47 return err 48 } 49 if err := cmd.OutputFlag.Process(ctx); err != nil { 50 return err 51 } 52 53 return nil 54 } 55 56 func (cmd *ls) Description() string { 57 return `Displays the list of vSphere Namespaces. 58 59 Examples: 60 govc namespace.ls` 61 } 62 63 func (cmd *ls) Run(ctx context.Context, f *flag.FlagSet) error { 64 rc, err := cmd.RestClient() 65 if err != nil { 66 return err 67 } 68 69 nm := namespace.NewManager(rc) 70 71 d, err := nm.ListNamespaces(ctx) 72 if err != nil { 73 return err 74 } 75 76 return cmd.WriteResult(lsResult(d)) 77 }