github.com/vmware/govmomi@v0.51.0/cli/device/cdrom/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 cdrom 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 controller string 20 } 21 22 func init() { 23 cli.Register("device.cdrom.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 30 f.StringVar(&cmd.controller, "controller", "", "IDE controller name") 31 } 32 33 func (cmd *add) Description() string { 34 return `Add CD-ROM device to VM. 35 36 Examples: 37 govc device.cdrom.add -vm $vm 38 govc device.ls -vm $vm | grep ide- 39 govc device.cdrom.add -vm $vm -controller ide-200 40 govc device.info cdrom-*` 41 } 42 43 func (cmd *add) Process(ctx context.Context) error { 44 if err := cmd.VirtualMachineFlag.Process(ctx); err != nil { 45 return err 46 } 47 return nil 48 } 49 50 func (cmd *add) Run(ctx context.Context, f *flag.FlagSet) error { 51 vm, err := cmd.VirtualMachine() 52 if err != nil { 53 return err 54 } 55 56 if vm == nil { 57 return flag.ErrHelp 58 } 59 60 devices, err := vm.Device(ctx) 61 if err != nil { 62 return err 63 } 64 65 c, err := devices.FindIDEController(cmd.controller) 66 if err != nil { 67 return err 68 } 69 70 d, err := devices.CreateCdrom(c) 71 if err != nil { 72 return err 73 } 74 75 err = vm.AddDevice(ctx, d) 76 if err != nil { 77 return err 78 } 79 80 // output name of device we just created 81 devices, err = vm.Device(ctx) 82 if err != nil { 83 return err 84 } 85 86 devices = devices.SelectByType(d) 87 88 name := devices.Name(devices[len(devices)-1]) 89 90 fmt.Println(name) 91 92 return nil 93 }