Commit Graph

116 Commits

Author SHA1 Message Date
Stoiko Ivanov
5641693298 ui: qemu: unify enabled state of pci, usb and rng
all 3 additions fail in the backend, if a user does not have
VM.Config.HWType on the VM.

unify their display to cause less confusion, to the most recently
added version for the rng.

drop the now unused noHWPerm (eslint reminded me about that).

found while reviewing:
https://lore.proxmox.com/all/20250408195959.0b1f3aaf@rosa.proxmox.com/T/#t

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Link: https://lore.proxmox.com/20250408181640.2332561-1-s.ivanov@proxmox.com
2025-04-09 08:01:53 +02:00
Friedrich Weber
c7b75cc57f ui: qemu: hardware view: fix hwrng cap check for unprivileged users
Currently, as an unprivileged user with role PVEVMUser the GUI breaks
with an error after navigating to a VM's hardware tab. The reason is
that the frontend checks the GUI capabilities via accessing
`caps.mapping.hwrng`, but `caps.mapping` does not actually have a
property called `hwrng`.

The reason this does not trigger for more privileged users is that all
expressions involving `caps.mapping.hwrng` are short-circuited if the
user has privilege `VM.Config.HWType`, so `caps.mapping.hwrng` is
never evaluated.

Fixes: a47a8afb ("ui: let non-root users configure VirtIO RNG devices")
Signed-off-by: Friedrich Weber <f.weber@proxmox.com>
Reviewed-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Tested-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Tested-by: Stefan Hanreich <s.hanreich@proxmox.com>
Link: https://lore.proxmox.com/20250408163856.116576-1-f.weber@proxmox.com
 [TL: typos in commit message]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2025-04-08 20:26:27 +02:00
Markus Frank
d67f05bc6f ui: add options to add virtio-fs to qemu config
Signed-off-by: Markus Frank <m.frank@proxmox.com>
Link: https://lore.proxmox.com/20250407134950.265270-11-m.frank@proxmox.com
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2025-04-08 00:46:40 +02:00
Friedrich Weber
62579dd707 ui: qemu: hardware: htmlEncode unused disk
to avoid interpreting HTML.

Signed-off-by: Friedrich Weber <f.weber@proxmox.com>
2025-04-04 15:26:23 +02:00
Filip Schauer
a47a8afb00 ui: let non-root users configure VirtIO RNG devices
Allow non-root users with the VM.Config.HWType privilege to configure
/dev/urandom & /dev/random as an entropy source for a VirtIO RNG device.
Users with the Mapping.Use privilege on the /mapping/hwrng ACL path may
also configure /dev/hwrng as an entropy source.

Signed-off-by: Filip Schauer <f.schauer@proxmox.com>
2025-04-04 10:26:28 +02:00
Dominik Csapak
38fd419220 ui: hardware/resources: htmlEncode volume ids configs
so we don't interpret html tags in filenames

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2025-01-20 11:34:56 +01:00
Timothy Nicholson
d161b6c4e0 fix #5302: ui: vm cpu affinity displayed in hardware overview
Signed-off-by: Timothy Nicholson <t.nicholson@proxmox.com>
2024-10-15 15:32:54 +02:00
Friedrich Weber
72c274754d ui: qemu: hardware: fix permission check for adding tpmstate volume
Previously, the "Add -> TPM State" menu item in the GUI was disabled
if the user did not have Sys.Console privileges. This deviated from
the permission check in the backend, which does not require
Sys.Console but (among others) VM.Config.Disk.

Fix this inconsistency by checking for VM.Config.Disk in the frontend
instead of Sys.Console.

Reported in enterprise support.

Signed-off-by: Friedrich Weber <f.weber@proxmox.com>
2024-09-10 12:13:09 +02:00
Fiona Ebner
5b32251812 ui: qemu: hardware: use asynchronous remove API call for disk hot-unplug
The backend uses a 10 minute timeout for disk hot-unplug, so avoid
using the synchronous call which only has a 30 second timeout.

Commit 3b2e557f ("close #584: ui qemu: changed remove unused disk to
asynchron call") introduced the necessary functionality when removing
unused disks.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2024-06-11 13:58:09 +02:00
Fiona Ebner
3dba293d78 ui: qemu: hardware: use background delay for asynchronous remove tasks
Avoids spawning a progress window for tasks that do complete more
quickly than the background delay.

Currently, the remove task is only asynchronous (i.e. using POST) when
it's for an unused disk, but this might change in the future (e.g. for
hot-unplug).

