]> git.proxmox.com Git - proxmox-backup.git/log
proxmox-backup.git
2 years agoprune sim: rework simulation options layout
Thomas Lamprecht [Wed, 5 Oct 2022 11:11:16 +0000 (13:11 +0200)]
prune sim: rework simulation options layout

move the two columns to a field set each, one for the backup job
config, containing weekdays and schedule, and one for the simulation
time, which contains the end date/time and the duration, which got
moved over, as it better fits along the new date/time.

Note that I used end instead of start as its the later point in time,
so hopefully less confusing, but one could argue either.

Flex and width of the fields got adapted such that they now better
work on smaller resolutions (< 1500px total width) and look better
on both, low and high resolutions/width.

The button got moved into the docked area  mostly due to me being to
lazy to add yet another container indirection for having the hbox
nested inside a vbox, but also as it makes sense to have it big and
centered available.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agodocs: prune sim: add h4 to h6 style in css
Thomas Lamprecht [Wed, 5 Oct 2022 11:07:07 +0000 (13:07 +0200)]
docs: prune sim: add h4 to h6 style in css

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoprune sim: move PruneList to more static declaration
Thomas Lamprecht [Tue, 4 Oct 2022 14:32:18 +0000 (16:32 +0200)]
prune sim: move PruneList to more static declaration

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoprune-simulator: allow setting a custom date/time
Matthias Heiserer [Tue, 20 Sep 2022 13:21:28 +0000 (15:21 +0200)]
prune-simulator: allow setting a custom date/time

With this, the prune simulator will be more flexible, which might clear
up questions such as these:
https://forum.proxmox.com/threads/pbs-prune-simulator-monthly-backups.115081

In order to have the configuration window not take up too much space,
I added another column and moved the border to the left.

Signed-off-by: Matthias Heiserer <m.heiserer@proxmox.com>
Tested-by: Fiona Ebner <f.ebner@proxmox.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
2 years agoapi: disk SMART: fix details for depreacated return value comment
Thomas Lamprecht [Fri, 23 Sep 2022 08:33:17 +0000 (10:33 +0200)]
api: disk SMART: fix details for depreacated return value comment

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agofix #4165: SMART: add raw field
Matthias Heiserer [Thu, 21 Jul 2022 10:45:57 +0000 (12:45 +0200)]
fix #4165: SMART: add raw field

This makes it consistent with the naming scheme in PVE/GUI.
Keep value for API stability reasons, and remove it in next major version.

Signed-off-by: Matthias Heiserer <m.heiserer@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Dominik Csapak <d.cspak@proxmox.com>
2 years agodaily update: fix subscription check
Fabian Grünbichler [Thu, 22 Sep 2022 13:37:52 +0000 (15:37 +0200)]
daily update: fix subscription check

this wrongly triggered for non-subscribed systems as well.

Fixes: dd16e1dac8976b523c1cf895efe280b73008eca6
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agoapi/pull: drop unused ApiMethod info
Thomas Lamprecht [Fri, 23 Sep 2022 05:56:40 +0000 (07:56 +0200)]
api/pull: drop unused ApiMethod info

the API macro can handle this

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agopbs-manager: fix pull not respecting local ns setting
Matthias Heiserer [Tue, 20 Sep 2022 10:08:48 +0000 (12:08 +0200)]
pbs-manager: fix pull not respecting local ns setting

It pulls to root namespace instead.

Signed-off-by: Matthias Heiserer <m.heiserer@proxmox.com>
2 years agofix #4095: make http client use proxy config from 'ALL_PROXY' env var
Stefan Hanreich [Fri, 16 Sep 2022 08:48:38 +0000 (10:48 +0200)]
fix #4095: make http client use proxy config from 'ALL_PROXY' env var

