github.com/vmware/govmomi@v0.51.0/cli/device/cdrom/insert.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 11 "github.com/vmware/govmomi/cli" 12 "github.com/vmware/govmomi/cli/flags" 13 ) 14 15 type insert struct { 16 *flags.DatastoreFlag 17 *flags.VirtualMachineFlag 18 19 device string 20 } 21 22 func init() { 23 cli.Register("device.cdrom.insert", &insert{}) 24 } 25 26 func (cmd *insert) Register(ctx context.Context, f *flag.FlagSet) { 27 cmd.DatastoreFlag, ctx = flags.NewDatastoreFlag(ctx) 28 cmd.DatastoreFlag.Register(ctx, f) 29 cmd.VirtualMachineFlag, ctx = flags.NewVirtualMachineFlag(ctx) 30 cmd.VirtualMachineFlag.Register(ctx, f) 31 32 f.StringVar(&cmd.device, "device", "", "CD-ROM device name") 33 } 34 35 func (cmd *insert) Process(ctx context.Context) error { 36 if err := cmd.DatastoreFlag.Process(ctx); err != nil { 37 return err 38 } 39 if err := cmd.VirtualMachineFlag.Process(ctx); err != nil { 40 return err 41 } 42 return nil 43 } 44 45 func (cmd *insert) Usage() string { 46 return "ISO" 47 } 48 49 func (cmd *insert) Description() string { 50 return `Insert media on datastore into CD-ROM device. 51 52 If device is not specified, the first CD-ROM device is used. 53 54 Examples: 55 govc device.cdrom.insert -vm vm-1 -device cdrom-3000 images/boot.iso 56 govc device.cdrom.insert -vm vm-1 library:/boot/linux/ubuntu.iso # Content Library ISO` 57 } 58 59 func (cmd *insert) Run(ctx context.Context, f *flag.FlagSet) error { 60 vm, err := cmd.VirtualMachine() 61 if err != nil { 62 return err 63 } 64 65 if vm == nil || f.NArg() != 1 { 66 return flag.ErrHelp 67 } 68 69 devices, err := vm.Device(ctx) 70 if err != nil { 71 return err 72 } 73 74 c, err := devices.FindCdrom(cmd.device) 75 if err != nil { 76 return err 77 } 78 79 iso, err := cmd.FileBacking(ctx, f.Arg(0), false) 80 if err != nil { 81 return err 82 } 83 84 return vm.EditDevice(ctx, devices.InsertIso(c, iso)) 85 }