When adding a disk, a background delay of 5 seconds is already used.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2024-06-11 13:58:09 +02:00
Filip Schauer
bbffc765ea Allow moving unused disks to another storage
Signed-off-by: Filip Schauer <f.schauer@proxmox.com>
2024-04-12 11:50:03 +02:00
Dominik Csapak
7becf34fdd ui: improve permission handling for hardware
qemu/HardwareView:

with the new Hardware privileges, we want to adapt a few places where
we now allow to show the add/edit window with those permissions.

form/{PCI,USB}Selector:

increase the minHeight property of the PCI/USBSelector, so that
the user can see the error message if he has not enough permissions.

data/PermPathStore:

add '/hardware' to the list of acl paths

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2023-06-19 08:30:53 +02:00
Thomas Lamprecht
5c63f8a1fe ui: qemu hardware: fix eslint error
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-11-17 10:38:05 +01:00
Dominik Csapak
95f624b277 ui: cloudinit: disable remove button without VM.Config.Cloudinit
since it also needs both VM.Config.CDROM and VM.Config.Cloudinit

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2022-11-17 09:03:26 +01:00
Leo Nunner
ad1d539e43 fix #4321: properly check cloud-init drive permissions
Checking for only Sys.Console prevents users who actually have the
correct permissions (VM.Config.CDROM, VM.Config.Cloudinit) from adding
a new cloud-init drive. Some checks needed to be adapted so that editing
cloud-init devices was possible with VM.Config.CDROM instead of
VM.Config.Disk.

Signed-off-by: Leo Nunner <l.nunner@proxmox.com>
2022-11-17 08:36:58 +01:00
Fiona Ebner
5a2e333c9e ui: lxc/qemu: cpu edit: make cpuunits depend on node's cgroup version
so that the default value and limits actually correspond to what will
be used. Defaults to values for cgroup v2, because that is the more
common scenario.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2022-11-15 14:08:55 +01:00
Dominik Csapak
17dcba38dd ui: qemu: increase available usb ports depending on machine and ostype
in the backend, we allow up to 14 usb ports, but only if the vm can
use the qemu-xhci controller which is only possible since machine
version 7.1 and if the ostype is l26 or windows > 7

for this we introduce two helpers:
* qemu_min_version: modeled after the signature of 'min_version' from
  qemu-server, expects two arrays of versions and returns true if
  the first parameter is equal or greater than the second version
* get_max_usb_count looks at the given ostype and machine string
  and returns the proper maximum number

since we don't currently have the actual running version of the vm in
the gui, this is only a heuristic for running vms. but since the actual
running version could only be lower if none is set (e.g. for
migrated/long-running vms) we allow more in the gui and the backend will
do the proper thing (either hotplug it, or make it a pending change)

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2022-11-10 17:06:41 +01:00
Thomas Lamprecht
3bde324faf ui: move disk reassign into window/ folder
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Reviewed-by: Fabian Ebner <f.ebner@proxmox.com>
2022-04-08 14:53:55 +02:00
Aaron Lauterer
1b42be84cf ui: hdmove: modernize/refactor
Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Reviewed-by: Fabian Ebner <f.ebner@proxmox.com>
2022-04-07 15:35:17 +02:00
Aaron Lauterer
a8d854afe2 ui: lxc/qemu: add disk reassign and action submenu
For the new HDReassign component, we follow the approach of HDMove to
have one componend for qemu and lxc.

