]> git.proxmox.com Git - pve-common.git/log
pve-common.git
13 days agofix #5623: ovs other_config set to 0 not saved in network config
Tiomet Pelston [Wed, 23 Oct 2024 16:48:49 +0000 (18:48 +0200)]
fix #5623: ovs other_config set to 0 not saved in network config

When configuring an OVS network device via web interface,
any OVS option set to value=0 is ignored upon saving. This happens
because value=0 is evaluated as false in $parse_ovs_option.

Signed-off-by: Tiomet Pelston <tiometpelston@gmail.com>
Reviewed-By: Aaron Lauterer <a.lauterer@proxmox.com>
Tested-By: Aaron Lauterer <a.lauterer@proxmox.com>
2 weeks agobump version to 8.2.6
Thomas Lamprecht [Thu, 24 Oct 2024 16:37:49 +0000 (18:37 +0200)]
bump version to 8.2.6

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 weeks agoSysFSTools: lscpi: move mdev and iommugroup check outside of verbose
Dominik Csapak [Tue, 6 Aug 2024 12:21:59 +0000 (14:21 +0200)]
SysFSTools: lscpi: move mdev and iommugroup check outside of verbose

they should not be expensive (only reading/file checking in sysfs; the
parsed vendor/id names are not required) so we should include them
always.

We need at least the mdev part later at a point where we're not
interested in the rest of the verbose mode.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Christoph Heiss <c.heiss@proxmox.com>
Reviewed-by: Christoph Heiss <c.heiss@proxmox.com>
2 weeks agoSysFSTools: handle new nvidia syfsapi as mdev
Dominik Csapak [Tue, 6 Aug 2024 12:21:58 +0000 (14:21 +0200)]
SysFSTools: handle new nvidia syfsapi as mdev

with kernel 6.8 NVIDIAs vGPU driver has a different api than the
previous 'mediated devices'. Adapt our sysfcode to also recognize this
for the 'mdev' paths and add another 'nvidia' property so we can detect
this.

Also parse the new api when they exist instead of the mediated devices.

The biggest difference to the existing mdev api for our use is that the
devices don't report all generally available devices, only the
createable ones. So if a user wants to configure a VM, the selection is
restricted by what may currently run on the GPU (depending ont the exact
settings, e.g. mixed mode gpus where different models can be mixed on a
single GPU; not the default though)

We could overcome this, when we'd parse the general info from the
'nvidia-smi' tool, though I'm currently unsure if that interface is
stable and intended to be parsed (there is no json output or similar
AFAIK)

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Christoph Heiss <c.heiss@proxmox.com>
Reviewed-by: Christoph Heiss <c.heiss@proxmox.com>
2 weeks agosysfstools: file_write: properly catch errors
Dominik Csapak [Tue, 23 Jul 2024 08:29:25 +0000 (10:29 +0200)]
sysfstools: file_write: properly catch errors

since `print` is doing buffered IO, we don't always get an error there,
even if the underlying write does not work.

To properly catch that, do an unbuffered `syswrite` which circumvents
all buffers and writes directly to the file handle.

We aren't actually interested in the specific error here, but only if
the write was successful or not.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Christoph Heiss <c.heiss@proxmox.com>
3 weeks agobump version to 8.2.5
Thomas Lamprecht [Sat, 19 Oct 2024 14:36:24 +0000 (16:36 +0200)]
bump version to 8.2.5

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 weeks agotools: load PerlIO explicitly to avoid odd failures
Thomas Lamprecht [Sat, 19 Oct 2024 14:11:38 +0000 (16:11 +0200)]
tools: load PerlIO explicitly to avoid odd failures

