github.com/vmware/govmomi@v0.51.0/cli/vm/check/relocate.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 check
     6  
     7  import (
     8  	"context"
     9  	"flag"
    10  
    11  	"github.com/vmware/govmomi/cli"
    12  	"github.com/vmware/govmomi/vim25/types"
    13  )
    14  
    15  type relocate struct {
    16  	checkFlag
    17  }
    18  
    19  func init() {
    20  	cli.Register("vm.check.relocate", &relocate{}, true)
    21  }
    22  
    23  func (cmd *relocate) Description() string {
    24  	return `Check if VM can be relocated.
    25  
    26  Examples:
    27    govc vm.migrate -spec my-vm | govc vm.check.relocate -vm my-vm`
    28  }
    29  
    30  func (cmd *relocate) Run(ctx context.Context, f *flag.FlagSet) error {
    31  	vm, err := cmd.VirtualMachine()
    32  	if err != nil {
    33  		return err
    34  	}
    35  
    36  	if vm == nil {
    37  		return flag.ErrHelp
    38  	}
    39  
    40  	var spec types.VirtualMachineRelocateSpec
    41  	if err := cmd.Spec(&spec); err != nil {
    42  		return err
    43  	}
    44  
    45  	checker, err := cmd.provChecker()
    46  	if err != nil {
    47  		return err
    48  	}
    49  
    50  	res, err := checker.CheckRelocate(ctx, vm.Reference(), spec, cmd.testTypes...)
    51  	if err != nil {
    52  		return err
    53  	}
    54  
    55  	return cmd.result(ctx, res)
    56  }