To avoid button clutter, a new "Disk/Volume action" button is
introduced. It holds the Move, Reassign and Resize buttons in a
sub-menu.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Reviewed-by: Fabian Ebner <f.ebner@proxmox.com>
2022-04-07 15:34:44 +02:00
Thomas Lamprecht
b49a0404be ui: vm hardware: module wide refactoring/cleanups/style changes/fixes
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-04-01 16:46:30 +02:00
Thomas Lamprecht
0bb1e60d1a ui: vm hardware: fix add-menu itemId casing
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-04-01 16:41:44 +02:00
Thomas Lamprecht
aa8e5e7909 ui: vm: factor out add-HW menu handler to higher order fn
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-04-01 16:06:14 +02:00
Thomas Lamprecht
64bef8206e ui: qemu: switch memory icon to SVG
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-03-31 16:52:14 +02:00
Thomas Lamprecht
f9698f62cb ui: qemu: switch processor icon to SVG
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2022-03-31 15:43:40 +02:00
Thomas Lamprecht
cc80f76528 ui: guest remove: modernize code and cleanup
drop only partially used intermediate value, use template strings,
reduce line bloat while trying to keep it readable.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-11-09 11:00:51 +01:00
Stefan Reiter
6d084964b3 ui: add support for adding TPM devices
Inspired by HDEfi for efidisks. Extends the DiskStorageSelector to allow
hiding the format, since tpmstate can only be stored in 'raw' format
(even on directory storages).

Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
2021-10-05 07:12:19 +02:00
Thomas Lamprecht
897c1fc84c ui: qemu/HW: reformat comment to better use awailable text-width
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-07-02 11:46:01 +02:00
Dominik Csapak
a8ea1b6876 ui: use some icons from widget-toolkit
we moved them there

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2021-04-22 18:34:34 +02:00
Stefan Reiter
4a0ccbadc3 ui/hardware: extend machine renderer to show pinned Windows versions
The default is not just "i440fx", this hides the fact that the version
will be pinned to 5.1, unless one deliberately opens the editor.

Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
2021-03-08 11:05:13 +01:00
Stefan Reiter
9dbddec75b ui: create MachineEdit window
no functional change intended

Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-03-05 21:31:32 +01:00
Aaron Lauterer
a1e25c47f3 ui: qemu/HardwareView: fix CDRom permission checkss
There are several types of drives that use the same config keys. Most
notably CDRom and regular VM disks (EFI and cloudinit exist as well).

Since there is a dedicated permission for CDRom drives we need to check
permissions in more detail, depending on what type of drive it actually
is for things like the edit, remove and Add -> CDRom buttons.

The permission check in the row definition itself which only checked for
'VM.Config.Disk' permissions (never_delete) had to be removed and finer
grained checks added for the individual buttons. This also meant a bit
of reshuffling in the checks what kind of disk the current one is.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-02-19 17:22:30 +01:00
Thomas Lamprecht
96da47ba51 ui: vm/hardware: cleanup and constify variables
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-02-19 17:22:30 +01:00
Aaron Lauterer
f8205155e9 ui: qemu/HardwareView: eslint: enforce "no-shadow" rule
By removing global vars 'i' and 'confid' and declaring them with let in the needed
context.

'i' wasn't necessary but had to be touched anyway.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2021-02-19 16:45:19 +01:00
Aaron Lauterer
87f53aa85e ui: qemu/HardwareView: eslint: enforce "no-useless-concat" rule
Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2021-02-19 16:45:19 +01:00
Thomas Lamprecht
7fcad9ebfb ui: vm/hardware: adapt maxlen fix
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-02-19 16:45:19 +01:00
Aaron Lauterer
f87ddae57b ui: qemu/HardwareView: eslint: enforce "max-len" rule
Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2021-02-19 16:41:52 +01:00
Aaron Lauterer
90b8c62255 ui: qemu/HardwareView: check EFI Disk button permissions
Make sure that the `Add EFI Disk` button is disabled if the user does
not have the needed permissions.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2021-02-03 08:36:59 +01:00
Aaron Lauterer
66abfe6a75 ui: qemu/HardwareView: change heuristic perms to const
Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2021-02-03 08:36:59 +01:00
Aaron Lauterer
f292721c80 ui: qemu/HardwareView: eslint: enforce "no-mixed-operators" rule
Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2021-02-03 08:36:59 +01:00
Thomas Lamprecht
fa8d397162 ui: eslint: some more trailing comma fixes
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-01-19 17:48:50 +01:00
Thomas Lamprecht
399ffa767f ui: eslint: enforce "dot-notation" rule
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-01-19 17:45:01 +01:00
Thomas Lamprecht
53e3ea8488 ui: eslint: enforce "no-extra-parens" rule
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-01-19 17:42:36 +01:00
Thomas Lamprecht
ef725143c6 ui: eslint: enforce "no-unneeded-ternary" rule
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-01-19 17:41:11 +01:00
Thomas Lamprecht
8058410f40 ui: eslint: fix various spacing related issues
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-01-19 17:39:15 +01:00
Thomas Lamprecht
f6710aac38 ui: eslint: fix trailing comma and comma related whitespaces errors
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-01-19 17:31:03 +01:00
Thomas Lamprecht
2a4971d8c9 ui: eslint: fix trailing spaces
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2021-01-19 17:29:55 +01:00
Thomas Lamprecht
3bbce3b8cd drop jslint lines
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-06-06 18:11:47 +02:00
Thomas Lamprecht
6386068d0e ui: call more update store functions in the store scope
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-04-09 16:45:22 +02:00
Stefan Reiter
4ba4c7c616 qemu: change virtio-rng icon to die
'die' as in 'dice', not what Perl does

Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
2020-03-06 18:19:39 +01:00