VMs: allow SCSI bus type selection for disks and cdroms

This commit is contained in:
Eric Schultz
2018-04-06 07:44:14 -05:00
parent 8a14a418a8
commit 51d237a710
2 changed files with 24 additions and 4 deletions
+22 -4
View File
@@ -426,6 +426,8 @@
}
$arrUsedBootOrders = [];
$needSCSIController = false;
//media settings
$bus = "ide";
if ($machine_type == 'q35'){
@@ -436,10 +438,14 @@
if (!empty($media['cdrom'])) {
unset($arrAvailableDevs['hda']);
$arrUsedBootOrders[] = 2;
$media['cdrombus'] = $media['cdrombus'] ?: $bus;
if ($media['cdrombus'] == 'scsi') {
$needSCSIController = true;
}
$mediastr = "<disk type='file' device='cdrom'>
<driver name='qemu'/>
<source file='" . htmlspecialchars($media['cdrom'], ENT_QUOTES | ENT_XML1) . "'/>
<target dev='hda' bus='" . (!empty($media['cdrombus']) ? $media['cdrombus'] : $bus) . "'/>
<target dev='hda' bus='" . $media['cdrombus'] . "'/>
<readonly/>
<boot order='2'/>
</disk>";
@@ -448,10 +454,14 @@
$driverstr = '';
if (!empty($media['drivers']) && $os_type == "windows") {
unset($arrAvailableDevs['hdb']);
$media['driversbus'] = $media['driversbus'] ?: $bus;
if ($media['driversbus'] == 'scsi') {
$needSCSIController = true;
}
$driverstr = "<disk type='file' device='cdrom'>
<driver name='qemu'/>
<source file='" . htmlspecialchars($media['drivers'], ENT_QUOTES | ENT_XML1) . "'/>
<target dev='hdb' bus='" . (!empty($media['driversbus']) ? $media['driversbus'] : $bus) . "'/>
<target dev='hdb' bus='" . $media['driversbus'] . "'/>
<readonly/>
</disk>";
}
@@ -534,8 +544,10 @@
$disk = $arrReturn;
}
if (empty($disk['bus'])) {
$disk['bus'] = 'virtio';
$disk['bus'] = $disk['bus'] ?: 'virtio';
if ($disk['bus'] == 'scsi') {
$needSCSIController = true;
}
if (empty($disk['dev']) || !in_array($disk['dev'], $arrAvailableDevs)) {
@@ -571,6 +583,11 @@
}
}
$scsicontroller = '';
if ($needSCSIController) {
$scsicontroller = "<controller type='scsi' index='0' model='virtio-scsi'/>";
}
$netstr = '';
if (!empty($nics)) {
foreach ($nics as $i => $nic) {
@@ -760,6 +777,7 @@
$netstr
$vnc
<console type='pty'/>
$scsicontroller
$pcidevs
$usbstr
<channel type='unix'>
@@ -835,6 +835,7 @@
function getValidDiskBuses() {
$arrValidDiskBuses = [
'virtio' => 'VirtIO',
'scsi' => 'SCSI',
'sata' => 'SATA',
'ide' => 'IDE',
'usb' => 'USB'
@@ -846,6 +847,7 @@
function getValidCdromBuses() {
$arrValidCdromBuses = [
'scsi' => 'SCSI',
'sata' => 'SATA',
'ide' => 'IDE',
'usb' => 'USB'