In order to be able to use a proxy with the proxmox-backup-client, use
ProxyConfig for parsing proxy server config from the environment. Also
added a section in the documentation that describes how to configure the
environment if a proxy server should be used.

Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoapt: add proxmox-offline-mirror-helper package
Fabian Grünbichler [Thu, 15 Sep 2022 07:08:32 +0000 (09:08 +0200)]
apt: add proxmox-offline-mirror-helper package

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agod/control: recommend proxmox-offline-mirror-helper
Fabian Grünbichler [Mon, 12 Sep 2022 08:56:25 +0000 (10:56 +0200)]
d/control: recommend proxmox-offline-mirror-helper

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agodocs: faq: fix heading underline
Fabian Grünbichler [Mon, 12 Sep 2022 08:13:35 +0000 (10:13 +0200)]
docs: faq: fix heading underline

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agodocs: faq: add better clarification on full/incremental
Dominik Csapak [Fri, 26 Aug 2022 08:09:21 +0000 (10:09 +0200)]
docs: faq: add better clarification on full/incremental

and add a link to the technical overview

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 years agodocs: technical overview: add section about snapshots
Dominik Csapak [Fri, 26 Aug 2022 08:09:20 +0000 (10:09 +0200)]
docs: technical overview: add section about snapshots

to clarify that snapshots get uploaded in an incremental manner, but
still represent a full backup.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 years agodocs: terminology: update snapshot uniqueness for namespaces
Dominik Csapak [Fri, 26 Aug 2022 08:09:19 +0000 (10:09 +0200)]
docs: terminology: update snapshot uniqueness for namespaces

since we introduced namespaces, a snapshot does not have be unique
across the datastore anymore, only a namespace.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 years agofix: datastore: make relative_group_path() return relative path
Stefan Sterz [Wed, 24 Aug 2022 12:48:25 +0000 (14:48 +0200)]
fix: datastore: make relative_group_path() return relative path

previously the BackGroup trait used the datastore's
namespace_path() method to construct a base path. this would result in
it returning an absolute path equivalent to full_group_path(). use
the namspace's path() method instead to get a relative path, in-line
with backup_dir's relative_path().

Signed-off-by: Stefan Sterz <s.sterz@proxmox.com>
2 years agoui: fix default language display
Dominik Csapak [Thu, 1 Sep 2022 07:21:27 +0000 (09:21 +0200)]
ui: fix default language display

when we set a default language server side, we want to display that on
the login page. For that we have to use the 'language' variable in the
index template.

Also set the fallback to '__default__' instead of 'en' so that we show
'Default (English)'.

Was reported in the forum:

https://forum.proxmox.com/threads/set-default-language-on-server-login-screen-to-german.114431/

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 years agobump version to 2.2.6-1
Thomas Lamprecht [Fri, 9 Sep 2022 12:15:14 +0000 (14:15 +0200)]
bump version to 2.2.6-1

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoproxy: inline args in format strings
Thomas Lamprecht [Fri, 9 Sep 2022 12:00:26 +0000 (14:00 +0200)]
proxy: inline args in format strings

in most cases anyway. Allows for shorter code, which allows to drop
some line breaks.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agodocs: intro: avoid office@ mail address for sales related questions
Thomas Lamprecht [Fri, 9 Sep 2022 11:34:28 +0000 (13:34 +0200)]
docs: intro: avoid office@ mail address for sales related questions

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agodocs: package repos: fix typo
Thomas Lamprecht [Fri, 9 Sep 2022 10:40:35 +0000 (12:40 +0200)]
docs: package repos: fix typo

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoupdate to proxmox-subscription 0.3
Fabian Grünbichler [Wed, 7 Sep 2022 12:16:46 +0000 (14:16 +0200)]
update to proxmox-subscription 0.3

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agoupdate proxmox-router to 1.3.0
Fabian Grünbichler [Wed, 7 Sep 2022 07:21:41 +0000 (09:21 +0200)]
update proxmox-router to 1.3.0

no real change for PBS usage - the ApiHandler enum is marked
non_exhaustive now because it has extra values if the new (enabled by
default) "server" feature is enabled.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agoupdate to proxmox-http 0.7
Fabian Grünbichler [Fri, 19 Aug 2022 11:27:14 +0000 (13:27 +0200)]
update to proxmox-http 0.7

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agobackup-client: mount: fix read of larger files
Dominik Csapak [Fri, 2 Sep 2022 07:21:14 +0000 (09:21 +0200)]
backup-client: mount: fix read of larger files

