github.com/vmware/govmomi@v0.51.0/cli/device/serial/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 serial 6 7 import ( 8 "context" 9 "flag" 10 "fmt" 11 12 "github.com/vmware/govmomi/cli" 13 "github.com/vmware/govmomi/cli/flags" 14 ) 15 16 type add struct { 17 *flags.VirtualMachineFlag 18 } 19 20 func init() { 21 cli.Register("device.serial.add", &add{}) 22 } 23 24 func (cmd *add) Register(ctx context.Context, f *flag.FlagSet) { 25 cmd.VirtualMachineFlag, ctx = flags.NewVirtualMachineFlag(ctx) 26 cmd.VirtualMachineFlag.Register(ctx, f) 27 } 28 29 func (cmd *add) Description() string { 30 return `Add serial port to VM. 31 32 Examples: 33 govc device.serial.add -vm $vm 34 govc device.info -vm $vm serialport-*` 35 } 36 37 func (cmd *add) Process(ctx context.Context) error { 38 if err := cmd.VirtualMachineFlag.Process(ctx); err != nil { 39 return err 40 } 41 return nil 42 } 43 44 func (cmd *add) Run(ctx context.Context, f *flag.FlagSet) error { 45 vm, err := cmd.VirtualMachine() 46 if err != nil { 47 return err 48 } 49 50 if vm == nil { 51 return flag.ErrHelp 52 } 53 54 devices, err := vm.Device(ctx) 55 if err != nil { 56 return err 57 } 58 59 d, err := devices.CreateSerialPort() 60 if err != nil { 61 return err 62 } 63 64 err = vm.AddDevice(ctx, d) 65 if err != nil { 66 return err 67 } 68 69 // output name of device we just created 70 devices, err = vm.Device(ctx) 71 if err != nil { 72 return err 73 } 74 75 devices = devices.SelectByType(d) 76 77 name := devices.Name(devices[len(devices)-1]) 78 79 fmt.Println(name) 80 81 return nil 82 }