Menu="VMs:1" Title="Virtual Machines" Tag="columns" Cond="is_file('/var/run/libvirt/libvirtd.pid')" Markdown="false" --- "; foreach ($cpus as $pair) { unset($cpu1,$cpu2); [$cpu1, $cpu2] = my_preg_split('/[,-]/',$pair); $check = in_array($cpu1, $vcpu) ? 'fa-circle orange-text':'fa-circle-o'; if (!$cpu2) { echo ""; } else { echo ""; $check = in_array($cpu2, $vcpu) ? 'fa-circle orange-text':'fa-circle-o'; echo ""; } } echo ""; } function vsize($size,$expand=true) { $units = ['','K','M','G','T','P','E','Z','Y']; if ($expand) { $size = str_replace(['B',' ',',', '.'],'',strtoupper($size)); [$c1,$c2] = my_preg_split('/(?<=[0-9])(?=[A-Z])/',$size); return $c1 * pow(1024,array_search($c2,$units)?:0); } else { $base = $size ? floor(log($size,1024)) : 0; return $size/pow(1024,$base).$units[$base]; } } $uuid = unscript($_GET['uuid']??''); $subaction = $_GET['subaction'] ?? false; if (isset($_GET['refresh'])) { $vm = unscript($_GET['name']); if ($lv->domain_is_active($vm)) { echo ""; $msg = "Waiting for $vm to shutdown..."; } else { $msg = "$vm has been shutdown"; } } if ($subaction) { $vm = $lv->domain_get_name_by_uuid($uuid); if ($subaction == 'disk-resize') { $capacity = vsize($_GET['cap']); if ($capacity > vsize($_GET['oldcap'])) { shell_exec("qemu-img resize -q ".escapeshellarg(unscript($_GET['disk']??''))." ".vsize($capacity,0)); $msg = $vm." disk capacity has been changed to {$_GET['cap']}"; } else { $msg = "Error: disk capacity has to be greater than {$_GET['oldcap']}"; } } elseif ($subaction == 'disk-remove') { $msg = $lv->domain_disk_remove($vm, $_GET['dev']) ? "$vm disk has been removed" : "Error: ".$lv->get_last_error(); } elseif ($subaction == 'snap-create') { $msg = $lv->domain_snapshot_create($vm) ? "Snapshot for $vm has been created" : "Error: ".$lv->get_last_error(); } elseif ($subaction == 'snap-delete') { $msg = $lv->domain_snapshot_delete($vm, $_GET['snap']) ? "Snapshot for $vm has been deleted" : "Error: ".$lv->get_last_error(); } elseif ($subaction == 'snap-revert') { $msg = $lv->domain_snapshot_revert($vm, $_GET['snap']) ? "$vm has been reverted" : "Error: ".$lv->get_last_error(); } elseif ($subaction == 'snap-desc') { $msg = $lv->snapshot_set_metadata($vm, $_GET['snap'], $_POST['snapdesc']) ? "Snapshot description for $vm has been saved" : "Error: ".$lv->get_last_error(); } } if ($libvirt_running=='yes') $vms = $lv->get_domains() ?: []; if (empty($vms)) { $msg = $libvirt_running=='yes' ? 'No VMs defined. Create from template or add XML.' : 'Libvirt is not running. Goto Settings tab then click Start.'; } ?> "> "> ">
_(Name)__(Description)__(CPUs)__(Memory)__(vDisks)__(Graphics)__(Autostart)_
lang=""> "> _(ISO Image)_: :