Fiona Ebner [Fri, 21 Oct 2022 13:02:50 +0000 (15:02 +0200)]
d/postinst: replace pvemailforward with proxmox-mail-forward
proxmox-mail-forward is a new helper binary in Rust intended to behave
essentially the same on PVE installations. It can also handle mixed
PBS+PVE installations.
Stefan Sterz [Tue, 8 Nov 2022 15:01:30 +0000 (16:01 +0100)]
ui: add javascript source to `OnlineHelpInfo.js` prerequisites
by adding the javascript files as prerequisites, the
`OnlineHelpInfo.js` will get re-generated if a new `onlineHelp` key
is used. thus, this avoids an issue were valid keys might not get
mapped correctly because the info in `OnlineHelpInfo.js` wasn't
updated.
Fiona Ebner [Fri, 7 Oct 2022 12:41:54 +0000 (14:41 +0200)]
ui: lxc/qemu: cpu edit: use emptyText for cpuunits
This makes it slightly clearer that it's a default value (not being
written to the config explicitly). It's also in preparation to bind
the default based on the cgroup version, where it's a bit nicer to
bind the emptyText instead of the value (or a user set value would be
overwritten when the binding updates).
Fiona Ebner [Fri, 7 Oct 2022 12:41:53 +0000 (14:41 +0200)]
ui: qemu/lxc: cpu edit: fix 'create' parameter for delete_if_default()
For lxc, commit 53395db1 ("lxc/ResoureEdit: move some cpu fields to
advanced options") made the fields available in the create wizard, so
the comment is also wrong.
Both wizards do a 'delete kv.delete' in their onSubmit() function, so
it didn't actually matter in practice.
Fiona Ebner [Fri, 7 Oct 2022 12:41:52 +0000 (14:41 +0200)]
ui: lxc: cpu edit: drop superfluous delete_if_default
Commit bf96f60d ("use IntegerField from widget toolkit") switched to
using an Promxox IntegerField with 'deleteEmpty: true'. This means
that a value of '' already is removed from 'values' and added to
'delete' before onGetValues() is called here.
Thomas Lamprecht [Wed, 19 Oct 2022 13:12:15 +0000 (15:12 +0200)]
ui: node: rework layout of certificate viewer
Move the raw cert into a fieldset and collapse that by default, also
make it render monospace and pre-wrap whitespace.
Use a inputpanel to get top, col 1/2 & bottom layout so that rsa key
type/size and validity range can be rendered more compactly
n addition to that limit the whole windows height but make it
scrollable, this allows to sanely use the viewer on certs with many
SANs even on small window/browser sizes.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Mon, 10 Oct 2022 14:23:52 +0000 (16:23 +0200)]
ui: node certificate: make panel only vertical scrollable
Otherwise, a browser window breaks the responsive horizontal
flex-flow/grid-column resize, and just displays the vertical scroll
bar instead, which can look a bit odd.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Dominik Csapak [Mon, 10 Oct 2022 08:12:01 +0000 (10:12 +0200)]
ui: node certificate: make parent panel scrollable
The `ACME` panel may be rendered out of sight (overflow) when there
are enough SANs on the upper `Certificates` panel to push it down
enough and the browser/display height is too small.
Enable the `scrollable` config for the parent certificate view panel
to make ExtJS automatically add a scrollbar if the content overflows.
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Fiona Ebner [Mon, 3 Oct 2022 13:52:07 +0000 (15:52 +0200)]
vzdump: handle new 'performance' property string
Also generalizes the way vzdump property strings are handled for jobs.
Something similar could be done in VZDump.pm, but there the maxfiles
and prune-backups settings are currently coupled, so a dedicated
parse_performance() is used instead. Can be changed once maxfiles is
dropped.
Thomas Lamprecht [Thu, 15 Sep 2022 05:41:39 +0000 (07:41 +0200)]
ui: ceph: use quincy as new default for fresh installations
Note that we still check the cluster for an already used installation
and will select that, if any, so this is really just for setting up a
completely new cluster.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Aaron Lauterer [Wed, 10 Aug 2022 15:10:19 +0000 (17:10 +0200)]
ui: CephInstallWizard: make first mon node static
Removes the possibility to select the node on which to create the first
monitor in the configuration / initialization step and always sets it to
the current node.
This prevents that a user might select another node on which the Ceph
packages have not yet been installed. If a user did that, they would get
an error, but the Ceph config file would have been written. If the user
then does not select a valid node to create the first mon, but aborts
the wizard, they are greeted with a rados_connect error because the
config file exists, but it does not contain any mon infos that are
needed to connect to the Ceph cluster.
Creating a mon manually will remedy such a situation, but especially for
new users, this behavior is not ideal and confusing.
Dominik Csapak [Fri, 12 Aug 2022 09:29:51 +0000 (11:29 +0200)]
ui: improve form/MDevSelector
by
* showing the (optional) name in front of the type
* making the 'availble' column a bit narrower
* enabling 'cellWrap' for the description
* making the dropdown a bit wider (so all the information can fit)
Jobs: fix scheduling after updating job from a different node
since the jobs are configured clusterwide in pmxcfs, a user can use any
node to update the config of them. for some configs (schedule/enabled)
we need to update the last runtime in the state file, but this
is sadly only node-local.
to also update the state file on the other nodes, we introduce
a new 'detect_changed_runtime_props' function that checks and saves relevant
properties from the config to the statefile each round of the scheduler if they
changed.
this way, we can detect changes in those and update the last runtime too.
the only situation where we don't detect a config change is when the
user changes back to the previous configuration in between iterations.
This can be ignored though, since it would not be scheduled then
anyway.
in 'synchronize_job_states_with_config' we switch from reading the
jobstate unconditionally to check the existance of the statefile
(which is the only condition that can return undef anyway)
so that we don't read the file multiple times each round.
Fixes: 0c8d7468 ("fix #4053: don't run vzdump jobs when they change from
disabled->enabled")
Stefan Sterz [Wed, 27 Jul 2022 14:56:11 +0000 (16:56 +0200)]
fix: api2: add return type to nodes/{node}/execute endpoint
since this was missing a proper return type definition the api viewer
couldn't display the endpoint (`retinfs.items` was undefined). also
the `pvesh` command would complain that it cannot properly format the
return type because the variable `$item_type` in `CLIFormatter.pm` was
not defined.
Fiona Ebner [Mon, 13 Jun 2022 10:29:55 +0000 (12:29 +0200)]
pvesr: prepare local job: remove stale replicated volumes immediately
Commit d8cd8e8cf9795dc9c2462a67e9ef89ad31759796 introduced a
regression where only stale replicated volumes with an older
timestamp would be cleaned up. This meant that after removing a volume
from the guest config, it would only be cleaned up the second time the
replication ran afterwards. And the volume could become completely
orphaned in case the relevant storage wasn't used by the job anymore.
Thomas Lamprecht [Tue, 26 Jul 2022 10:00:41 +0000 (12:00 +0200)]
ui: datacenter: use "Name" label for respective part of full rp
as contrary to the property name this is actually only the rather
irrelevant part (auth wise) of the whole relying party, the ID is the
other part, and that one actually matters.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Thomas Lamprecht [Mon, 25 Jul 2022 14:48:29 +0000 (16:48 +0200)]
ui: datacenter: rework webauthn settings UX
Make origin optional, as it actually is, and its not covered by the
challenge anyway.
Also, not the thing we name rp, but the ID is important for the
validity of existing webauthn records, this error comes from the
confusing use of the same named thing in different ways by browsers,
us and the webauthn rust crate...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
ceph-after-pve-cluster: enable for ceph-volume, disable for ceph-disk
The ceph-disk service seems to have been removed with octopus (v15) and
we did not yet have them for ceph-volume which could lead to some
startup issues in cases where the pve-cluster service did not start fast
enough.
ui: restore: improve warning for restoring container with same ID
It's not clear to users that the "VM data" includes mount point
volumes including those that are not marked for backup. This is
different from VM restore, where volumes attached at drives not
present in the backup will be kept around as unused volumes.
Several (supposedly newer) users got tripped up by this over the
years, the latest report being [0]. The long term plan is to make the
restore dialog more flexible to be able to select actions for disks
individually, but that will take a bit of time. In the mean time, make
the warning more explicit.
Fabian Ebner [Mon, 27 Jun 2022 12:42:42 +0000 (14:42 +0200)]
ui: manual backup: unescape notes template on load
It's escaped in the API result and will be re-escaped upon submit,
leading to confusion as reported in the community forum:
https://forum.proxmox.com/threads/110747/post-480507
Fixes: c4dca88b ("ui: manual backup: also set notes-template default") Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
Dominik Csapak [Mon, 13 Jun 2022 13:24:10 +0000 (15:24 +0200)]
ui: dc/Backup: add 'repeat-missed' checkbox
so that the users can configure how to handle missed job runs
move the vmgrid inside the ipanel in 'columnB', so that the
advanced items show below the vmgrid (not above)
Dominik Csapak [Mon, 13 Jun 2022 13:24:09 +0000 (15:24 +0200)]
fix #4053: don't run vzdump jobs when they change from disabled->enabled
by updating the timestamp in the job state when enabled is changing
from 0 -> 1. We do it this way too in PBS for example, and is the more
sensible behaviour.
Fabian Ebner [Tue, 14 Jun 2022 09:47:32 +0000 (11:47 +0200)]
fix #4111: replication: don't send mail when fail count is zero
which can happen when failing to obtain the guest's migration lock.
This led to a lot of mails being sent during migration (timeout for
obtaining lock is only 2 seconds and we run it in a loop).
One could argue that obtaining the lock should increase the fail
count, but without the lock, the job state should not be touched and
even the first three mails upon migration could be considered spam.
Fixes: fa4bb659 ("replication: sent always mail for first three tries and move helper") Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
Aaron Lauterer [Mon, 2 May 2022 14:05:05 +0000 (16:05 +0200)]
fix #3597: ui: ceph setup: avoid autofill of monitor network
By not auto filling the Ceph public network we can avoid accidental
clicks on 'Next' which will cause the first Mon to be created with a
potentially wrong network. While that is fixable, it is tedious and
can be easily avoided by making the user always select the network to
use.
Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com> Tested-by: Stefan Hrdlicka<s.hrdlicka@proxmox.com>
[ T: adapted commit subject to be more specific and match our common
style ] Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Fabian Ebner [Fri, 4 Mar 2022 13:09:08 +0000 (14:09 +0100)]
api: ceph: mon: make checking for duplicate addresses more robust
Because $mon->{addr} might come with a port attached (affects monitors
created with PVE 5.4 as reported in the community forum [0]), or even
be a hostname (according to the code in Ceph/Services.pm). Although
the latter shouldn't happen for configurations created by PVE.
[0]: https://forum.proxmox.com/threads/105904/
Fixes: 9e989449 ("api: ceph: mon: fix handling of IPv6 addresses in assert_mon_prerequisites") Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
Fabian Ebner [Mon, 9 May 2022 10:34:11 +0000 (12:34 +0200)]
vzdump: avoid 'requires' constraint when parsing defaults
to avoid warnings like
parse error in '/etc/vzdump.conf' - 'storage': missing property -
'notes-template' requires this property
when there is no default for the required property configured.
In new(), the defaults are mixed in with the regular CLI/API
parameters, so re-check if the required property is set. If it's not,
the defaults do not apply to the current run, and can be dropped.