github.com/vmware/govmomi@v0.51.0/cli/library/subscriber/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 subscriber 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/flags" 16 "github.com/vmware/govmomi/vapi/library" 17 ) 18 19 type ls struct { 20 *flags.ClientFlag 21 *flags.OutputFlag 22 } 23 24 func init() { 25 cli.Register("library.subscriber.ls", &ls{}) 26 } 27 28 func (cmd *ls) Register(ctx context.Context, f *flag.FlagSet) { 29 cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) 30 cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) 31 cmd.ClientFlag.Register(ctx, f) 32 cmd.OutputFlag.Register(ctx, f) 33 } 34 35 func (cmd *ls) Process(ctx context.Context) error { 36 if err := cmd.ClientFlag.Process(ctx); err != nil { 37 return err 38 } 39 return cmd.OutputFlag.Process(ctx) 40 } 41 42 func (cmd *ls) Description() string { 43 return `List library subscriptions. 44 45 Examples: 46 govc library.subscriber.ls library-name` 47 } 48 49 type lsResultsWriter []library.SubscriberSummary 50 51 func (r lsResultsWriter) Write(w io.Writer) error { 52 tw := tabwriter.NewWriter(w, 2, 0, 2, ' ', 0) 53 54 _, _ = fmt.Fprintf(tw, "%s\t%s\t%s\t%s\n", "Subscription ID", "Library Name", "Library ID", "vCenter") 55 56 for _, i := range r { 57 _, _ = fmt.Fprintf(tw, "%s\t%s\t%s\t%s\n", i.SubscriptionID, i.LibraryName, i.LibraryID, i.LibraryVcenterHostname) 58 } 59 60 return tw.Flush() 61 } 62 63 func (cmd *ls) Run(ctx context.Context, f *flag.FlagSet) error { 64 c, err := cmd.RestClient() 65 if err != nil { 66 return err 67 } 68 69 lib, err := flags.ContentLibrary(ctx, c, f.Arg(0)) 70 if err != nil { 71 return err 72 } 73 m := library.NewManager(c) 74 75 s, err := m.ListSubscribers(ctx, lib) 76 if err != nil { 77 return err 78 } 79 80 return cmd.WriteResult(lsResultsWriter(s)) 81 }