this adds a SectionConfig handling for jobs (only 'vzdump' for now) that
represents a job that will be handled by pvescheduler and a basic
'job-state' handling for reading/writing state json files
this has some intersections with pvesrs state handling, but does not
use a single state file for all jobs, but seperate ones, like we
do it in the backup-server.
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
The whole thing is already prepared for this, the systemd timer was
just a fixed periodic timer with a frequency of one minute. And we
just introduced it as the assumption was made that less memory usage
would be generated with this approach, AFAIK.
But logging 4+ lines just about that the timer was started, even if
it does nothing, and that 24/7 is not to cheap and a bit annoying.
So in a first step add a simple daemon, which forks of a child for
running jobs once a minute.
This could be made still a bit more intelligent, i.e., look if we
have jobs tor run before forking - as forking is not the cheapest
syscall. Further, we could adapt the sleep interval to the next time
we actually need to run a job (and sending a SIGUSR to the daemon if
a job interval changes such, that this interval got narrower)
We try to sync running on minute-change boundaries at start, this
emulates systemd.timer behaviour, we had until now. Also user can
configure jobs on minute precision, so they probably expect that
those also start really close to a minute change event.
Could be adapted to resync during running, to factor in time drift.
But, as long as enough cpu cycles are available we run in correct
monotonic intervalls, so this isn't a must, IMO.
Another improvement could be locking a bit more fine grained, i.e.
not on a per-all-local-job-runs basis, but per-job (per-guest?)
basis, which would improve temporary starvement of small
high-periodic jobs through big, less peridoci jobs.
We argued that it's the user fault if such situations arise, but they
can evolve over time without noticing, especially in compolexer
setups.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
It seems we did not prepare the GUI enough for the API changes
planned when stopping to broadcast the old single string version. We
have to use the node specific versions, not the global 'versions'
object.
Also use the `PVE.Utils.compare_ceph_versions` everywhere, since some
versions are strings and others are the parts of the version (e.g.
["16", "2, "6"])
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Since commit: 8a3a300b ("ceph services: drop broadcasting legacy
version pmxcfs KV")
The 'ceph-version' kv is not broadcasted anymore, so we should not
query it, instead use get_ceph_versions
Also drop the other legacy keys for the versions
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
this also removes the "content" selector from the window.
as far as it seems, this selector was never able to select
more than one entry, so it was useless.
the check for FormData() is also removed, because this is
supported by all major browsers for a long time. therefore
doStandardSubmit() is also not necessary.
Signed-off-by: Lorenz Stechauner <l.stechauner@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Dominik Csapak <d.csapak@proxmox.com>
ensure we got the notes property for the datacenter config and also
the newly registered/watched jobs.cfg for future pveschedule patches.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
The back-end no longer returns 'protected' for renamed backups, and
'protected' backups are now their own kind.
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
Replace both by a showColumns option instead. As the current use of
hasNotesColumn already indicates, when new content-specific columns
are added, it is more natural for each derived class to specify the
columns it wants, rather than those it doesn't.
For hideColumns, there was no user. For hasNotesColumn, the only user
was the backup view.
Set the column information in the storage.BackupView class itself
rather than the instance (like hasNotesColumn was).
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
Keeps the behavior consistent with what happens for storages. It also
is required to not get into conflict with the check in archive_remove,
i.e. pruning here marks a backup as 'remove' and then archive_remove
complains that it's protected.
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
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>
Instead of showing 'Remove' for a mountpoint, change the text to
'Detach' and only show 'Remove' for unused volumes.
This aligns the behaviour with VMs and will make it clear, that a
mountpoint first needs to be detached before it can be fully removed.
Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
with 'get_node_kv', we get a hash which contains the value for
all nodes in the cluster (with the nodename as key), so we have to use
the value from the hash corresponding to our nodename.
also the 'str' property is inside the 'version' hash
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
check if error is set before trying to access it and check for the
new HTTP code a newer pve-cluster may return, and do a more fuzzy
match for older ones.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
we may want to return null or an empty object for the join info on a
node without a cluster in the future (i.e., PVE 8.0+), so get
compatible for that now already as it costs not much and as we can
now use es2020 we even can write the object access nicer..
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
so that users see when something went wrong.
Don't mask the grid directly, but rather only its view so that the
title bar can be used for selecting another storage during load.
Reported in the community forum:
https://forum.proxmox.com/threads/get-backups-from-proxmox-randomly-fails.98383/
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
for the multi disk panel, we want it to be just a little wider, so
that all form fields are still readable
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Lorenz Stechauner <l.stechauner@proxmox.com>
Tested-by: Aaron Lauterer <a.lauterer@proxmox.com>
uses the MultiDiskPanel as base and implements the necessary
functions/variables
this allows now to create a vm also without any disk
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Lorenz Stechauner <l.stechauner@proxmox.com>
Tested-by: Aaron Lauterer <a.lauterer@proxmox.com>
uses the MultiDiskPanel as a base and implements the necessary
functions/values
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Lorenz Stechauner <l.stechauner@proxmox.com>
Tested-by: Aaron Lauterer <a.lauterer@proxmox.com>
this adds a new panel where a user can add multiple disks, intended
for use in the wizard.
Has a simple grid for displaying the already added disks and displays
a warning triangle if the disk is not valid.
this is a base panel for adding multiple disks/mps for vms/ct
respectively.
this combines the shared behavior and layout and defines the functions
that subclasses must define
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Lorenz Stechauner <l.stechauner@proxmox.com>
Tested-by: Aaron Lauterer <a.lauterer@proxmox.com>
that sets the given vmconfig at the start and selects the first
free mpid
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Lorenz Stechauner <l.stechauner@proxmox.com>
Tested-by: Aaron Lauterer <a.lauterer@proxmox.com>
So that they are more visually seperated from the rest of the options.
Use the same style as in the realm sync panel.
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
this gives users the chance to supply the port nr in the gui,
without having to add a extra new field to the panel.
using the same implementation as in RemoteEdit.js in PBS.
Signed-off-by: Lorenz Stechauner <l.stechauner@proxmox.com>
Windows 11 requires a TPM and secure boot, so try to auto-enable both.
Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
Tested-By: Aaron Lauterer <a.lauterer@proxmox.com>