fuse_lowlevel.h says about read:

 Read should send exactly the number of bytes requested except
 on EOF or error, otherwise the rest of the data will be
 substituted with zeroes.

but we simply forwarded the bytes we got from 'read_at'. The result was
that files were corrupt as soon as read_at returned not the exact number
of bytes requested. such short reads are easy to trigger with large
files (where reading a file has to cross many chunk boundaries).

To fix that, loop over 'read_at' until our buffer is full, or we read
0 bytes, indicating EOF.

reported in the forum:
https://forum.proxmox.com/threads/proxmox-backup-client-mounting-a-pxar-archive-gives-truncated-files.114447/

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Added comment, reworded slightly

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agobuild: more missing features
Fabian Grünbichler [Mon, 5 Sep 2022 10:55:33 +0000 (12:55 +0200)]
build: more missing features

these would cause failures when building the sub-crates directly from
their sub-directory.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agopbs-config: add missing proxmox-sys/timer feature
Fabian Grünbichler [Mon, 5 Sep 2022 10:18:00 +0000 (12:18 +0200)]
pbs-config: add missing proxmox-sys/timer feature

else building pbs-config directly (not from the workspace root with `-p
pbs-config`) fails (and so do similar dep chains that don't pull in the
feature via another way, like `cd proxmox-backup-client; cargo build`).

Reported-by: Dominiki Csapak <d.csapak@proxmox.com>
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agouse short assign-bit-or (clippy fix)
Fabian Grünbichler [Mon, 22 Aug 2022 11:15:53 +0000 (13:15 +0200)]
use short assign-bit-or (clippy fix)

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agoupdate to nom 7
Fabian Grünbichler [Fri, 19 Aug 2022 11:49:09 +0000 (13:49 +0200)]
update to nom 7

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agorustfmt
Wolfgang Bumiller [Fri, 19 Aug 2022 11:38:46 +0000 (13:38 +0200)]
rustfmt

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoproxmox-backup-client: added ignore-acls/xattrs/ownership/permissions & overwrite...
Markus Frank [Fri, 19 Aug 2022 10:48:48 +0000 (12:48 +0200)]
proxmox-backup-client: added ignore-acls/xattrs/ownership/permissions & overwrite parameters

If ignore-acls/ignore-xattrs/ignore-ownership/ignore-permissions is
set, the corresponding flag gets removed.

overwrite is saved as an PxarExtractOption like allow-existing-dirs.

Signed-off-by: Markus Frank <m.frank@proxmox.com>
2 years agopbs-client: added options to skip acls/xattrs/ownership/permissions
Markus Frank [Fri, 19 Aug 2022 10:48:47 +0000 (12:48 +0200)]
pbs-client: added options to skip acls/xattrs/ownership/permissions

Also added WITH_OWNER and WITH_PERMISSION to Default-Flags,
because otherwise it would be needed to activly set these flags and most
filesystems that support XATTR and ACL also support
POSIX-Permissions & Ownership.

Signed-off-by: Markus Frank <m.frank@proxmox.com>
2 years agopbs-client: added overwrite parameter to PxarExtractOptions.
Markus Frank [Fri, 19 Aug 2022 10:48:46 +0000 (12:48 +0200)]
pbs-client: added overwrite parameter to PxarExtractOptions.

If overwrite is true, O_TRUNC is set (to clean the leftovers)
instead of O_EXCL and therefore overwrites the files and
does not error out.

Signed-off-by: Markus Frank <m.frank@proxmox.com>
2 years agomore stable clippy fixups
Wolfgang Bumiller [Mon, 1 Aug 2022 10:04:38 +0000 (12:04 +0200)]
more stable clippy fixups

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoproperly scope clippy allow
Fabian Grünbichler [Tue, 2 Aug 2022 09:09:40 +0000 (11:09 +0200)]
properly scope clippy allow

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agobump d/control
Wolfgang Bumiller [Thu, 28 Jul 2022 11:48:56 +0000 (13:48 +0200)]
bump d/control

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agobump proxmox-sys dep to 0.4
Wolfgang Bumiller [Thu, 28 Jul 2022 11:40:07 +0000 (13:40 +0200)]
bump proxmox-sys dep to 0.4

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agotools: drop unused proxmox-borrow dependency
Wolfgang Bumiller [Thu, 28 Jul 2022 11:44:43 +0000 (13:44 +0200)]
tools: drop unused proxmox-borrow dependency

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoallow too_many_arguments in tape restore code
Wolfgang Bumiller [Thu, 28 Jul 2022 10:10:02 +0000 (12:10 +0200)]
allow too_many_arguments in tape restore code

