github.com/vmware/govmomi@v0.51.0/cli/vm/dataset/entry/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 entry 6 7 import ( 8 "context" 9 "flag" 10 "fmt" 11 "io" 12 13 "github.com/vmware/govmomi/cli" 14 "github.com/vmware/govmomi/cli/flags" 15 govc "github.com/vmware/govmomi/cli/vm/dataset" 16 "github.com/vmware/govmomi/vapi/vm/dataset" 17 ) 18 19 type ls struct { 20 *flags.VirtualMachineFlag 21 *flags.OutputFlag 22 dataSet string 23 } 24 25 func init() { 26 cli.Register("vm.dataset.entry.ls", &ls{}) 27 } 28 29 func (cmd *ls) Register(ctx context.Context, f *flag.FlagSet) { 30 cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) 31 cmd.OutputFlag.Register(ctx, f) 32 cmd.VirtualMachineFlag, ctx = flags.NewVirtualMachineFlag(ctx) 33 cmd.VirtualMachineFlag.Register(ctx, f) 34 f.StringVar(&cmd.dataSet, "dataset", "", "Data set name or ID") 35 } 36 37 func (cmd *ls) Process(ctx context.Context) error { 38 if err := cmd.VirtualMachineFlag.Process(ctx); err != nil { 39 return err 40 } 41 return cmd.OutputFlag.Process(ctx) 42 } 43 44 func (cmd *ls) Description() string { 45 return `List the keys of the entries in a data set. 46 47 Examples: 48 govc vm.dataset.entry.ls -vm $vm -dataset com.example.project2` 49 } 50 51 type lsResult []string 52 53 func (r lsResult) Write(w io.Writer) error { 54 for _, key := range r { 55 fmt.Fprintln(w, key) 56 } 57 return nil 58 } 59 60 func (cmd *ls) Run(ctx context.Context, f *flag.FlagSet) error { 61 62 vm, err := cmd.VirtualMachineFlag.VirtualMachine() 63 if err != nil { 64 return err 65 } 66 if vm == nil { 67 return flag.ErrHelp 68 } 69 vmId := vm.Reference().Value 70 71 if cmd.dataSet == "" { 72 return flag.ErrHelp 73 } 74 75 c, err := cmd.RestClient() 76 if err != nil { 77 return err 78 } 79 mgr := dataset.NewManager(c) 80 dataSetId, err := govc.FindDataSetId(ctx, mgr, vmId, cmd.dataSet) 81 if err != nil { 82 return err 83 } 84 l, err := mgr.ListEntries(ctx, vmId, dataSetId) 85 if err != nil { 86 return err 87 } 88 return cmd.WriteResult(lsResult(l)) 89 }