Merge pull request #1594 from SimonFair/SSD-Checkbox-and-Customer-CPUs

Add SSD flag for vdisks.
This commit is contained in:
tom mortensen
2024-01-31 12:49:29 -08:00
committed by GitHub
3 changed files with 51 additions and 10 deletions

View File

@@ -261,6 +261,9 @@
if (!empty($disk['boot'])) {
$arrReturn['boot'] = $disk['boot'];
}
if (!empty($disk['rotation'])) {
$arrReturn['rotation'] = $disk['rotation'];
}
if (!empty($disk['serial'])) {
$arrReturn['serial'] = $disk['serial'];
}
@@ -687,13 +690,18 @@
if ($disk["serial"] != "") $serial = "<serial>".$disk["serial"]."</serial>" ; else $serial = "" ;
$rotation_rate = "";
if ($disk['bus'] == "scsi" || $disk['bus'] == "sata" || $disk['bus'] == "ide" ) {
if ($disk['rotation']) $rotation_rate = " rotation_rate='1' ";
}
if ($strDevType == 'file' || $strDevType == 'block') {
$strSourceType = ($strDevType == 'file' ? 'file' : 'dev');
$diskstr .= "<disk type='" . $strDevType . "' device='disk'>
<driver name='qemu' type='" . $disk['driver'] . "' cache='writeback'/>
<source " . $strSourceType . "='" . htmlspecialchars($disk['image'], ENT_QUOTES | ENT_XML1) . "'/>
<target bus='" . $disk['bus'] . "' dev='" . $disk['dev'] . "'/>
<target bus='" . $disk['bus'] . "' dev='" . $disk['dev'] . "' $rotation_rate />
$bootorder
$readonly
$serial
@@ -1307,6 +1315,7 @@
if ($tmp) {
$tmp['bus'] = $disk->target->attributes()->bus->__toString();
$tmp["boot order"] = $disk->boot->attributes()->order ?? "";
$tmp["rotation"] = $disk->target->attributes()->rotation_rate ?? "0";
$tmp['serial'] = $disk->serial ;
// Libvirt reports 0 bytes for raw disk images that haven't been
@@ -1335,6 +1344,7 @@
'physical' => '-',
'bus' => $disk->target->attributes()->bus->__toString(),
'boot order' => $disk->boot->attributes()->order ,
'rotation' => $disk->target->attributes()->rotation_rate ?? "0",
'serial' => $disk->serial
];
}
@@ -2365,6 +2375,7 @@
foreach ($objNodes as $objNode) {
$dom = $xpath->query('source/address/@domain', $objNode)->Item(0)->nodeValue;
$bus = $xpath->query('source/address/@bus', $objNode)->Item(0)->nodeValue;
$rotation = $xpath->query('target/address/@rotation_rate', $objNode)->Item(0)->nodeValue;
$slot = $xpath->query('source/address/@slot', $objNode)->Item(0)->nodeValue;
$func = $xpath->query('source/address/@function', $objNode)->Item(0)->nodeValue;
$rom = $xpath->query('rom/@file', $objNode);
@@ -2388,6 +2399,7 @@
'product' => $tmp2['product_name'],
'product_id' => $tmp2['product_id'],
'boot' => $boot,
'rotation' => $rotation,
'rom' => $rom,
'guest' => $guest
];

View File

@@ -1289,6 +1289,7 @@ private static $encoding = 'UTF-8';
'dev' => $disk['device'],
'bus' => $disk['bus'],
'boot' => $disk['boot order'],
'rotation' => $disk['rotation'],
'serial' => $disk['serial'],
'select' => $default_option
];
@@ -1300,7 +1301,8 @@ private static $encoding = 'UTF-8';
'driver' => 'raw',
'dev' => 'hda',
'select' => '',
'bus' => 'virtio'
'bus' => 'virtio',
'rotation' => "0"
];
}
@@ -2521,11 +2523,7 @@ function addtemplatexml($post) {
'overrides' => $usertemplate
];
file_put_contents($templateslocation,json_encode($savedtemplates,JSON_PRETTY_PRINT));
// Fire off the vnc/spice popup if available
$reply = ['success' => true];
#} else {
# $reply = ['error' => $lv->get_last_error()];
$reply = ['success' => true];
return $reply;
}

View File