Some of them could easily be grouped in a kind of
RestoreWorker struct, but that'll still leave one bigger
function that's more annoying to change.
Let's just allow it for now.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agolower PullParameters to pub(crate), allow too_many_parameters
Wolfgang Bumiller [Thu, 28 Jul 2022 08:56:43 +0000 (10:56 +0200)]
lower PullParameters to pub(crate), allow too_many_parameters

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoclippy: deal with some internal type complexity
Wolfgang Bumiller [Thu, 28 Jul 2022 08:53:38 +0000 (10:53 +0200)]
clippy: deal with some internal type complexity

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoclippy auto-deref fixes
Wolfgang Bumiller [Thu, 28 Jul 2022 08:32:07 +0000 (10:32 +0200)]
clippy auto-deref fixes

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoclippy fixups for Default impls
Wolfgang Bumiller [Thu, 28 Jul 2022 08:30:02 +0000 (10:30 +0200)]
clippy fixups for Default impls

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoticket: box TfaChallenge, it's large
Wolfgang Bumiller [Thu, 28 Jul 2022 08:23:19 +0000 (10:23 +0200)]
ticket: box TfaChallenge, it's large

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agomore low hanging clippy fruits
Wolfgang Bumiller [Thu, 28 Jul 2022 08:14:28 +0000 (10:14 +0200)]
more low hanging clippy fruits

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoclippy: deal with let bindings
Wolfgang Bumiller [Thu, 28 Jul 2022 08:08:08 +0000 (10:08 +0200)]
clippy: deal with let bindings

In the auth code we rather #[allow] the binding, because in
this case we explicitly want to assert the type.

In fact, it would make more sense for clippy to not warn
about a unit type if the unit type is explicitly spelled
out.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agomore simpler clippy fixes
Wolfgang Bumiller [Thu, 28 Jul 2022 07:56:03 +0000 (09:56 +0200)]
more simpler clippy fixes

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agofile-restore: clippy fixes
Wolfgang Bumiller [Thu, 28 Jul 2022 07:55:43 +0000 (09:55 +0200)]
file-restore: clippy fixes

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agotape: trivial clippy fixes
Wolfgang Bumiller [Thu, 28 Jul 2022 07:55:23 +0000 (09:55 +0200)]
tape: trivial clippy fixes

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agotape: 'comparison_chain' clippy fixes
Wolfgang Bumiller [Thu, 28 Jul 2022 07:55:07 +0000 (09:55 +0200)]
tape: 'comparison_chain' clippy fixes

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoclient: clippy fixes
Wolfgang Bumiller [Thu, 28 Jul 2022 07:26:29 +0000 (09:26 +0200)]
client: clippy fixes

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agodatastore: clippy fixes
Wolfgang Bumiller [Wed, 27 Jul 2022 13:26:50 +0000 (15:26 +0200)]
datastore: clippy fixes

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoconfig: clippy fixes
Wolfgang Bumiller [Wed, 27 Jul 2022 13:22:09 +0000 (15:22 +0200)]
config: clippy fixes

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agotools: allow type_complexity on purely internal field
Wolfgang Bumiller [Wed, 27 Jul 2022 13:19:18 +0000 (15:19 +0200)]
tools: allow type_complexity on purely internal field

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agorest-server: clippy fixups
Wolfgang Bumiller [Wed, 27 Jul 2022 12:52:06 +0000 (14:52 +0200)]
rest-server: clippy fixups

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agorrd: Entry type and clippy fixes
Wolfgang Bumiller [Wed, 27 Jul 2022 11:43:04 +0000 (13:43 +0200)]
rrd: Entry type and clippy fixes

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoapi-types: clippy fixes
Wolfgang Bumiller [Wed, 27 Jul 2022 11:29:32 +0000 (13:29 +0200)]
api-types: clippy fixes

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agomore clippy fixes and annotations
Fabian Grünbichler [Tue, 26 Jul 2022 11:36:14 +0000 (13:36 +0200)]
more clippy fixes and annotations

