github.com/vmware/govmomi@v0.51.0/cli/cluster/draft/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 draft 6 7 import ( 8 "context" 9 "flag" 10 "io" 11 "strings" 12 13 "github.com/vmware/govmomi/cli" 14 "github.com/vmware/govmomi/cli/flags" 15 "github.com/vmware/govmomi/vapi/esx/settings/clusters" 16 ) 17 18 type lsResult map[string]clusters.SettingsClustersSoftwareDraftsMetadata 19 20 func (r lsResult) Write(w io.Writer) error { 21 return nil 22 } 23 24 type ls struct { 25 *flags.ClientFlag 26 *flags.OutputFlag 27 28 clusterId string 29 owners string 30 } 31 32 func init() { 33 cli.Register("cluster.draft.ls", &ls{}) 34 } 35 36 func (cmd *ls) Register(ctx context.Context, f *flag.FlagSet) { 37 cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) 38 cmd.ClientFlag.Register(ctx, f) 39 40 cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) 41 42 f.StringVar(&cmd.clusterId, "cluster-id", "", "The identifier of the cluster.") 43 f.StringVar(&cmd.owners, "owners", "", "A comma-separated list of owners to filter by.") 44 } 45 46 func (cmd *ls) Process(ctx context.Context) error { 47 if err := cmd.ClientFlag.Process(ctx); err != nil { 48 return err 49 } 50 if err := cmd.OutputFlag.Process(ctx); err != nil { 51 return err 52 } 53 54 return nil 55 } 56 57 func (cmd *ls) Usage() string { 58 return "CLUSTER" 59 } 60 61 func (cmd *ls) Description() string { 62 return `Displays the list of software drafts. 63 64 Examples: 65 govc cluster.draft.ls -cluster-id=domain-c21 66 govc cluster.draft.ls -cluster-id=domain-c21 -owners=stoyan1,stoyan2` 67 } 68 69 func (cmd *ls) Run(ctx context.Context, f *flag.FlagSet) error { 70 rc, err := cmd.RestClient() 71 72 if err != nil { 73 return err 74 } 75 76 dm := clusters.NewManager(rc) 77 78 var owners *[]string 79 if cmd.owners != "" { 80 o := strings.Split(cmd.owners, ",") 81 owners = &o 82 } 83 84 if d, err := dm.ListSoftwareDrafts(cmd.clusterId, owners); err != nil { 85 return err 86 } else { 87 if !cmd.All() { 88 cmd.JSON = true 89 } 90 return cmd.WriteResult(lsResult(d)) 91 } 92 }