github.com/vmware/govmomi@v0.51.0/cli/host/cert/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 cert 6 7 import ( 8 "context" 9 "flag" 10 "fmt" 11 12 "github.com/vmware/govmomi/cli" 13 "github.com/vmware/govmomi/cli/flags" 14 "github.com/vmware/govmomi/vim25/mo" 15 ) 16 17 type info struct { 18 *flags.HostSystemFlag 19 *flags.OutputFlag 20 21 show bool 22 } 23 24 func init() { 25 cli.Register("host.cert.info", &info{}) 26 } 27 28 func (cmd *info) Register(ctx context.Context, f *flag.FlagSet) { 29 cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) 30 cmd.HostSystemFlag.Register(ctx, f) 31 32 cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) 33 cmd.OutputFlag.Register(ctx, f) 34 35 f.BoolVar(&cmd.show, "show", false, "Show PEM encoded server certificate only") 36 } 37 38 func (cmd *info) Description() string { 39 return `Display SSL certificate info for HOST.` 40 } 41 42 func (cmd *info) Process(ctx context.Context) error { 43 if err := cmd.HostSystemFlag.Process(ctx); err != nil { 44 return err 45 } 46 if err := cmd.OutputFlag.Process(ctx); err != nil { 47 return err 48 } 49 return nil 50 } 51 52 func (cmd *info) Run(ctx context.Context, f *flag.FlagSet) error { 53 host, err := cmd.HostSystem() 54 if err != nil { 55 return err 56 } 57 58 if cmd.show { 59 var props mo.HostSystem 60 err = host.Properties(ctx, host.Reference(), []string{"config.certificate"}, &props) 61 if err != nil { 62 return err 63 } 64 _, err = fmt.Fprint(cmd.Out, string(props.Config.Certificate)) 65 return err 66 } 67 68 m, err := host.ConfigManager().CertificateManager(ctx) 69 if err != nil { 70 return err 71 } 72 73 info, err := m.CertificateInfo(ctx) 74 if err != nil { 75 return err 76 } 77 78 return cmd.WriteResult(info) 79 }