the remaining ones are:
- type complexity
- fns with many arguments
- new() without default()
- false positives for redundant closures (where closure returns a static
  value)
- expected vs actual length check without match/cmp

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agoclippy fixes
Fabian Grünbichler [Mon, 25 Jul 2022 13:40:44 +0000 (15:40 +0200)]
clippy fixes

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agobump d/control
Wolfgang Bumiller [Mon, 25 Jul 2022 11:43:32 +0000 (13:43 +0200)]
bump d/control

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agotfa: allow modifying 'allow-subdomains'
Wolfgang Bumiller [Mon, 25 Jul 2022 11:39:41 +0000 (13:39 +0200)]
tfa: allow modifying 'allow-subdomains'

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agobump d/control
Wolfgang Bumiller [Mon, 25 Jul 2022 10:03:41 +0000 (12:03 +0200)]
bump d/control

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agocargo fmt
Fabian Grünbichler [Thu, 21 Jul 2022 11:48:43 +0000 (13:48 +0200)]
cargo fmt

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agoadapt to proxmox-subscription changes
Fabian Grünbichler [Thu, 21 Jul 2022 11:48:22 +0000 (13:48 +0200)]
adapt to proxmox-subscription changes

key location is now in a single place, missing key and no signature is
not fatal anymore.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agoadapt to proxmox-apt change
Fabian Grünbichler [Thu, 21 Jul 2022 10:05:49 +0000 (12:05 +0200)]
adapt to proxmox-apt change

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agowww: add Signed info to subscription panel
Fabian Grünbichler [Thu, 30 Jun 2022 12:42:06 +0000 (14:42 +0200)]
www: add Signed info to subscription panel

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agomanager: add 'subscription set-offline-key' command
Fabian Grünbichler [Wed, 29 Jun 2022 11:40:10 +0000 (13:40 +0200)]
manager: add 'subscription set-offline-key' command

and disallow updating offline subscription keys via the regular
check/update code path.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agoextract proxmox-subscription crate
Fabian Grünbichler [Tue, 21 Jun 2022 12:35:28 +0000 (14:35 +0200)]
extract proxmox-subscription crate

and add support for signed subscription keys.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agobump proxmox-http dep to 0.6.4
Wolfgang Bumiller [Thu, 21 Jul 2022 11:00:22 +0000 (13:00 +0200)]
bump proxmox-http dep to 0.6.4

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agobump version to 2.2.5-1
Thomas Lamprecht [Mon, 18 Jul 2022 12:23:05 +0000 (14:23 +0200)]
bump version to 2.2.5-1

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoapi daemons: periodically unpark a tokio thread to ensure progress
Thomas Lamprecht [Mon, 18 Jul 2022 12:11:01 +0000 (14:11 +0200)]
api daemons: periodically unpark a tokio thread to ensure progress

The underlying issue seems to be the case when the thread that runs
the IO driver is polling its own tasks, while that happens the IO
driver/poller won't run and thus work stealing won't happen, meaning
that idle and parked threads will keep being parked even if there's
pending work they could do.

A promising solution for tokio is proposed in its issue tracker [0],
but it wasn't yet implemented. So, as stop gap spawn a separate
thread that periodically spawns a no-op ready future in the runtime
which would unpark a worker in the aforementioned case and thus
should break the bogus idleness. Choose a 3s period for that without
any overly elaborate reasons, our main goal is to ensure we accept
incoming connections and 3s is well below a HTTP timeout and leaves
some room for high network latencies while not invoking to much
additional wakeups for systems that are really idling.

[0]: https://github.com/tokio-rs/tokio/issues/4730#issuecomment-1147975074

Link: https://github.com/tokio-rs/tokio/issues/4730
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agofix #4157: docs: fix copy-paste error in repo examples
Thomas Lamprecht [Sat, 16 Jul 2022 09:41:12 +0000 (11:41 +0200)]
fix #4157: docs: fix copy-paste error in repo examples

