github.com/vmware/govmomi@v0.51.0/cli/host/service/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 service 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/vim25/types" 17 ) 18 19 type ls struct { 20 *flags.ClientFlag 21 *flags.OutputFlag 22 *flags.HostSystemFlag 23 } 24 25 func init() { 26 cli.Register("host.service.ls", &ls{}) 27 } 28 29 func (cmd *ls) Register(ctx context.Context, f *flag.FlagSet) { 30 cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) 31 cmd.ClientFlag.Register(ctx, f) 32 33 cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) 34 cmd.OutputFlag.Register(ctx, f) 35 36 cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) 37 cmd.HostSystemFlag.Register(ctx, f) 38 } 39 40 func (cmd *ls) Process(ctx context.Context) error { 41 if err := cmd.ClientFlag.Process(ctx); err != nil { 42 return err 43 } 44 if err := cmd.OutputFlag.Process(ctx); err != nil { 45 return err 46 } 47 if err := cmd.HostSystemFlag.Process(ctx); err != nil { 48 return err 49 } 50 return nil 51 } 52 53 func (cmd *ls) Description() string { 54 return `List HOST services.` 55 } 56 57 func Status(s types.HostService) string { 58 if s.Running { 59 return "Running" 60 } 61 return "Stopped" 62 } 63 64 func Policy(s types.HostService) string { 65 switch types.HostServicePolicy(s.Policy) { 66 case types.HostServicePolicyOff: 67 return "Disabled" 68 case types.HostServicePolicyOn: 69 return "Enabled" 70 case types.HostServicePolicyAutomatic: 71 return "Automatic" 72 default: 73 return s.Policy 74 } 75 } 76 77 func (cmd *ls) Run(ctx context.Context, f *flag.FlagSet) error { 78 host, err := cmd.HostSystem() 79 if err != nil { 80 return err 81 } 82 83 s, err := host.ConfigManager().ServiceSystem(ctx) 84 if err != nil { 85 return err 86 } 87 88 services, err := s.Service(ctx) 89 if err != nil { 90 return err 91 } 92 93 return cmd.WriteResult(optionResult(services)) 94 } 95 96 type optionResult []types.HostService 97 98 func (services optionResult) Write(w io.Writer) error { 99 tw := tabwriter.NewWriter(w, 2, 0, 2, ' ', 0) 100 101 fmt.Fprintf(tw, "%s\t%s\t%v\t%s\n", "Key", "Policy", "Status", "Label") 102 103 for _, s := range services { 104 fmt.Fprintf(tw, "%s\t%s\t%s\t%s\n", s.Key, s.Policy, Status(s), s.Label) 105 } 106 107 return tw.Flush() 108 }