Optionally use SATA controller for CD-ROM devices (#174)

This commit is contained in:
Michael Kuzmin
2018-10-30 03:18:57 +03:00
committed by GitHub
parent 75cabff278
commit ebcd6174d4
7 changed files with 92 additions and 21 deletions
+17 -10
View File
@@ -115,10 +115,6 @@ func (d *Driver) CreateVM(config *CreateConfig) (*VirtualMachine, error) {
devices := object.VirtualDeviceList{}
devices, err = addIDE(devices)
if err != nil {
return nil, err
}
devices, err = addDisk(d, devices, config)
if err != nil {
return nil, err
@@ -477,23 +473,34 @@ func addIDE(devices object.VirtualDeviceList) (object.VirtualDeviceList, error)
return devices, nil
}
func (vm *VirtualMachine) AddCdrom(isoPath string) error {
func (vm *VirtualMachine) AddCdrom(controllerType string, isoPath string) error {
devices, err := vm.vm.Device(vm.driver.ctx)
if err != nil {
return err
}
sata, err := vm.FindSATAController()
if err != nil {
return err
var controller *types.VirtualController
if controllerType == "sata" {
c, err := vm.FindSATAController()
if err != nil {
return err
}
controller = c.GetVirtualController()
} else {
c, err := devices.FindIDEController("")
if err != nil {
return err
}
controller = c.GetVirtualController()
}
cdrom, err := vm.CreateCdrom(sata)
cdrom, err := vm.CreateCdrom(controller)
if err != nil {
return err
}
if isoPath != "" {
cdrom = devices.InsertIso(cdrom, isoPath)
devices.InsertIso(cdrom, isoPath)
}
return vm.addDevice(cdrom)
+1 -1
View File
@@ -24,7 +24,7 @@ func (vm *VirtualMachine) FindSATAController() (*types.VirtualAHCIController, er
return c.(*types.VirtualAHCIController), nil
}
func (vm *VirtualMachine) CreateCdrom(c *types.VirtualAHCIController) (*types.VirtualCdrom, error) {
func (vm *VirtualMachine) CreateCdrom(c *types.VirtualController) (*types.VirtualCdrom, error) {
l, err := vm.Devices()
if err != nil {
return nil, err