refer to actually used host/datastore from the example

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agobump version to 2.2.4-1
Thomas Lamprecht [Thu, 14 Jul 2022 16:38:02 +0000 (18:38 +0200)]
bump version to 2.2.4-1

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoproxy: scheduler: only do a single round of time alignment and drop counter
Thomas Lamprecht [Thu, 14 Jul 2022 16:20:41 +0000 (18:20 +0200)]
proxy: scheduler: only do a single round of time alignment and drop counter

not much value in waiting an extra minute, that doesn't really
guarantees better scheduling (as in, less impact on startup).

Dropping that also allows easily to drop the counter by just moving
the sleep to the beginning of the loop.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoproxy: scheduler: code cleanup/bloat reduction
Thomas Lamprecht [Thu, 14 Jul 2022 16:10:05 +0000 (18:10 +0200)]
proxy: scheduler: code cleanup/bloat reduction

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoproxy: scheduler: move fallback inside next_minute fn, drops result from return
Thomas Lamprecht [Thu, 14 Jul 2022 15:59:24 +0000 (17:59 +0200)]
proxy: scheduler: move fallback inside next_minute fn, drops result from return

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agodocs: buildsys: use wild card target for generating config synopsis
Thomas Lamprecht [Thu, 14 Jul 2022 15:56:18 +0000 (17:56 +0200)]
docs: buildsys: use wild card target for generating config synopsis

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agodocs: buildsys: use wild card target for generating synopsis
Thomas Lamprecht [Thu, 14 Jul 2022 15:54:16 +0000 (17:54 +0200)]
docs: buildsys: use wild card target for generating synopsis

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agodocs: replace copyright years statement with single source of truth from conf
Thomas Lamprecht [Thu, 14 Jul 2022 14:53:14 +0000 (16:53 +0200)]
docs: replace copyright years statement with single source of truth from conf

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agodocs: conf: update copyright years
Thomas Lamprecht [Thu, 14 Jul 2022 14:49:23 +0000 (16:49 +0200)]
docs: conf: update copyright years

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agodocs: epilog: add version dynamically and drop unused AUTHOR replacement
Thomas Lamprecht [Thu, 14 Jul 2022 14:50:50 +0000 (16:50 +0200)]
docs: epilog: add version dynamically and drop unused AUTHOR replacement

now that the man pages are generated from sphinx, not rst2man, they
got access to the conf.py and things like its rst_epilog variable.

Use that to set the correct version in there dynamically

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agodocs: let sphinx build man pages for better integration and less cruft
Thomas Lamprecht [Thu, 14 Jul 2022 14:41:43 +0000 (16:41 +0200)]
docs: let sphinx build man pages for better integration and less cruft

rst2man is only good for use in projects that don't use sphinx
already, as there it can help to avoid bringing in the full sphinx
dependencies and be easier to manage (as long as it stay small).

But we already use sphinx, so there's no point in managing the manual
pages in a separate, semi-related way that is quite restricted as we
have no access to sphinx infrastructure like conf.py defined
variables and helpers for things like the current version.

Besides that, we're rather big, so the complexity of sphinx can
shine, e.g., see the diffstat report from switching out rst2man for
sphinx:

22 files changed, 74 insertions(+), 347 deletions(-)

so 273 lines less in total is rather nice.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agofix: api2: make tasks endpoint work with new prune job worker type
Stefan Sterz [Wed, 13 Jul 2022 14:36:29 +0000 (16:36 +0200)]
fix: api2: make tasks endpoint work with new prune job worker type

when prune jobs were refactored, their worker type was changed from
"prune" to "prunejob" this broke `check_job_store` and
`check_job_privs`

as reported in the forum: https://forum.proxmox.com/threads/problem-with-apirequest-on-pbs-2-2-3.112131/#post-483835

