github.com/vmware/govmomi@v0.51.0/cli/kms/setdefault.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 kms
     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/crypto"
    14  	"github.com/vmware/govmomi/vim25/types"
    15  )
    16  
    17  type setdefault struct {
    18  	*flags.DatacenterFlag
    19  
    20  	entity string
    21  }
    22  
    23  func init() {
    24  	cli.Register("kms.default", &setdefault{})
    25  }
    26  
    27  func (cmd *setdefault) Register(ctx context.Context, f *flag.FlagSet) {
    28  	cmd.DatacenterFlag, ctx = flags.NewDatacenterFlag(ctx)
    29  	cmd.DatacenterFlag.Register(ctx, f)
    30  
    31  	f.StringVar(&cmd.entity, "e", "", "Set entity default KMS cluster (cluster or host folder)")
    32  }
    33  
    34  func (cmd *setdefault) Usage() string {
    35  	return "NAME"
    36  }
    37  
    38  func (cmd *setdefault) Description() string {
    39  	return `Set default KMS cluster.
    40  
    41  Examples:
    42    govc kms.default my-kp
    43    govc kms.default - # clear default
    44    govc kms.default -e /dc/host/cluster my-kp
    45    govc kms.default -e /dc/host/cluster my-kp - # clear default`
    46  }
    47  
    48  func (cmd *setdefault) Run(ctx context.Context, f *flag.FlagSet) error {
    49  	id := f.Arg(0)
    50  	if id == "" {
    51  		return flag.ErrHelp
    52  	}
    53  
    54  	if id == "-" {
    55  		id = "" // clear default
    56  	}
    57  
    58  	c, err := cmd.Client()
    59  	if err != nil {
    60  		return err
    61  	}
    62  
    63  	m, err := crypto.GetManagerKmip(c)
    64  	if err != nil {
    65  		return err
    66  	}
    67  
    68  	var entity *types.ManagedObjectReference
    69  
    70  	if cmd.entity != "" {
    71  		obj, err := cmd.ManagedObject(ctx, cmd.entity)
    72  		if err != nil {
    73  			return err
    74  		}
    75  
    76  		entity = types.NewReference(obj.Reference())
    77  	}
    78  
    79  	return m.SetDefaultKmsClusterId(ctx, id, entity)
    80  }