Since commit ef0bcc9 ("tools: file_set_contents: use syswrite instead
of print") we're using PerlIO's scalar layer to ensure we encode any
potential unicode before passing the data to syswrite, which does not
support writing code points above 255.

Add an explicit use statement for PerlIO::scalar to avoid some odd
failures.

Some more background on why this seems odd:

After the pve-common version that included this change got moved to
public repos we got some reports in our Forum about CTs failing to
start [0] due to the lxc-pve-prestart-hook failing with an error
message like:

> Can't locate PerlIO.pm in @INC [...] at /usr/share/perl5/PVE/Tools.pm line 293.

Which points to the recently added `open(my $data_fh, '>', \$data)`
line in file_set_contents. The call chain from there upwards was
$lxc_setup->ct_file_set_contents <- $lxc_setup->pre_start_hook <-
closure <- lxc_hook <- lxc-pve-prestart-hook.
This seemed especially odd as we use `file_set_contents` in a lot of
other places and there was no all to obvious breakage from the change
on our test systems.

During evaluation I noticed some additional strange behavior, if one
called `file_set_contents` inside the closure before the call to
`pre_start_hook`, the error just goes away and one can observer that
%INC, which contains all loaded modules, suddenly does have a entry
for the PerlIO module, or well, it's scalar layer, which it did not
have without that call. So why the PerlIO can get automatically loaded
just fine most of the time but not inside the `pre_start_hook` is not
really clear yet; still loading PerlIO explicitly makes the issue go
away and seems sensible, so go for that and keep a comment to remind
more explicitly of this oddity. Once it's explained it can be removed
with a commit that mentions the explanation.

Further, if the PerlIO scalar layer cannot be loaded, the result is
that the passed reference is used as filename, which is far from
ideal, see the report in the perl GH [1] and the PR that fixes this
[2] by moving PerlIO::scalar into perl core proper, which will be
available in Perl v5.40 and thus our next Debian Trixie based major
release. This might have well to do with the original symptom that
embarked me on this odd (and not 100% finished) quest..

[0]: https://forum.proxmox.com/threads/156188/
[1]: https://github.com/Perl/perl5/issues/21275
[2]: https://github.com/Perl/perl5/pull/21282

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 weeks agotools: code-style cleanup file_set_contents
Thomas Lamprecht [Sat, 19 Oct 2024 14:04:36 +0000 (16:04 +0200)]
tools: code-style cleanup file_set_contents

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 weeks agobump version to 8.2.4
Thomas Lamprecht [Wed, 16 Oct 2024 17:02:23 +0000 (19:02 +0200)]
bump version to 8.2.4

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
4 weeks agofile set contents: fix error handling with or-operator precedence
Thomas Lamprecht [Mon, 14 Oct 2024 09:02:51 +0000 (11:02 +0200)]
file set contents: fix error handling with or-operator precedence

In perl the `or` and the `||` operator do mostly the same thing but
with a different precedence level [0].

A statement like:
`$foo += bar() or die "error"`
is basically equivalent to:
`($foo += bar()) or die "error"`

That means as long as bar only returns zero or positive integers the
`or die` can only happen the first time, as otherwise $foo is bigger
than zero and thus will never evaluate to false. This can be
reproduced by perl -we 'my $foo = 1; $foo += 0 or die "wont happen";'

While one could switch to the `||` operator, this is a bit to subtle,
so to fix this, separate tracking the total bytes written from getting
the bytes written by the current call, this avoids the error potential
completely.

[0]: https://perldoc.perl.org/perlop#Logical-or-and-Exclusive-Or

Reported-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
4 weeks agotools: file_set_contents: use syswrite instead of print
Filip Schauer [Mon, 30 Sep 2024 11:40:45 +0000 (13:40 +0200)]
tools: file_set_contents: use syswrite instead of print

The use of `print` can be inefficient for writing larger files due to
its default buffering in 8 KiB blocks.

This is especially problematic on `pmxcfs` where files are written in
4 KiB blocks due to the defaults of `libfuse2`. This leads to
significant write amplification on files larger than 4 KiB.

Patch (fix #5728: pmxcfs: allow bigger writes than 4k for fuse) [1]
addresses this by enabling `big_writes`, allowing up to 128 KiB blocks.
But due to the use of `print` in `file_set_contents`, writes are still
only buffered in 8 KiB blocks.

To further address this, this commit switches to using `syswrite`
instead of `print` to mitigate the block size limit imposed by `print`.
Combined with patch [1], file writes to `/etc/pve/` are now buffered in
128 KiB blocks.

The table below illustrates the drastic reduction in write
amplification when writing files of different sizes to `/etc/pve/` using
`file_set_contents`:

           print                big_writes+print     big_writes+syswrite
file size  written     amplif.  written     amplif.  written    amplif.
    1 KiB      48 KiB     48.0      45 KiB     45.0     41 KiB     41.0
    2 KiB      48 KiB     24.0      45 KiB     22.5     62 KiB     31.0
    4 KiB      82 KiB     20.5      80 KiB     20.0     73 KiB     18.3
    8 KiB     121 KiB     15.1      90 KiB     11.3     89 KiB     11.1
   16 KiB     217 KiB     13.6     146 KiB      9.1    113 KiB      7.1
   32 KiB     506 KiB     15.8     314 KiB      9.8    158 KiB      4.9
   64 KiB    1472 KiB     23.0     826 KiB     12.9    259 KiB      4.0
  128 KiB    5585 KiB     43.6    3765 KiB     29.4    452 KiB      3.5
  256 KiB   20424 KiB     79.8   10743 KiB     42.0   2351 KiB      9.2
  512 KiB   86715 KiB    169.4   43650 KiB     85.3   3204 KiB      6.3
 1024 KiB  369568 KiB    360.9  187496 KiB    183.1  15845 KiB     15.5

Since `file_set_contents` also performs a `rename` after writing, the
following table shows the results when the file is written without
renaming it afterwards:

           print                big_writes+print     big_writes+syswrite
file size  written     amplif.  written     amplif.  written     amplif.
    1 KiB      29 KiB     29.0      29 KiB     29.0     25 KiB      25.0
    2 KiB      29 KiB     14.5      30 KiB     15.0     25 KiB      12.5
    4 KiB      37 KiB      9.3      44 KiB     11.0     41 KiB      10.3
    8 KiB      61 KiB      7.6      45 KiB      5.6     45 KiB       5.6
   16 KiB     143 KiB      8.9      86 KiB      5.4     57 KiB       3.6
   32 KiB     396 KiB     12.4     225 KiB      7.0     69 KiB       2.2
   64 KiB    1281 KiB     20.0     673 KiB     10.5    105 KiB       1.6
  128 KiB    4789 KiB     37.4    3478 KiB     27.2    169 KiB       1.3
  256 KiB   18868 KiB     73.7    9976 KiB     39.0    572 KiB       2.2
  512 KiB   79304 KiB    154.9   42714 KiB     83.4   2150 KiB       4.2
 1024 KiB  347929 KiB    339.8  182483 KiB    178.2  11133 KiB      10.9

[1] https://lists.proxmox.com/pipermail/pve-devel/2024-September/065396.html

Signed-off-by: Filip Schauer <f.schauer@proxmox.com>
7 weeks agobump version to 8.2.3
Thomas Lamprecht [Mon, 23 Sep 2024 08:24:00 +0000 (10:24 +0200)]
bump version to 8.2.3

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 weeks agomethod schema: rename 'download' parameter to 'download_allowed'
Fabian Grünbichler [Thu, 19 Sep 2024 13:19:43 +0000 (15:19 +0200)]
method schema: rename 'download' parameter to 'download_allowed'

to make it more obvious what it does, but keep old variant for now.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
7 weeks agodownload handling: adapt cycle check to check value
Fabian Grünbichler [Thu, 19 Sep 2024 13:19:42 +0000 (15:19 +0200)]
download handling: adapt cycle check to check value

instead of whether the key exists in the schema instance, just in case somebody
wants to set "download => 0".

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
7 weeks agoschema: adapt description of method's download key
Fabian Grünbichler [Thu, 19 Sep 2024 13:19:41 +0000 (15:19 +0200)]
schema: adapt description of method's download key

with the newly introduced strict checks in the API handler, the download key
actually marks which endpoints/methods are allowed to use the download
functionality of the REST server, and the "directly return filename to be
downloaded" part is no longer supported as a result.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
3 months agocli handler: print correct command prefix for alias in asciidoc output
Thomas Lamprecht [Wed, 31 Jul 2024 18:24:02 +0000 (20:24 +0200)]
cli handler: print correct command prefix for alias in asciidoc output

Otherwise only the base exename is printed, even if the alias is for
sub-command.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 months agobump version to 8.2.2
Thomas Lamprecht [Tue, 30 Jul 2024 19:42:16 +0000 (21:42 +0200)]
bump version to 8.2.2

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 months agoRevert "section config: document package and its methods with POD"
Fabian Grünbichler [Wed, 24 Jul 2024 11:44:45 +0000 (13:44 +0200)]
Revert "section config: document package and its methods with POD"

This reverts commit d41bd420f8b5421cf95d9403728ba28b17a420e5.

3 months agoRevert "section config: update code style"
Fabian Grünbichler [Wed, 24 Jul 2024 11:44:40 +0000 (13:44 +0200)]
Revert "section config: update code style"

This reverts commit 29292d2a5d84291b3f8392ff26cca8e2654ac4b9.

3 months agoRevert "section config: clean up parser logic"
Fabian Grünbichler [Wed, 24 Jul 2024 11:44:37 +0000 (13:44 +0200)]
Revert "section config: clean up parser logic"

This reverts commit 6cba8d7660b62002ffdc81655b8e8668952614a9.

3 months agoREST handler: use double-hyphen as argument prefix for doc and CLI help output
Thomas Lamprecht [Mon, 22 Jul 2024 17:10:23 +0000 (19:10 +0200)]
REST handler: use double-hyphen as argument prefix for doc and CLI help output

Use "modern" double-hyphen style, we're not some odd BSD derived
tool..

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 months agofix #5529: cgroup: correctly handle change_cpu_quota without a quota
Wolfgang Bumiller [Tue, 9 Jul 2024 09:09:52 +0000 (11:09 +0200)]
fix #5529: cgroup: correctly handle change_cpu_quota without a quota

The function can be called with
- neither quota nor period
- only a period (quota will be 'max')
- both

$quota was therefore defaulted to 'max' and the check for whether
values were provided should use $period instead of $quota.
Also move the defaulting-assignment into the condition for clarity.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
4 months agofix #5486: tools: encode_text: add '%' to list of encoded characters
Dominik Csapak [Tue, 28 May 2024 11:10:02 +0000 (13:10 +0200)]
fix #5486: tools: encode_text: add '%' to list of encoded characters

all text that is going through encode_text will at a later point be
decoded by 'decode_text'. The latter is decoding all percent encoded
characters, even those not originally encoded by 'encode_text'.

This means, to preserve the original data, we first have to at least
percent encode the '%' itself, otherwise it's impossible to properly
store e.g. '%20' there.

It would get saved as '%20' directly, but on the next read, it gets
decoded to ' ', which is not the original data. instead we have to save
it as '%2520', which gets then correctly decoded to '%20' again

This is especially important for the vm/ct/node description, as there
users can store external links, which already include percent encoded
characters.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
4 months agosection config: clean up parser logic
Max Carrara [Tue, 4 Jun 2024 09:28:50 +0000 (11:28 +0200)]
section config: clean up parser logic

In order to make the parser somewhat more maintainable in the future,
this commit cleans up its logic and makes its control flow easier to
follow.

Signed-off-by: Max Carrara <m.carrara@proxmox.com>
4 months agosection config: update code style
Max Carrara [Tue, 4 Jun 2024 09:28:49 +0000 (11:28 +0200)]
section config: update code style

Replace `foreach` with `for` and use postfix deref instead of block
(circumfix) dereference (`$foo->%*` instead of `%$foo`).

Furthermore, make `format_config_line` a private sub instead of
unnecessarily declaring it as an anonymous subroutine, which avoids
the `&$sub_ref(...)` syntax altogether.

Signed-off-by: Max Carrara <m.carrara@proxmox.com>
4 months agosection config: document package and its methods with POD
Max Carrara [Tue, 4 Jun 2024 09:28:48 +0000 (11:28 +0200)]
section config: document package and its methods with POD

Apart from the obvious benefits that documentation has, this also
allows LSPs to provide docstrings e.g. via 'textDocument/hover' [0].

Tested with Perl Navigator [1].

[0]: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_hover
[1]: https://github.com/bscan/PerlNavigator

Signed-off-by: Max Carrara <m.carrara@proxmox.com>
4 months agotools: fix syscall mknod()
Jing Luo via pve-devel [Fri, 7 Jun 2024 09:33:13 +0000 (18:33 +0900)]
tools: fix syscall mknod()

b792e8df81 introduced a bug that can cause this:

Undefined subroutine &PVE::Syscall::SYS_mknod called at /usr/share/perl5/PVE/Syscall.pm line 11

It should be mknod, not SYS_mknod. This caused other pve perl lib failing
to build. I couldn't reproduce this on amd64 build, but I could reproduce this
on arm64 build; however this didn't seem to fix the issue, unless I revert
b792e8df81.

cf: b792e8df81d70cc8fc4bc7d0655313d4a7f40c3d
Signed-off-by: Jing Luo <jing@jing.rocks>
6 months agobump version to 8.2.1
Thomas Lamprecht [Tue, 23 Apr 2024 13:43:01 +0000 (15:43 +0200)]
bump version to 8.2.1

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 months agointerfaces: support stanzas without types/methods
Wolfgang Bumiller [Tue, 23 Apr 2024 13:03:17 +0000 (15:03 +0200)]
interfaces: support stanzas without types/methods

This is allowed in ifupdown2 and previously interfaces named
'vmbr\d+' were recognized as bridges even if they used this mode.
With commit e68ebda4f109 this is no longer the case.

Fixes: e68ebda4f109 ("fix #545: interfaces: allow arbitrary bridge names in network config")
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
6 months agobump version to 8.2.0
Thomas Lamprecht [Sun, 21 Apr 2024 09:51:17 +0000 (11:51 +0200)]
bump version to 8.2.0

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 months agofix #545: interfaces: allow arbitrary bridge names in network config
Stefan Hanreich [Fri, 12 Apr 2024 08:07:32 +0000 (10:07 +0200)]
fix #545: interfaces: allow arbitrary bridge names in network config

Similar to other interface types, we can detect a bridge by the
presence of its bridge_ports attribute, rather than solely relying on
the "vmbr" ifname prefix heuristic. For OVS bridges we need to examine
the OVS type instead.

The check needs to be moved up since other prefixes could
theoretically be included in a bridge name and then would otherwise
get picked up wrongly.

Also added a warning for interfaces named vmbrX that are not bridges
to catch possible misconfigurations.

Originally-by: Jillian Morgan <jillian.morgan@primordial.ca>
Reviewed-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
6 months agobump version to 8.1.2
Thomas Lamprecht [Wed, 17 Apr 2024 19:10:39 +0000 (21:10 +0200)]
bump version to 8.1.2

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 months agojson schema: add format description for pve-storage-id standard option
Fiona Ebner [Thu, 11 Apr 2024 09:29:29 +0000 (11:29 +0200)]
json schema: add format description for pve-storage-id standard option

so that the option can be used as part of a property string.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
7 months agodocs: add missing prefix
Folke Gleumes [Wed, 27 Mar 2024 13:09:22 +0000 (14:09 +0100)]
docs: add missing prefix

include 'PVEAPIToken=' prefix in the example for target-endpoint which
is mainly used for remote migrations.

Signed-off-by: Folke Gleumes <f.gleumes@proxmox.com>
8 months agobump version to 8.1.1
Wolfgang Bumiller [Wed, 6 Mar 2024 11:02:31 +0000 (12:02 +0100)]
bump version to 8.1.1

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
8 months agoticket: remove fallback for SHA1-base64 CSRF prevention tokens
Max Carrara [Tue, 20 Feb 2024 15:08:36 +0000 (16:08 +0100)]
ticket: remove fallback for SHA1-base64 CSRF prevention tokens

Signed-off-by: Max Carrara <m.carrara@proxmox.com>
8 months agoadd PVE::Systemd::is_unit_active
Wolfgang Bumiller [Thu, 15 Feb 2024 12:30:18 +0000 (13:30 +0100)]
add PVE::Systemd::is_unit_active

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
9 months agoschema: fixup description vs format_description in remote_format
Wolfgang Bumiller [Mon, 22 Jan 2024 11:52:41 +0000 (12:52 +0100)]
schema: fixup description vs format_description in remote_format

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
10 months agonetwork tests: test #5141
Fabian Grünbichler [Thu, 21 Dec 2023 15:30:25 +0000 (16:30 +0100)]
network tests: test #5141

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
10 months agofix #5141: network parser: fix accidental RE result re-use
Fabian Grünbichler [Thu, 21 Dec 2023 15:30:24 +0000 (16:30 +0100)]
fix #5141: network parser: fix accidental RE result re-use

$1 and friends are not cleared if a RE fails to match, in which case they will
contain the captured values from a previous successful match in the same scope.

deduplicate the two branches to avoid accidental re-introduction.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
10 months agonetwork parser: iterate deterministically
Fabian Grünbichler [Thu, 21 Dec 2023 15:30:23 +0000 (16:30 +0100)]
network parser: iterate deterministically

makes the behaviour easier to analyze, and also helps when testing since it
allows constructing test cases that trigger certain order of parsing.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
10 months agonetwork tests: switch to ifupdown2
Fabian Grünbichler [Thu, 21 Dec 2023 15:30:22 +0000 (16:30 +0100)]
network tests: switch to ifupdown2

adapt allow-* to auto, and drop the one test where behaviour is not testable
anymore.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
11 months agoexpose SYS_prctl
Wolfgang Bumiller [Thu, 14 Dec 2023 09:09:48 +0000 (10:09 +0100)]
expose SYS_prctl

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
11 months agobump version to 8.1.0
Thomas Lamprecht [Tue, 21 Nov 2023 12:04:26 +0000 (13:04 +0100)]
bump version to 8.1.0

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
11 months agosection config: avoid unamed boolean parameter use hash
Thomas Lamprecht [Fri, 17 Nov 2023 08:05:36 +0000 (09:05 +0100)]
section config: avoid unamed boolean parameter use hash

Even with just one param it's extra work to check what it refers too,
with named ones in a hash one hasn't that issue even with many params.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
11 months agosection config: add tests for separated property lists
Dominik Csapak [Thu, 16 Nov 2023 15:21:51 +0000 (16:21 +0100)]
section config: add tests for separated property lists

more or less a copy from the normal section config test, but now with
properties defined multiple times as well as conflicting options

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
 [ TL: improve consistency with property-isolation terminology ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
11 months agosection config: allow full property-isolation for plugins
Dominik Csapak [Thu, 16 Nov 2023 15:21:50 +0000 (16:21 +0100)]
section config: allow full property-isolation for plugins

When using 'init(property_isolation => 1)', the code saves the
property lists per type instead of a big one, and using
create/updateSchema creates a new schema with the options as 'oneOf'
and/or 'instance-types' (depending if the schemas match).

With that, we change how we work with the options hash:

It's not needed anymore to specify options that are specified in the
type specific propertyList, except if it's 'fixed => 1' (since that does
not exist in the schema)

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
 [ TL: ensure consistency with new property-isolation terminology ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
11 months agojson schema: implement 'oneOf' schema
Dominik Csapak [Thu, 16 Nov 2023 15:21:49 +0000 (16:21 +0100)]
json schema: implement 'oneOf' schema

a schema can now have the 'oneOf' property which is an array of regular
schemas. In the default case any of that has to match. If the
'type-property'/'instance-types' are given, only the schema for the specific
type will be checked (and handles as 'additionalProperties' if there is
no matching type)

the field found in 'type-property' has to be on the same level
(so for oneOf the nested schemas should not include that).

Documentation is adapted so that options are grouped per `type-property=value`
after the regular options (with their individual descriptions/types/etc.)

oneOfs without 'type-property'/'instance-tyeps' simply show up twice for
now with an 'or' line in between.

command line parsing is a bit weird for now since Getopt::Long
can't have multiple variants for the same property (but works fine with
pvesh for our current use cases). it gets shown as '--foo <multiple' if
they are not optional.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
11 months agotools: add is_deeply
Dominik Csapak [Thu, 16 Nov 2023 15:21:48 +0000 (16:21 +0100)]
tools: add is_deeply

to compare nested hashes/lists and scalar values recursively.
Also includes some tests

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
11 months agosection config: add test for the schemas
Dominik Csapak [Thu, 16 Nov 2023 15:21:47 +0000 (16:21 +0100)]
section config: add test for the schemas

by simply doing an 'is_deeply' on the generated schema with
the current generated schema

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
12 months agotools: Add mount flag constants
Filip Schauer [Mon, 13 Nov 2023 10:30:36 +0000 (11:30 +0100)]
tools: Add mount flag constants

Signed-off-by: Filip Schauer <f.schauer@proxmox.com>
12 months agotools: Add mknod syscall
Filip Schauer [Mon, 13 Nov 2023 10:30:35 +0000 (11:30 +0100)]
tools: Add mknod syscall

Signed-off-by: Filip Schauer <f.schauer@proxmox.com>
12 months agobump version to 8.0.10
Thomas Lamprecht [Tue, 7 Nov 2023 07:58:34 +0000 (08:58 +0100)]
bump version to 8.0.10

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
12 months agofix #4162: added `Auto-Submitted` header to email body
Gabriel Goller [Tue, 19 Sep 2023 07:35:25 +0000 (09:35 +0200)]
fix #4162: added `Auto-Submitted` header to email body

`Auto-Submitted` is defined in the rfc 5436 [1] and describes how
an automatic response (f.e. ooo replies, etc.) should behave on the
emails. When using `Auto-Submitted: auto-generated` (or any value
other than `none`) automatic replies won't be triggered.

[1]: https://www.rfc-editor.org/rfc/rfc3834.html

Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
12 months agopbs client: add 'tar' parameter to file_restore_extract
Dominik Csapak [Thu, 19 Oct 2023 09:13:53 +0000 (11:13 +0200)]
pbs client: add 'tar' parameter to file_restore_extract

so that we can get a 'tar.zst' from proxmox-file-restore by passing
'--format tar --zstd' to the file-restore binary

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
14 months agoreadme: avoid using deprecated apt-key
Thomas Lamprecht [Wed, 13 Sep 2023 11:43:12 +0000 (13:43 +0200)]
readme: avoid using deprecated apt-key

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
14 months agoreadme: update mentions of bullseye to bookworm
Stefan Lendl [Mon, 11 Sep 2023 11:55:59 +0000 (13:55 +0200)]
readme: update mentions of bullseye to bookworm

Signed-off-by: Stefan Lendl <s.lendl@proxmox.com>
14 months agobump version to 8.0.9
Fiona Ebner [Mon, 11 Sep 2023 11:51:19 +0000 (13:51 +0200)]
bump version to 8.0.9

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
14 months agotools: allow to force UTF-8 encoding for file_set_contents
Lukas Wagner [Wed, 30 Aug 2023 12:37:52 +0000 (14:37 +0200)]
tools: allow to force UTF-8 encoding for file_set_contents

Rationale: This is used from cfs_write_file, which is now also used to
write utf8-encoded strings that come from Rust. If no encoding is
specified while writing the file, we run into problems with certain
special characters (e.g. 'ü').

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
[FG: use flag parameter instead of encoding as a string
     use stricter 'UTF-8' instaed of 'utf8' (see 'perldoc Enocode')]
Suggested-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
[FE: implement changes suggested by Fabian
     move binmode call to where $fh is known to be set]
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
14 months agorun fork with timeout: only special case timeout error in list context
Fiona Ebner [Wed, 30 Aug 2023 13:07:52 +0000 (15:07 +0200)]
run fork with timeout: only special case timeout error in list context

run_with_timeout() will treat a timeout error differently when called
in list context and run_fork_with_timeout() should do the same. Ensure
this by calling run_with_timeout() in list context if and only if
run_fork_with_timeout() is called in list context too.

Fixes: a6aa0ae ("run with timeout: return if timeout happened in list context")
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
14 months agorun with timeout: only special-case timeout error in list-context
Fiona Ebner [Wed, 30 Aug 2023 13:07:51 +0000 (15:07 +0200)]
run with timeout: only special-case timeout error in list-context

and not other errors too.

Fixes: a6aa0ae ("run with timeout: return if timeout happened in list context")
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
14 months agotest: section config: also test array entries in unknown section
Fiona Ebner [Wed, 16 Aug 2023 09:24:39 +0000 (11:24 +0200)]
test: section config: also test array entries in unknown section

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
14 months agoSectionConfig: fix handling unknown sections
Dominik Csapak [Wed, 16 Aug 2023 09:09:11 +0000 (11:09 +0200)]
SectionConfig: fix handling unknown sections

if we're parsing an unknown section, we cannot check the schema with
`is_array` to check if it's an array type or not, thus we have to
handle that separately.

fix this by handling data in unknown sections like an array similar to
"cb2646c7b4974e33f4148752deec71f0d589b0f3" in proxmox-section-config.
This way we can write unknown section out again like we parsed it.

Add a regression test for an unknown field not in the schema.

This fixes an issue, where calling `qm destroy ID --purge` removed much
of the configs ob backup jobs (since there we parse an 'unknown' section
and run into the `is_array` error)
(Reported in the forum: https://forum.proxmox.com/threads/132091)

Suggested-by: Fiona Ebner <f.ebner@proxmox.com>
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
15 months agobump version to 8.0.8
Wolfgang Bumiller [Fri, 11 Aug 2023 11:25:14 +0000 (13:25 +0200)]
bump version to 8.0.8

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
15 months agosection config: allow base properties for {create, update}Schema()
Christoph Heiss [Thu, 10 Aug 2023 12:37:06 +0000 (14:37 +0200)]
section config: allow base properties for {create, update}Schema()

This works the same way as e.g. get_standard_option does it.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
15 months agoldap: handle errors explicitly everywhere instead of simply `die`ing
Christoph Heiss [Thu, 10 Aug 2023 12:37:05 +0000 (14:37 +0200)]
ldap: handle errors explicitly everywhere instead of simply `die`ing

Most codepaths already have explicit error handling (by the means of
checking the return value), which is essential dead code due to setting
`onerror`.

As LDAP errors might get presented to users due to upcoming changes, the
error location should not be present in these error messages, thus
switch to explicit handling.

Only two calls were missing such explicit handling of errors, so these
are amended as appropriate. Further, some `die`s were missing newlines
at the end of the message, which - again - would cause the error
location to be included.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
15 months agofix whitespaces
Philipp Hufnagl [Tue, 1 Aug 2023 14:46:02 +0000 (16:46 +0200)]
fix whitespaces

Signed-off-by: Philipp Hufnagl <p.hufnagl@proxmox.com>
FG: removed hunks that changed alignment..

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
15 months agodownload file from url: improve cleanup
Fabian Grünbichler [Fri, 4 Aug 2023 11:44:22 +0000 (13:44 +0200)]
download file from url: improve cleanup

don't attempt cleanup if temp files don't exist (anymore, or not yet).

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
15 months agodownload file from url: simplify error handling
Fabian Grünbichler [Fri, 4 Aug 2023 10:50:40 +0000 (12:50 +0200)]
download file from url: simplify error handling

the top-level error handling ensures the temporary downloaded file gets
removed in case of an error, so there is no need to also handle that when
decompression fails..

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
15 months agodownload file from url: fix indentation
Fabian Grünbichler [Fri, 4 Aug 2023 10:48:23 +0000 (12:48 +0200)]
download file from url: fix indentation

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
15 months agofix #4849: download file from url: add opt parameter for a decompression command
Philipp Hufnagl [Tue, 1 Aug 2023 14:46:01 +0000 (16:46 +0200)]
fix #4849: download file from url: add opt parameter for a decompression command

Signed-off-by: Philipp Hufnagl <p.hufnagl@proxmox.com>
15 months agobump version to 8.0.7
Wolfgang Bumiller [Mon, 24 Jul 2023 09:56:11 +0000 (11:56 +0200)]
bump version to 8.0.7

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
15 months agoJSONSchema: increase maxLength of config-digest to 64
Lukas Wagner [Thu, 20 Jul 2023 14:32:07 +0000 (16:32 +0200)]
JSONSchema: increase maxLength of config-digest to 64

The new notification backend is implemented in Rust where we use SHA256
for config digests.

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
16 months agobump version to 8.0.6
Thomas Lamprecht [Sat, 1 Jul 2023 17:24:12 +0000 (19:24 +0200)]
bump version to 8.0.6

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
16 months agorun with timeout: return if timeout happened in list context
Thomas Lamprecht [Sat, 1 Jul 2023 15:00:12 +0000 (17:00 +0200)]
run with timeout: return if timeout happened in list context

This can be relevant info do differentiate if an undef return value
happened due to the closure returning it or if it happened due to a
timeout.

While for quite a few cases this could be handled by a
variable captured by the passed closure code reference, acting as
messenger, that might often require needless wrapping.

Also run_fork_with_timeout warned errors of execution, but any such
error handling for an actual timeout is better handled at the call
site, as a context-less "got timeout" at STDERR or journal is really
not helpful.

I checked all call sites of both, run_fork_with_timeout and
run_with_timeout most do not use the result at all, and the ones that
do are in scalar context.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
16 months agonetwork: cope with non-existing interfaces config
Thomas Lamprecht [Mon, 26 Jun 2023 12:15:37 +0000 (14:15 +0200)]
network: cope with non-existing interfaces config

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
16 months agobump version to 8.0.5
Thomas Lamprecht [Sat, 17 Jun 2023 11:58:27 +0000 (13:58 +0200)]
bump version to 8.0.5

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
16 months agoapi dump: ignore proxyto_callback code refs
Thomas Lamprecht [Sat, 17 Jun 2023 11:52:25 +0000 (13:52 +0200)]
api dump: ignore proxyto_callback code refs

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
16 months agorest handler: group and sort use statements
Thomas Lamprecht [Sat, 17 Jun 2023 11:51:09 +0000 (13:51 +0200)]
rest handler: group and sort use statements

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
16 months agobump version to 8.0.4
Thomas Lamprecht [Fri, 16 Jun 2023 08:29:23 +0000 (10:29 +0200)]
bump version to 8.0.4

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
16 months agoschema: explicitly set min/max for vmid option
Fiona Ebner [Fri, 16 Jun 2023 07:35:37 +0000 (09:35 +0200)]
schema: explicitly set min/max for vmid option

The associated pve_verify_vmid() method already restricts the value
to this range, but this wouldn't be visible in the API viewer for
example [0].

The verify method is also called by qemu-server's qmextract, so it's
not possible to just drop the method right now.

[0]: https://forum.proxmox.com/threads/128845/post-564526

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
16 months agofix #4778: fix boolean type check for json parameters over the api
Dominik Csapak [Thu, 15 Jun 2023 12:36:43 +0000 (14:36 +0200)]
fix #4778: fix boolean type check for json parameters over the api

if a real json boolean is sent via the api, $value is a
JSON::PP::Boolean here instead of a string/scalar

so we should validate that too

the $value itself can be used normally in conditions like
----
if ($value) {
----

if the value is stringified, the result is either '1' or '0' so even if
we have some explicit checks like that it should not make a problem

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
17 months agosyslog: interpret priority level 'warn' correctly
Fiona Ebner [Wed, 14 Jun 2023 13:05:58 +0000 (15:05 +0200)]
syslog: interpret priority level 'warn' correctly

There are some use sites, e.g. HA manager, pvescheduler that
incorrectly use priority level 'warn'. Likely because that is allowed
for some other log helpers in the codebase. Instead of fixing them all
one-by-one, simply allow 'warn' as a priority too.

Suggested-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
17 months agoldap: fail authentication if dn is empty
Friedrich Weber [Tue, 13 Jun 2023 13:04:25 +0000 (15:04 +0200)]
ldap: fail authentication if dn is empty

This fixes an issue with LDAP servers that accept anonymous binds with
a non-empty password: If a user exists in the PVE LDAP realm, but PVE
cannot find the corresponding LDAP entry during login, they could log
in with any non-empty password.

This issue affects only LDAP realms. AD realms are not affected
because they perform no username->dn mapping.

At least the following LDAP server configurations seem to accept a
bind with empty DN and non-empty password and are affected:

* OpenLDAP with anonymous binds and the non-default setting
  `olcAllows: bind_anon_cred` enabled.
* AD (when used in an LDAP realm instead of an AD realm). However, for
  the issue to trigger, the LDAP search for the username->dn mapping
  has to succeed but return zero results. This can happen, for
  example, if the LDAP realm has (1) a bind DN set or (2) no bind DN
  set and AD was manually configured to allow anonymous LDAP searches
  for user entries.

The situation that a user exists in the PVE realm but is missing in
the LDAP directory can occur, for example, (1) if the user was created
manually or (2) if the LDAP entry is deleted or the base DN is
changed, but the LDAP realm has not been re-synced with
remove-vanished.

The username->dn mapping is performed by `get_user_dn`, which performs
an LDAP search. If the LDAP search for the user entry succeeds but
returns zero results (e.g. if the entry does not exist), `get_user_dn`
returns undef. Then, `auth_user_dn` is called with $dn being undef and
the user-provided $pw and performs an LDAP simple bind with these
credentials. If $pw is empty, Net::LDAP throws an error, but if it is
non-empty, it performs an LDAP bind with an empty DN and the password
provided by the user. If the LDAP server accepts this bind, the user
is logged in.

To fix this, `auth_user_dn` now dies/returns (depending on the $noerr
parameter) if the dn is falsy, which is the case for undef and the
empty string.

The issue was originally reported by forum user ITKR [0].

[0] https://forum.proxmox.com/threads/128788/

Suggested-by: Dominik Csapak <d.csapak@proxmox.com>
Suggested-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Friedrich Weber <f.weber@proxmox.com>
17 months agoread firstline: only map ENOENT to undef, raise error otherwise
Thomas Lamprecht [Tue, 13 Jun 2023 05:12:06 +0000 (07:12 +0200)]
read firstline: only map ENOENT to undef, raise error otherwise

Errors like permission denied or I/O ones should bubble up, otherwise
it might hide serious issues and seemingly continue to work, with a
wrong state or the like.

One could argue that the case for not existent should return undef,
while an empty file should return an empty string, but for that we
might want to check all use-sites first.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
17 months agobump version to 8.0.3
Wolfgang Bumiller [Wed, 7 Jun 2023 11:53:25 +0000 (13:53 +0200)]
bump version to 8.0.3

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
17 months agod/control: break qemu-server <<8.0.1 and geust-common <<5.0.1
Wolfgang Bumiller [Wed, 7 Jun 2023 11:53:20 +0000 (13:53 +0200)]
d/control: break qemu-server <<8.0.1 and geust-common <<5.0.1

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
17 months agoJSONSchema: disable '-alist' format
Dominik Csapak [Tue, 6 Jun 2023 13:08:47 +0000 (15:08 +0200)]
JSONSchema: disable '-alist' format

this should not be needed anymore since we can now use a simple array
in the api instead

Acked-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
17 months agosection config: implement array support
Dominik Csapak [Tue, 6 Jun 2023 13:08:46 +0000 (15:08 +0200)]
section config: implement array support

enables section configs in the style of:

----
type: id
    property value
    property value2
    property value3
----

can be combined with property strings

the provided create and update schema just pass through the array type
to the api, so the api call must always contain the complete array

also adds a test case for such array fields

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
17 months agobump version to 8.0.2
Wolfgang Bumiller [Wed, 7 Jun 2023 11:12:27 +0000 (13:12 +0200)]
bump version to 8.0.2

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
17 months agoJSONSchema: add support for array parameter in api calls, cli and config
Dominik Csapak [Tue, 6 Jun 2023 13:08:45 +0000 (15:08 +0200)]
JSONSchema: add support for array parameter in api calls, cli and config

a few things were missing for it to work:
* on the cli, we have to get the option as an array if the type is an
  array
* the untainting must be done recursively, otherwise, the regex matching
  converts an array hash into the string 'ARRAY(0x123412341234)'
* JSONSchema::parse_config did not handle array formats specially, but
  we want to allow to specify them multiple time
* the biggest point: in the RESTHandler, to be compatible with the
  current gui behavior, we have to rewrite two parameter types:
  - when the api defines a '-list' format for a string type, but we get
    a list (because of the changes in http-server), we join the list
    with a comma into a string
  - when the api defines an 'array' type, but we get a scalar value,
    wrap the value in an array (because for www-form-urlencoded, you
    cannot send an array with a single value) add tests for this
    behavior, some of which we want to deprecate and remove in the
    future

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
17 months agojson schema: improve description of bwlimit parameter
Stefan Hanreich [Wed, 29 Mar 2023 12:34:33 +0000 (14:34 +0200)]
json schema: improve description of bwlimit parameter

This makes the description consistent with the other places that
have bwlimit as a parameter as well.

Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
17 months agoremove unused SysFSTools::pci_cleanup_mdev_device
Wolfgang Bumiller [Mon, 5 Jun 2023 09:54:51 +0000 (11:54 +0200)]
remove unused SysFSTools::pci_cleanup_mdev_device

its use was dropped with qemu-server 7.2-7 which we already
have a 'Breaks' entry for, so no bump required there

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
17 months agobump version to 8.0.1
Thomas Lamprecht [Fri, 19 May 2023 12:39:09 +0000 (14:39 +0200)]
bump version to 8.0.1

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
17 months agod/control: record dependency on libanyevent-perl
Fiona Ebner [Fri, 19 May 2023 09:18:16 +0000 (11:18 +0200)]
d/control: record dependency on libanyevent-perl

It's not just a build-dependency. Noticed during an sbuild of
qemu-server that would fail with, because it couldn't locate the
AnyEvent module used in RESTEnvironment.pm.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
17 months agocli usage: remove extra newlines before descriptions
Thomas Lamprecht [Wed, 17 May 2023 08:23:20 +0000 (10:23 +0200)]
cli usage: remove extra newlines before descriptions

Reduce wasting vertical space for both, the command description and
the property description, just print the respective text at the next
line, with no extra empty line in between.

For better visual command separation color would help more.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
17 months agocli handler/formatter: small indendation clean-up
Thomas Lamprecht [Wed, 17 May 2023 07:15:16 +0000 (09:15 +0200)]
cli handler/formatter: small indendation clean-up

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
17 months agomakefile: convert to use simple parenthesis
Thomas Lamprecht [Wed, 17 May 2023 06:50:37 +0000 (08:50 +0200)]
makefile: convert to use simple parenthesis

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
18 months agobump version to 8.0.0
Thomas Lamprecht [Mon, 8 May 2023 13:27:33 +0000 (15:27 +0200)]
bump version to 8.0.0

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
18 months agobuildsys: derive upload dist automatically
Thomas Lamprecht [Mon, 8 May 2023 13:26:42 +0000 (15:26 +0200)]
buildsys: derive upload dist automatically

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>