github.com/vmware/govmomi@v0.51.0/cli/vm/network/add.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 network
     6  
     7  import (
     8  	"context"
     9  	"errors"
    10  	"flag"
    11  	"fmt"
    12  
    13  	"github.com/vmware/govmomi/cli"
    14  	"github.com/vmware/govmomi/cli/flags"
    15  )
    16  
    17  type add struct {
    18  	*flags.VirtualMachineFlag
    19  	*flags.NetworkFlag
    20  }
    21  
    22  func init() {
    23  	cli.Register("vm.network.add", &add{})
    24  }
    25  
    26  func (cmd *add) Register(ctx context.Context, f *flag.FlagSet) {
    27  	cmd.VirtualMachineFlag, ctx = flags.NewVirtualMachineFlag(ctx)
    28  	cmd.VirtualMachineFlag.Register(ctx, f)
    29  	cmd.NetworkFlag, ctx = flags.NewNetworkFlag(ctx)
    30  	cmd.NetworkFlag.Register(ctx, f)
    31  }
    32  
    33  func (cmd *add) Description() string {
    34  	return `Add network adapter to VM.
    35  
    36  Examples:
    37    govc vm.network.add -vm $vm -net "VM Network" -net.adapter e1000e
    38    govc vm.network.add -vm $vm -net SwitchName/PortgroupName
    39    govc device.info -vm $vm ethernet-*`
    40  }
    41  
    42  func (cmd *add) Process(ctx context.Context) error {
    43  	if err := cmd.VirtualMachineFlag.Process(ctx); err != nil {
    44  		return err
    45  	}
    46  	if err := cmd.NetworkFlag.Process(ctx); err != nil {
    47  		return err
    48  	}
    49  	return nil
    50  }
    51  
    52  func (cmd *add) Run(ctx context.Context, f *flag.FlagSet) error {
    53  	vm, err := cmd.VirtualMachineFlag.VirtualMachine()
    54  	if err != nil {
    55  		return err
    56  	}
    57  
    58  	if vm == nil {
    59  		return errors.New("please specify a vm")
    60  	}
    61  
    62  	// Set network if specified as extra argument.
    63  	if f.NArg() > 0 {
    64  		err = cmd.NetworkFlag.Set(f.Arg(0))
    65  		if err != nil {
    66  			return fmt.Errorf("couldn't set specified network %v",
    67  				err)
    68  		}
    69  	}
    70  
    71  	net, err := cmd.NetworkFlag.Device()
    72  	if err != nil {
    73  		return err
    74  	}
    75  
    76  	return vm.AddDevice(ctx, net)
    77  }