github.com/vmware/govmomi@v0.51.0/cli/namespace/vmclass/info.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 vmclass 6 7 import ( 8 "context" 9 "flag" 10 "fmt" 11 "io" 12 "text/tabwriter" 13 14 "github.com/vmware/govmomi/units" 15 "github.com/vmware/govmomi/vapi/namespace" 16 17 "github.com/vmware/govmomi/cli" 18 "github.com/vmware/govmomi/cli/flags" 19 ) 20 21 type infoResult namespace.VirtualMachineClassInfo 22 23 func (r infoResult) Write(w io.Writer) error { 24 tw := tabwriter.NewWriter(w, 2, 0, 2, ' ', 0) 25 26 fmt.Fprintf(tw, "ID:\t%s\n", r.Id) 27 fmt.Fprintf(tw, "CPUs:\t%d\n", r.CpuCount) 28 fmt.Fprintf(tw, "Memory:\t%s\n", units.ByteSize(r.MemoryMb*1024*1024)) 29 30 return tw.Flush() 31 } 32 33 type info struct { 34 *flags.ClientFlag 35 *flags.OutputFlag 36 } 37 38 func init() { 39 cli.Register("namespace.vmclass.info", &info{}) 40 } 41 42 func (cmd *info) Register(ctx context.Context, f *flag.FlagSet) { 43 cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) 44 cmd.ClientFlag.Register(ctx, f) 45 46 cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) 47 cmd.OutputFlag.Register(ctx, f) 48 } 49 50 func (cmd *info) Process(ctx context.Context) error { 51 if err := cmd.ClientFlag.Process(ctx); err != nil { 52 return err 53 } 54 if err := cmd.OutputFlag.Process(ctx); err != nil { 55 return err 56 } 57 58 return nil 59 } 60 61 func (cmd *info) Usage() string { 62 return "NAME" 63 } 64 65 func (cmd *info) Description() string { 66 return `Displays the details of a virtual machine class. 67 68 Examples: 69 govc namespace.vmclass.info test-class` 70 } 71 72 func (cmd *info) Run(ctx context.Context, f *flag.FlagSet) error { 73 if f.NArg() != 1 { 74 return flag.ErrHelp 75 } 76 77 rc, err := cmd.RestClient() 78 if err != nil { 79 return err 80 } 81 82 nm := namespace.NewManager(rc) 83 84 d, err := nm.GetVmClass(ctx, f.Arg(0)) 85 if err != nil { 86 return err 87 } 88 89 return cmd.WriteResult(infoResult(d)) 90 }