github.com/vmware/govmomi@v0.51.0/cli/library/trust/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 trust
     6  
     7  import (
     8  	"context"
     9  	"flag"
    10  	"io"
    11  
    12  	"github.com/vmware/govmomi/cli"
    13  	"github.com/vmware/govmomi/cli/flags"
    14  	"github.com/vmware/govmomi/object"
    15  	"github.com/vmware/govmomi/vapi/library"
    16  )
    17  
    18  type info struct {
    19  	*flags.ClientFlag
    20  	*flags.OutputFlag
    21  }
    22  
    23  func init() {
    24  	cli.Register("library.trust.info", &info{})
    25  }
    26  
    27  func (cmd *info) Register(ctx context.Context, f *flag.FlagSet) {
    28  	cmd.ClientFlag, ctx = flags.NewClientFlag(ctx)
    29  	cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx)
    30  	cmd.ClientFlag.Register(ctx, f)
    31  	cmd.OutputFlag.Register(ctx, f)
    32  }
    33  
    34  func (cmd *info) Process(ctx context.Context) error {
    35  	if err := cmd.ClientFlag.Process(ctx); err != nil {
    36  		return err
    37  	}
    38  	return nil
    39  }
    40  
    41  func (cmd *info) Usage() string {
    42  	return "ID"
    43  }
    44  
    45  func (cmd *info) Description() string {
    46  	return `Display trusted certificate info.
    47  
    48  Examples:
    49    govc library.trust.info vmware_signed`
    50  }
    51  
    52  type infoResultsWriter struct {
    53  	TrustedCertificateInfo *library.TrustedCertificate `json:"info,omitempty"`
    54  }
    55  
    56  func (r infoResultsWriter) Write(w io.Writer) error {
    57  	var info object.HostCertificateInfo
    58  	_, err := info.FromPEM([]byte(r.TrustedCertificateInfo.Text))
    59  	if err != nil {
    60  		return err
    61  	}
    62  	return info.Write(w)
    63  }
    64  
    65  func (r infoResultsWriter) Dump() any {
    66  	return r.TrustedCertificateInfo
    67  }
    68  
    69  func (cmd *info) Run(ctx context.Context, f *flag.FlagSet) error {
    70  	if f.NArg() != 1 {
    71  		return flag.ErrHelp
    72  	}
    73  
    74  	c, err := cmd.RestClient()
    75  	if err != nil {
    76  		return err
    77  	}
    78  
    79  	cert, err := library.NewManager(c).GetTrustedCertificate(ctx, f.Arg(0))
    80  	if err != nil {
    81  		return err
    82  	}
    83  	return cmd.WriteResult(&infoResultsWriter{cert})
    84  }