by converting the textfield into a textarea and validate the value
line wise (if there is more than one line)
also create a 'MultiFileButton' (mostly copied from extjs) that allows
to select multiple files at once
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Since some languages translate byte units like 'GiB' or write them in their
own script, this patch wraps units in the `gettext` function.
While most occurrences of byte strings can be translated within the
`format_size` function in `proxmox-widget-toolkit/src/Utils.js`, this patch
catches those instances that are not translated.
Signed-off-by: Noel Ullreich <n.ullreich@proxmox.com>
but fallback to 'eslint' otherwise
Suggested-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
[T: move into www/manager Makefile directly ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
under certain circumstances, the migrate button stays disabled, even
when a valid target node was selected:
* the first node that gets autoselected (most likely the second)
is not a valid migration target
* the user changes to a migration target that is a valid one
if that happens, the migration button would stay disabled.
switching once to a non valid target and would enable the button.
To fix it, we have to do two things here:
'checkQemuPreconditions' is actually an async function that awaits an
api call and uses the result to set the 'migration.allowedNodes'
property
'checkMigratePreconditions' calls 'checkQemuPreconditions' and uses the
'migration.allowedNodes' property afterwards.
but since 'checkMigratePreconditions' is not async, that happens before
the api call can return the valid data and thus leaves it empty, making
all nodes valid in the selector. (thus the initial selected node is
valid)
instead make 'checkMigratePreconditions' also async and await the result
of 'checkQemuPreconditions'
this unearthed another issue, namely we access an object that is
possibly undefined (worked out before due to race conditions) so
fallback to an empty object.
and lastly, since we want the 'disallowedNodes' set before actually
checking the qemu preconditions, we move the setting of that on
the node selector above the qemu preconditions check
(this is the only place where we set it anyway, and the source does not
change, we probably could move that out of that function altogether)
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
by removing the confusing buttons in the toolbar and adding them as
actions in an actioncolumn. There a only relevant actions are visible
and get a more expressive tooltip
with this, we now differentiate between 4 modes of the edit window:
* create a new mapping altogether
- shows all fields
* edit existing mapping on top level
- show only 'global' fields (comment, mdev), so no mappings
* add new host mapping
- shows nodeselector, mapping (and mdev, but disabled)
(informational only)
* edit existing host mapping
- show selected node (displayfield) mdev and mappings, but only
mappings are editable
we have to split the nodeselector into two fields, since the disabling
cbind does not pass through to the editconfig (and thus makes the form
invalid if we try that)
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
by disallowing nodes to be selected where a mapping already exists
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
they got lost in my last rebase/refactor.
the onLoadCallBack is used to check by the window if there are iommu
groups at all, and the checkIsolated function checks if the selected
ones are in a separate group (in regards to the other devices)
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
by changing into 'mapping matches host data' which indicates that the
configured values matches the host information
also for the pci and usb map selectors
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
by
* moving the node to the left column and changing the label
* moving the mdev filter to the right column
* show only the create button for new node mappings (otherwise we'd have
a reset button here that cannot do anything useful)
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
when there is more than one function for a device, indent the individual
functions. This sets them visually apart from the 'pass all through as
one' entry
We have to use a html entity here, as extjs trims the normal whitespace.
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
and mdev change.
giving an empty array did not have the desired effect of resetting the
selection, but giving no parameter at all does.
this now also clears the selection when the mdev filter/config changed
(was just forgotten)
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
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>
if the migration is an offline migration and when the mapping on the
target node exists, otherwise not
this does not change the behaviour for 'raw' devices in the config
those can still be forced to be migrated, like before
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
uses the new ResourceMapTree to add the CRUD interfaces for the
mappings.
We add both of them into a single panel, since the datacenter menu
already has many entries, and without a proper summary for the group, we
cannot really put them in a category
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
this will be the base class for trees for the individual mapping types,
e.g. pci and usb mapping.
there are a few things to configure, but the overall code sharing is
still significant, and should work out fine for future mapping types
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This contains the window to edit a PCI mapping for a single host.
It is designed to work in 3 modes:
* without an id and a nodename: for new mappings
* with an id but without nodename: for adding new host mappings to an
existing one
* with id and nodename: when editing an existing host mapping
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
this is a grid field for selecting multiple pci devices at once, like we
need for the mapped pci ui. There we want to be able to select multiple
devices such that one gets selected automatically
we can select a whole slot here, but that disables selecting the
individual functions of that device.
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
reworks the panel to use a controller, so that we can easily
add the selector for mapped pci devices
shows now a selection between 'raw' and 'mapped' devices, where
'raw' ones work like before, and 'mapped' ones take the values
form the hardware map config
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
similar to the pciselector, make it accept a plain nodename,
or no node at all and provide a setNodename function
to keep backwards compatibility, also check pveSelNode for the nodename
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
namely the filtering while preserving the original string,
it's just one line, but having a shorthand for it still makes it a bit
nicer
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
and send the scoped value to the firewall when choosing new values.
This happens for both IPSets and aliases.
Signed-off-by: Leo Nunner <l.nunner@proxmox.com>
Most of the time this isn't an issue for job edits, but here we have
two "enable" checkboxes that control enabling newly synced users and
enabling the job itself, try to be absolutely clear on both to avoid
potential confusion.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
it's somewhat redundant as onbe is already at the realm view, but for
panel titles it slightly helps if one doesn't have to string together
such "clues" oneself, i.e., it's easier to see where one is - e.g.,
if switching from some other task back to the web UI again, and we
have enough space here, so we ain't winning anything if keeping it
short.
Also add an emptyText to the grid, mostly as view's without anything
always look a bit off (like an error happened on load and one forgot
to mask)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
to make it consistent with the repositories ui, since having a checkbox
that is not clickable is confusing
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
by adding an empty text to the dropdown, and disabling the other
possibly invalid fields, so that it's clear why the panel is invalid
as soon as there is an ldap/ad realm, it gets autoselected anyway and
the fields get re-enabled.
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
To get a fast overview in which groups each user is add a column that
shows all groups they are a member of.
To get that info we need to pass the 'full=1' parameter to the API
endpoint, which then adds tokens and groups for each user to the result.
This is basically only increasing transmission size a bit, as the
backend doesn't needs to do any extra parsing for this information.
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
[T: Reword commit message ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
add a default virtual zone called 'localnetwork' in the ressource tree,
and handle permissions like a true sdn zone
(no conflict with true sdn zone is possible, as they have 8 characters max)
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
One must not call gettext on the already formatted string, as we
cannot translate it for any possible value, rather the format string
it self needs to be gettext'd, then the translator can position the
variable template placeholders however it's correct for their
language without having to care about any value this could be called
with.
Fixes: d057929f ("ui: user view: fix calling order of gettext")
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
The pool number is shown in a few places, having it easily accessible
can help to understand which pool a warning/error refers to.
For example, the PG ID consists of '{pool nr}.{pg nr}' and is shown in
every warning concerning that PG.
Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Adds a default-on checkbox to the QEMU Guest Agent feature selector
controlling the 'fs-freeze-on-backup' option. If unchecked, an
additional warning is displayed that backups can potentially corrupt
with this setting off.
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>