github.com/vmware/govmomi@v0.51.0/cli/license/label.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 license
     6  
     7  import (
     8  	"context"
     9  	"flag"
    10  
    11  	"github.com/vmware/govmomi/cli"
    12  	"github.com/vmware/govmomi/cli/flags"
    13  	"github.com/vmware/govmomi/license"
    14  	"github.com/vmware/govmomi/vim25/methods"
    15  	"github.com/vmware/govmomi/vim25/types"
    16  )
    17  
    18  type label struct {
    19  	*flags.ClientFlag
    20  }
    21  
    22  func init() {
    23  	cli.Register("license.label.set", &label{})
    24  }
    25  
    26  func (cmd *label) Register(ctx context.Context, f *flag.FlagSet) {
    27  	cmd.ClientFlag, ctx = flags.NewClientFlag(ctx)
    28  	cmd.ClientFlag.Register(ctx, f)
    29  }
    30  
    31  func (cmd *label) Usage() string {
    32  	return "LICENSE KEY VAL"
    33  }
    34  
    35  func (cmd *label) Description() string {
    36  	return `Set license labels.
    37  
    38  Examples:
    39    govc license.label.set 00000-00000-00000-00000-00000 team cnx # add/set label
    40    govc license.label.set 00000-00000-00000-00000-00000 team ""  # remove label
    41    govc license.ls -json | jq '.[] | select(.labels[].key == "team") | .licenseKey'`
    42  }
    43  
    44  func (cmd *label) Run(ctx context.Context, f *flag.FlagSet) error {
    45  	client, err := cmd.Client()
    46  	if err != nil {
    47  		return err
    48  	}
    49  
    50  	m := license.NewManager(client)
    51  
    52  	if f.NArg() != 3 {
    53  		return flag.ErrHelp
    54  	}
    55  
    56  	req := types.UpdateLicenseLabel{
    57  		This:       m.Reference(),
    58  		LicenseKey: f.Arg(0),
    59  		LabelKey:   f.Arg(1),
    60  		LabelValue: f.Arg(2),
    61  	}
    62  
    63  	_, err = methods.UpdateLicenseLabel(ctx, m.Client(), &req)
    64  	return err
    65  }