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 }