github.com/vmware/govmomi@v0.51.0/cli/vm/unregister.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 vm
     6  
     7  import (
     8  	"context"
     9  	"flag"
    10  
    11  	"github.com/vmware/govmomi/cli"
    12  	"github.com/vmware/govmomi/cli/flags"
    13  )
    14  
    15  type unregister struct {
    16  	*flags.ClientFlag
    17  	*flags.SearchFlag
    18  }
    19  
    20  func init() {
    21  	cli.Register("vm.unregister", &unregister{})
    22  }
    23  
    24  func (cmd *unregister) Register(ctx context.Context, f *flag.FlagSet) {
    25  	cmd.ClientFlag, ctx = flags.NewClientFlag(ctx)
    26  	cmd.ClientFlag.Register(ctx, f)
    27  
    28  	cmd.SearchFlag, ctx = flags.NewSearchFlag(ctx, flags.SearchVirtualMachines)
    29  	cmd.SearchFlag.Register(ctx, f)
    30  }
    31  
    32  func (cmd *unregister) Process(ctx context.Context) error {
    33  	if err := cmd.ClientFlag.Process(ctx); err != nil {
    34  		return err
    35  	}
    36  	if err := cmd.SearchFlag.Process(ctx); err != nil {
    37  		return err
    38  	}
    39  	return nil
    40  }
    41  
    42  func (cmd *unregister) Usage() string {
    43  	return "VM..."
    44  }
    45  
    46  func (cmd *unregister) Description() string {
    47  	return `Remove VM from inventory without removing any of the VM files on disk.`
    48  }
    49  
    50  func (cmd *unregister) Run(ctx context.Context, f *flag.FlagSet) error {
    51  	vms, err := cmd.VirtualMachines(f.Args())
    52  	if err != nil {
    53  		return err
    54  	}
    55  
    56  	for _, vm := range vms {
    57  		err := vm.Unregister(ctx)
    58  		if err != nil {
    59  			return err
    60  		}
    61  	}
    62  
    63  	return nil
    64  }