@@ -303,7 +303,6 @@
}
if (strpos($arrConfig['template']['name'],"User-") !== false) $arrConfig['template']['name'] = str_replace("User-","",$arrConfig['template']['name']);
#var_dump($arrConfig);
?>
<link rel="stylesheet" href="<?autov('/plugins/dynamix.vm.manager/scripts/codemirror/lib/codemirror.css')?>">
@@ -805,11 +804,14 @@
<tr class="advanced disk_bus_options">
<td>_(vDisk Bus)_:</td>
<td>
<select name="disk[<?=$i?>][bus]" class="disk_bus narrow">
<select name="disk[<?=$i?>][bus]" class="disk_bus narrow" onchange="BusChange(this)">
<?mk_dropdown_options($arrValidDiskBuses, $arrDisk['bus']);?>
</select>
_(Boot Order)_:
<input type="number" size="5" maxlength="5" id="disk[<?=$i?>][boot]" class="narrow bootorder" style="width: 50px;" name="disk[<?=$i?>][boot]" title="_(Boot order)_" value="<?=$arrDisk['boot']?>" >
<? if ($arrDisk['bus'] == "virtio" || $arrDisk['bus'] == "usb") $ssddisabled = "hidden "; else $ssddisabled = " ";?>
<span id="disk[<?=$i?>][rotatetext]" <?=$ssddisabled?>>_(SSD)_:</span>
<input type="checkbox" id="disk[<?=$i?>][rotation]" class="narrow rotation" onchange="updateSSDCheck(this)"style="width: 50px;" name="disk[<?=$i?>][rotation]" <?=$ssddisabled ?> <?=$arrDisk['rotation'] ? "checked ":"";?> title="_(Set SDD flag)_" value="<?=$arrDisk['rotation']?>" >
</td>
</tr>
<tr class="advanced disk_bus_options">
@@ -857,6 +859,11 @@
Specify the order the devices are used for booting.
</p>
<p class="advanced">
<b>vDisk SSD Flag</b><br>
Specify the vdisk shows as SSD within the guest, only supported on SCSI, SATA and IDE bus types.
</p>
<p class="advanced">
<b>vDisk Serial</b><br>
Set the device serial number presented to the VM.
@@ -949,12 +956,14 @@
<tr class="advanced disk_bus_options">
<td>_(vDisk Bus)_:</td>
<td>
<select name="disk[{{INDEX}}][bus]" class="disk_bus narrow">
<select name="disk[{{INDEX}}][bus]" class="disk_bus narrow" onchange="BusChange(this)">
<?mk_dropdown_options($arrValidDiskBuses, '');?>
</select>
_(Boot Order)_:
<input type="number" size="5" maxlength="5" id="disk[{{INDEX}}][boot]" class="narrow bootorder" style="width: 50px;" name="disk[{{INDEX}}][boot]" title="_(Boot order)_" value="" >
<span id="disk[{{INDEX}}][rotatetext]" hidden>_(SSD)_:</span>
<input type="checkbox" id="disk[{{INDEX}}][rotation]" class="narrow rotation" onchange="updateSSDCheck(this)"style="width: 50px;" name="disk[{{INDEX}}[rotation]" hidden title="_(Set SSD flag)_" value='0' >
</td>
<tr class="advanced disk_bus_options">
<td>_(Serial)_:</td>
@@ -1700,6 +1709,28 @@ function ShareChange(share) {
}
}
function BusChange(bus) {
var value = bus.value;
var index = bus.name.indexOf("]") + 1;
var name = bus.name.substr(0,index) ;
if (value == "virtio" || value == "usb" ) {
document.getElementById(name+"[rotatetext]").style.visibility="hidden";
document.getElementById(name+"[rotation]").style.visibility="hidden";
} else {
document.getElementById(name+"[rotation]").style.display="inline";
document.getElementById(name+"[rotation]").style.visibility="visible";
document.getElementById(name+"[rotatetext]").style.display="inline";
document.getElementById(name+"[rotatetext]").style.visibility="visible";
}
}
function updateSSDCheck(ssd) {
var value = ssd.value;
var index = ssd.name.indexOf("]") + 1;
var name = ssd.name.substr(0,index) ;
if (document.getElementById(name+"[rotation]").checked) ssd.value = "1"; else ssd.value = "0";
}
function BIOSChange(bios) {
var value = bios.value;
if (value == "0") {