Signed-off-by: Stefan Sterz <s.sterz@proxmox.com>
2 years agoapi2: optimize filtered snapshot listing
Wolfgang Bumiller [Thu, 14 Jul 2022 08:53:39 +0000 (10:53 +0200)]
api2: optimize filtered snapshot listing

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agodatastore: add BackupGroup::exists helper
Wolfgang Bumiller [Thu, 14 Jul 2022 09:13:44 +0000 (11:13 +0200)]
datastore: add BackupGroup::exists helper

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agodatastore: factor type out of ListGroups into ListGroupsType
Wolfgang Bumiller [Wed, 13 Jul 2022 12:56:36 +0000 (14:56 +0200)]
datastore: factor type out of ListGroups into ListGroupsType

In the API we want to iterate over all backup groups
belonging to a particular type at least once, and iterating
through *everything* and simply "skipping" over every single
entry from another type makes no sense given that the groups
are organized into subdirectories based on their type.

Let's have an `.iter_backup_type()` method which returns an
iterator over all the groups of a specific type named
ListGroupsType and factorize the type level iterator out of
ListGroups for reuse.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agodatastore: simplify iter_backup_groups_ok
Wolfgang Bumiller [Wed, 13 Jul 2022 12:43:17 +0000 (14:43 +0200)]
datastore: simplify iter_backup_groups_ok

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoapi-types: make BackupType::iter an actual iterator
Wolfgang Bumiller [Thu, 14 Jul 2022 09:09:34 +0000 (11:09 +0200)]
api-types: make BackupType::iter an actual iterator

Otherwise we have to use BackupType::iter().iter() whenever
we're not using a `for _ in iter()` construct.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoapi: wrap get_snapshots_count in spawn_blocking
Wolfgang Bumiller [Wed, 13 Jul 2022 12:00:38 +0000 (14:00 +0200)]
api: wrap get_snapshots_count in spawn_blocking

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoapi: wrap set_backup_owner in spawn_blocking
Wolfgang Bumiller [Wed, 13 Jul 2022 12:01:24 +0000 (14:01 +0200)]
api: wrap set_backup_owner in spawn_blocking

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoapi: wrap set_protection in spawn_blocking
Wolfgang Bumiller [Wed, 13 Jul 2022 12:01:09 +0000 (14:01 +0200)]
api: wrap set_protection in spawn_blocking

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoapi: wrap catalog in spawn_blocking
Wolfgang Bumiller [Wed, 13 Jul 2022 12:01:00 +0000 (14:01 +0200)]
api: wrap catalog in spawn_blocking

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoapi: wrap delete_snapshot in spawn_blocking
Wolfgang Bumiller [Wed, 13 Jul 2022 12:00:25 +0000 (14:00 +0200)]
api: wrap delete_snapshot in spawn_blocking

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoapi: wrap list_snapshot_files in spawn_blocking
Wolfgang Bumiller [Wed, 13 Jul 2022 12:00:13 +0000 (14:00 +0200)]
api: wrap list_snapshot_files in spawn_blocking

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoapi: wrap delete_group in spawn_blocking
Wolfgang Bumiller [Wed, 13 Jul 2022 11:52:38 +0000 (13:52 +0200)]
api: wrap delete_group in spawn_blocking

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoapi: move 'list_snapshots' to a blocking thread
Wolfgang Bumiller [Tue, 12 Jul 2022 09:07:55 +0000 (11:07 +0200)]
api: move 'list_snapshots' to a blocking thread

This is a stop-gap measure to prevent snapshot listing from
blocking the main async worker threads as it can potentially
do a *lot* of I/O.

Ideally we'll move to a proper streaming API, but this will
be an API break.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agowrap fs_info calls in spawn_blocking
Wolfgang Bumiller [Mon, 11 Jul 2022 08:41:16 +0000 (10:41 +0200)]
wrap fs_info calls in spawn_blocking

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agotape: include used tapes in tape notification e-mails
Dominik Csapak [Fri, 1 Jul 2022 12:11:04 +0000 (14:11 +0200)]
tape: include used tapes in tape notification e-mails

by saving them in the pool-writer, and setting them in the
TapeBackupJobSummary

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 years agomove json_object_to_query to proxmox-http+http-helpers
Fabian Grünbichler [Tue, 21 Jun 2022 12:32:02 +0000 (14:32 +0200)]
move json_object_to_query to proxmox-http+http-helpers

it's used by the subscription code that will be extracted next.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>