]> git.proxmox.com Git - proxmox-backup.git/log
proxmox-backup.git
3 years agoui: running tasks: Use gettext for column labels
Dominic Jäger [Tue, 5 Jan 2021 11:34:31 +0000 (12:34 +0100)]
ui: running tasks: Use gettext for column labels

Signed-off-by: Dominic Jäger <d.jaeger@proxmox.com>
3 years agotape: add volume_mounts and medium_passes to LinuxDriveAndMediaStatus
Dietmar Maurer [Tue, 5 Jan 2021 12:43:17 +0000 (13:43 +0100)]
tape: add volume_mounts and medium_passes to LinuxDriveAndMediaStatus

3 years agotape: implement read_volume_statistics
Dietmar Maurer [Tue, 5 Jan 2021 11:58:18 +0000 (12:58 +0100)]
tape: implement read_volume_statistics

3 years agotape: status - show thape alert flags
Dietmar Maurer [Mon, 4 Jan 2021 12:15:30 +0000 (13:15 +0100)]
tape: status - show thape alert flags

3 years agotape: use LP 12h TapeAlert Response to query tape alert flags
Dietmar Maurer [Mon, 4 Jan 2021 12:14:02 +0000 (13:14 +0100)]
tape: use LP 12h TapeAlert Response to query tape alert flags

3 years agotape: changer status - show full slots (for cartridge without barcode)
Dietmar Maurer [Mon, 4 Jan 2021 11:06:05 +0000 (12:06 +0100)]
tape: changer status - show full slots (for cartridge without barcode)

3 years agotape: further PoolWriter cleanups
Dietmar Maurer [Sun, 3 Jan 2021 11:07:54 +0000 (12:07 +0100)]
tape: further PoolWriter cleanups

3 years agotape: cleanup - rename 'info' to 'media_id'
Dietmar Maurer [Sun, 3 Jan 2021 10:38:00 +0000 (11:38 +0100)]
tape: cleanup - rename 'info' to 'media_id'

Second try.

3 years agoRevert "tape: cleanup - rename 'info' to 'media_id'"
Dietmar Maurer [Sun, 3 Jan 2021 10:14:58 +0000 (11:14 +0100)]
Revert "tape: cleanup - rename 'info' to 'media_id'"

This reverts commit f046313c0ea483ab3724b25c059c5af2ecc194a5.

media_id is already use as parameter, so this commit is totally buggy.

3 years agotape: cleanup - rename 'info' to 'media_id'
Dietmar Maurer [Sun, 3 Jan 2021 09:37:42 +0000 (10:37 +0100)]
tape: cleanup - rename 'info' to 'media_id'

3 years agotape: sg-tape-cmd tape-alert-flags
Dietmar Maurer [Sun, 3 Jan 2021 09:09:43 +0000 (10:09 +0100)]
tape: sg-tape-cmd tape-alert-flags

3 years agotape: commit missing file
Dietmar Maurer [Sat, 2 Jan 2021 12:38:57 +0000 (13:38 +0100)]
tape: commit missing file

3 years agotape: decode TapeAlertFlags in cartridge-memory command
Dietmar Maurer [Sat, 2 Jan 2021 09:55:30 +0000 (10:55 +0100)]
tape: decode TapeAlertFlags in cartridge-memory command

3 years agotape: merge MediaStateDatabase into Inventory
Dietmar Maurer [Fri, 1 Jan 2021 15:15:13 +0000 (16:15 +0100)]
tape: merge MediaStateDatabase into Inventory

3 years agotape: implement MediaPool flag to consider offline media
Dietmar Maurer [Fri, 1 Jan 2021 09:03:59 +0000 (10:03 +0100)]
tape: implement MediaPool flag to consider offline media

For standalone tape drives.

3 years agogui: update tape job descriptions
Dietmar Maurer [Thu, 31 Dec 2020 09:37:09 +0000 (10:37 +0100)]
gui: update tape job descriptions

3 years agotape: add basic restore api/command
Dietmar Maurer [Thu, 31 Dec 2020 09:26:48 +0000 (10:26 +0100)]
tape: add basic restore api/command

3 years agotape: new inventory helper - lookup_media_set_pool
Dietmar Maurer [Thu, 31 Dec 2020 09:03:17 +0000 (10:03 +0100)]
tape: new inventory helper - lookup_media_set_pool

3 years agoupdate TODO
Dietmar Maurer [Thu, 31 Dec 2020 07:38:22 +0000 (08:38 +0100)]
update TODO

3 years agoapi: allow tokens to list users
Fabian Grünbichler [Wed, 30 Dec 2020 11:21:14 +0000 (12:21 +0100)]
api: allow tokens to list users

their owner, or all if they have the appropriate privileges.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
3 years agoapi: improve error messages for restricted endpoints
Fabian Grünbichler [Wed, 30 Dec 2020 11:21:13 +0000 (12:21 +0100)]
api: improve error messages for restricted endpoints

the old variant attempted to parse a tokenid as userid and returned the
cryptic parsing error to the client, which is rather confusing.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
3 years agotape: media_change - log all errors
Dietmar Maurer [Wed, 30 Dec 2020 18:17:18 +0000 (19:17 +0100)]
tape: media_change - log all errors

3 years agotape: only log to stdout in CLI environment
Dietmar Maurer [Wed, 30 Dec 2020 18:01:39 +0000 (19:01 +0100)]
tape: only log to stdout in CLI environment

3 years agotape: improve inline docu
Dietmar Maurer [Wed, 30 Dec 2020 16:28:33 +0000 (17:28 +0100)]
tape: improve inline docu

3 years agotape: cleanup/simplify media_change code
Dietmar Maurer [Wed, 30 Dec 2020 16:16:57 +0000 (17:16 +0100)]
tape: cleanup/simplify media_change code

3 years agotape: improve media request/load
Dietmar Maurer [Wed, 30 Dec 2020 11:58:06 +0000 (12:58 +0100)]
tape: improve media request/load

3 years agoverify-api: fix allOf duplicates check
Fabian Grünbichler [Wed, 30 Dec 2020 11:21:33 +0000 (12:21 +0100)]
verify-api: fix allOf duplicates check

it triggered with a wrongly-formatted message on schemas that did NOT
contain any duplicates..

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
3 years agotape: set minimal media label length to 2
Dietmar Maurer [Wed, 30 Dec 2020 09:15:02 +0000 (10:15 +0100)]
tape: set minimal media label length to 2

3 years agotape: add restore code, implement catalog api/command
Dietmar Maurer [Wed, 30 Dec 2020 08:48:18 +0000 (09:48 +0100)]
tape: add restore code, implement catalog api/command

3 years agotape: cleanup - remove debug messages
Dietmar Maurer [Wed, 30 Dec 2020 07:41:30 +0000 (08:41 +0100)]
tape: cleanup - remove debug messages

3 years agotape: correctly sort media api entries
Dietmar Maurer [Tue, 29 Dec 2020 11:09:51 +0000 (12:09 +0100)]
tape: correctly sort media api entries

3 years agocleanup: remove debug output
Dietmar Maurer [Tue, 29 Dec 2020 10:59:57 +0000 (11:59 +0100)]
cleanup: remove debug output

3 years agotape: implement media content list api
Dietmar Maurer [Tue, 29 Dec 2020 10:58:26 +0000 (11:58 +0100)]
tape: implement media content list api

3 years agotape: create the MediaCatalog when we label a tape
Dietmar Maurer [Tue, 29 Dec 2020 09:55:20 +0000 (10:55 +0100)]
tape: create the MediaCatalog when we label a tape

3 years agocleanup: disable debug message when we detect a stopped worker task
Dietmar Maurer [Tue, 29 Dec 2020 09:53:16 +0000 (10:53 +0100)]
cleanup: disable debug message when we detect a stopped worker task

3 years agotape: cleanup LinuxDriveStatus - make density optional
Dietmar Maurer [Tue, 29 Dec 2020 08:10:30 +0000 (09:10 +0100)]
tape: cleanup LinuxDriveStatus - make density optional

3 years agotape: factor out get_drive_and_media_status
Dietmar Maurer [Tue, 29 Dec 2020 07:39:06 +0000 (08:39 +0100)]
tape: factor out get_drive_and_media_status

3 years agotape: correctly parse mtx import/export slots
Dietmar Maurer [Mon, 28 Dec 2020 12:32:56 +0000 (13:32 +0100)]
tape: correctly parse mtx import/export slots

3 years agodebian: correctly install sg-tape-cmd setuid binary
Dietmar Maurer [Mon, 28 Dec 2020 12:22:17 +0000 (13:22 +0100)]
debian: correctly install sg-tape-cmd setuid binary

3 years agofix typo in Makefile
Dietmar Maurer [Mon, 28 Dec 2020 10:41:10 +0000 (11:41 +0100)]
fix typo in Makefile

3 years agotape: install new sg-tape-cmd setuid binary
Dietmar Maurer [Mon, 28 Dec 2020 10:10:25 +0000 (11:10 +0100)]
tape: install new sg-tape-cmd setuid binary

3 years agotape: MediaCatalog: write magic number before content
Dietmar Maurer [Sat, 26 Dec 2020 10:05:25 +0000 (11:05 +0100)]
tape: MediaCatalog: write magic number before content

3 years agotape: add LTO1 to TapeDensity
Dietmar Maurer [Sat, 26 Dec 2020 09:48:32 +0000 (10:48 +0100)]
tape: add LTO1 to TapeDensity

3 years agotape: fix non-rewinding tape device check
Dietmar Maurer [Fri, 25 Dec 2020 14:38:29 +0000 (15:38 +0100)]
tape: fix non-rewinding tape device check

3 years agotape: minor cleanups
Dietmar Maurer [Fri, 25 Dec 2020 12:45:26 +0000 (13:45 +0100)]
tape: minor cleanups

3 years agotape: expose check_tape_is_linux_tape_device
Dietmar Maurer [Thu, 24 Dec 2020 14:51:49 +0000 (15:51 +0100)]
tape: expose check_tape_is_linux_tape_device

3 years agotape: cleanup - factor out open_linux_tape_device
Dietmar Maurer [Thu, 24 Dec 2020 10:24:45 +0000 (11:24 +0100)]
tape: cleanup - factor out open_linux_tape_device

3 years agofix build depends
Dietmar Maurer [Wed, 23 Dec 2020 10:54:44 +0000 (11:54 +0100)]
fix build depends

3 years agotape: return media usage info with status command
Dietmar Maurer [Wed, 23 Dec 2020 10:24:34 +0000 (11:24 +0100)]
tape: return media usage info with status command

3 years agotape: implement binding for libsgutils2
Dietmar Maurer [Wed, 23 Dec 2020 08:44:53 +0000 (09:44 +0100)]
tape: implement binding for libsgutils2

So that we can read cartridge memory without calling "sg_raw". In future,
we may need further low level command to control the tape..

3 years agohttp_client: add timeouts for critical connects
Stefan Reiter [Mon, 21 Dec 2020 13:56:11 +0000 (14:56 +0100)]
http_client: add timeouts for critical connects

Use timeout futures for sections that might hang in certain error
conditions. This is mostly intended to be used as a safeguard, not a
first line of defense - i.e. best-effort avoidance of total hangs.

Not every future used for the HttpClient/H2Client is changed, only those
where a quick response is to be expected. For example, the response
reading futures are left alone, so data transfer is never capped with
timeout, only the initial server connect.

It is also used for upgrading to H2 connections, as that can take a long
time on overloaded servers.

Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
3 years agodepend on proxmox 0.9.1
Dietmar Maurer [Tue, 22 Dec 2020 12:30:41 +0000 (13:30 +0100)]
depend on proxmox 0.9.1

3 years agotape: add drive status api
Dietmar Maurer [Tue, 22 Dec 2020 09:42:22 +0000 (10:42 +0100)]
tape: add drive status api

3 years agotape: rename 'mam' api to 'cartridge-memory'
Dietmar Maurer [Tue, 22 Dec 2020 08:27:34 +0000 (09:27 +0100)]
tape: rename 'mam' api to 'cartridge-memory'

3 years agodepend on proxmox 0.9.0
Dietmar Maurer [Tue, 22 Dec 2020 07:52:24 +0000 (08:52 +0100)]
depend on proxmox 0.9.0

3 years agotests: verify-api: check AllOf schemas
Wolfgang Bumiller [Fri, 18 Dec 2020 11:26:08 +0000 (12:26 +0100)]
tests: verify-api: check AllOf schemas

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
3 years agoadaptions for proxmox 0.9 and proxmox-api-macro 0.3
Wolfgang Bumiller [Fri, 18 Dec 2020 11:26:07 +0000 (12:26 +0100)]
adaptions for proxmox 0.9 and proxmox-api-macro 0.3

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
3 years agotape: update user docu
Dietmar Maurer [Mon, 21 Dec 2020 11:13:35 +0000 (12:13 +0100)]
tape: update user docu

3 years agotape: add command to read cartridge memory (MAM)
Dietmar Maurer [Mon, 21 Dec 2020 11:11:52 +0000 (12:11 +0100)]
tape: add command to read cartridge memory (MAM)

Thsi add an additional dependency to sg3-utils (small).

3 years agotape: update user docu - howto label tapes
Dietmar Maurer [Sun, 20 Dec 2020 09:41:40 +0000 (10:41 +0100)]
tape: update user docu - howto label tapes

3 years agotape: update user docu
Dietmar Maurer [Sun, 20 Dec 2020 08:16:09 +0000 (09:16 +0100)]
tape: update user docu

3 years agoadd LTO barcode generator App
Dietmar Maurer [Sat, 19 Dec 2020 16:39:48 +0000 (17:39 +0100)]
add LTO barcode generator App

3 years agotape: update user docu
Dietmar Maurer [Sat, 19 Dec 2020 15:56:54 +0000 (16:56 +0100)]
tape: update user docu

3 years agotape: update user docu
Dietmar Maurer [Sat, 19 Dec 2020 14:13:38 +0000 (15:13 +0100)]
tape: update user docu

3 years agotape: start user documentation
Dietmar Maurer [Sat, 19 Dec 2020 10:14:56 +0000 (11:14 +0100)]
tape: start user documentation

3 years agocleanup: rename mtfsf into forward_space_count_files
Dietmar Maurer [Fri, 18 Dec 2020 15:57:49 +0000 (16:57 +0100)]
cleanup: rename mtfsf into forward_space_count_files

3 years agotape: add tape backup api
Dietmar Maurer [Fri, 18 Dec 2020 14:32:12 +0000 (15:32 +0100)]
tape: add tape backup api

3 years agotape: add PoolWriter
Dietmar Maurer [Fri, 18 Dec 2020 14:27:44 +0000 (15:27 +0100)]
tape: add PoolWriter

3 years agotape: use SnapshotReader to create snapshot archive
Dietmar Maurer [Fri, 18 Dec 2020 11:10:31 +0000 (12:10 +0100)]
tape: use SnapshotReader to create snapshot archive

3 years agotape: fix write_media_set_label - move to correct position
Dietmar Maurer [Fri, 18 Dec 2020 11:07:22 +0000 (12:07 +0100)]
tape: fix write_media_set_label - move to correct position

3 years agotools/daemon: improve reload behaviour
Dominik Csapak [Thu, 17 Dec 2020 14:50:18 +0000 (15:50 +0100)]
tools/daemon: improve reload behaviour

it seems that sometimes, the child process signal gets handled
before the parent process signal. Systemd then ignores the
childs signal (finished reloading) and only after going into
reloading state because of the parent. this will never finish.

Instead, wait for the state to change to 'reloading' after sending
that signal in the parent, an only fork afterwards. This way
we ensure that systemd knows about the reloading before actually trying
to do it.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-By: Fabian Ebner <f.ebner@proxmox.com>
3 years agotape: MediaPool::with_config() - remove name parameter
Dietmar Maurer [Fri, 18 Dec 2020 07:14:24 +0000 (08:14 +0100)]
tape: MediaPool::with_config() - remove name parameter

Not required, because config already contains the pool name.

3 years agotape: return current_file_number as u64
Dietmar Maurer [Fri, 18 Dec 2020 06:44:50 +0000 (07:44 +0100)]
tape: return current_file_number as u64

3 years agotools/process_locker: Decrement writer count in drop handler
Dominik Csapak [Thu, 17 Dec 2020 14:33:31 +0000 (15:33 +0100)]
tools/process_locker: Decrement writer count in drop handler

of ProcessLockSharedGuard.

We use a counter to determine if we can unlock the file again, but
we never actually decremented the writer count, so we held the
lock forever.

This fixes the issue that we could not start a garbage collect after
a reload, as long as the old process is still running, even when that
process has no active backup anymore but another long running task
(e.g. file download, terminal, etc.).

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
3 years agoacl: rustfmt module
Fabian Grünbichler [Thu, 17 Dec 2020 14:27:45 +0000 (15:27 +0100)]
acl: rustfmt module

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
3 years agoacl: reformat privileges
Fabian Grünbichler [Thu, 17 Dec 2020 14:27:44 +0000 (15:27 +0100)]
acl: reformat privileges

for better readability, and tell rustfmt to leave those definitions
alone.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
3 years agoacl: add docs and adapt visibility
Fabian Grünbichler [Thu, 17 Dec 2020 14:27:43 +0000 (15:27 +0100)]
acl: add docs and adapt visibility

document all public things, add some doc links and make some
previously-public things only available for test cases or within the
crate:

previously public, now private:
- AclTreeNode::extract_user_roles (we have extract_roles())
- AclTreeNode::extract_group_roles (same)
- AclTreeNode::delete_group_role (exists on AclTree)
- AclTreeNode::delete_user_role (same)
- AclTreeNode::insert_group_role (same)
- AclTreeNode::insert_user_role (same)
- AclTree::write_config (we have save_config())
- AclTree::load (we have config()/cached_config())

previously public, now crate-internal:
- AclTree::from_raw (only used by tests)
- split_acl_path (used by some test binaries)

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
3 years agotape: add helper to read snapshot contents
Dietmar Maurer [Thu, 17 Dec 2020 12:05:00 +0000 (13:05 +0100)]
tape: add helper to read snapshot contents

- lock the snapshot for reading
- use openat to open files
- provides an iterator over all chunks

3 years agoKeyConfig: bail on wrong fingerprint
Fabian Grünbichler [Thu, 17 Dec 2020 09:53:21 +0000 (10:53 +0100)]
KeyConfig: bail on wrong fingerprint

instead of just logging the error. this should never happen in practice
unless someone is messing with the keyfile, in which case, it's better
to abort.

update tests accordingly (wrong fingerprint should fail, no fingerprint
should get the expected one).

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
3 years agotape: add code to write backup snapshot files (without chunks) to tape
Dietmar Maurer [Thu, 17 Dec 2020 07:28:47 +0000 (08:28 +0100)]
tape: add code to write backup snapshot files (without chunks) to tape

3 years agotape: cleanup MediaCatalog
Dietmar Maurer [Thu, 17 Dec 2020 07:04:56 +0000 (08:04 +0100)]
tape: cleanup MediaCatalog

3 years agoKeyConfig: always calculate fingerprint
Fabian Grünbichler [Wed, 16 Dec 2020 13:41:11 +0000 (14:41 +0100)]
KeyConfig: always calculate fingerprint

and warn if stored and calculated fingerprint don't match.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
3 years agoKeyConfig: add encrypt/decrypt test
Fabian Grünbichler [Wed, 16 Dec 2020 13:41:10 +0000 (14:41 +0100)]
KeyConfig: add encrypt/decrypt test

the RSA key and the encryption key itself are hard-coded to avoid
stalling the test runs because of lack of entropy, they have no special
significance otherwise.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
3 years agodocs: replace openssl command with client
Fabian Grünbichler [Wed, 16 Dec 2020 13:41:09 +0000 (14:41 +0100)]
docs: replace openssl command with client

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
3 years agoclient: add 'import-with-master-key' command
Fabian Grünbichler [Wed, 16 Dec 2020 13:41:08 +0000 (14:41 +0100)]
client: add 'import-with-master-key' command

to import an encrypted encryption key using a master key.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
3 years agokey: move RSA-encryption to KeyConfig
Fabian Grünbichler [Wed, 16 Dec 2020 13:41:07 +0000 (14:41 +0100)]
key: move RSA-encryption to KeyConfig

since that is what gets encrypted, and not a CryptConfig.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
3 years agofix #3197: skip fingerprint check when restoring key
Fabian Grünbichler [Wed, 16 Dec 2020 13:41:06 +0000 (14:41 +0100)]
fix #3197: skip fingerprint check when restoring key

when restoring an encrypted key, the original one is obviously not
available to check the fingerprint with.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
3 years agomaster key: store blob name in constant
Fabian Grünbichler [Wed, 16 Dec 2020 13:41:05 +0000 (14:41 +0100)]
master key: store blob name in constant

since we will use it in more than one place.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
3 years agotape: remove MediaLabelInfo, use MediaId instead
Dietmar Maurer [Wed, 16 Dec 2020 12:27:53 +0000 (13:27 +0100)]
tape: remove MediaLabelInfo, use MediaId instead

The additional content_uuid was quite useless...

3 years agoupdate pxar dependency to 0.6.2
Thomas Lamprecht [Wed, 16 Dec 2020 12:13:31 +0000 (13:13 +0100)]
update pxar dependency to 0.6.2

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 years agotape: improve docu
Dietmar Maurer [Wed, 16 Dec 2020 11:43:51 +0000 (12:43 +0100)]
tape: improve docu

3 years agotape: improve docu
Dietmar Maurer [Wed, 16 Dec 2020 11:23:52 +0000 (12:23 +0100)]
tape: improve docu

3 years agotape: add chunk archive reader/writer
Dietmar Maurer [Wed, 16 Dec 2020 11:08:34 +0000 (12:08 +0100)]
tape: add chunk archive reader/writer

3 years agotape: cleanup MediaLocation type for direct use with API
Dietmar Maurer [Wed, 16 Dec 2020 09:45:58 +0000 (10:45 +0100)]
tape: cleanup MediaLocation type for direct use with API

3 years agodocs: prune-sim: folluwp: add missing semicolon
Thomas Lamprecht [Wed, 16 Dec 2020 09:08:08 +0000 (10:08 +0100)]
docs: prune-sim: folluwp: add missing semicolon

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 years agotape: add magic number to identify media catalog files
Dietmar Maurer [Wed, 16 Dec 2020 07:59:27 +0000 (08:59 +0100)]
tape: add magic number to identify media catalog files

3 years agoprune sim: correctly keep track of already included backups
Fabian Ebner [Mon, 14 Dec 2020 15:04:53 +0000 (15:04 +0000)]
prune sim: correctly keep track of already included backups

This needs to happen in a separate loop, because some time intervals are not
subsets of others, i.e. weeks and months. Previously, with a daily backup
schedule, having:
* a backup on Sun, 06 Dec 2020 kept by keep-daily
* a backup on Sun, 29 Nov 2020 kept by keep-weekly
would lead to the backup on Mon, 30 Nov 2020 to be selected for keep-monthly,
because the iteration did not yet reach the backup on Sun, 29 Nov 2020 that
would mark November as being covered.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
3 years agofollowup: use arrow function for sorting
Thomas Lamprecht [Tue, 15 Dec 2020 12:45:36 +0000 (13:45 +0100)]
followup: use arrow function for sorting

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 years agoprune sim: fix #3192: by fixing usage of sort()
Fabian Ebner [Tue, 15 Dec 2020 12:01:33 +0000 (13:01 +0100)]
prune sim: fix #3192: by fixing usage of sort()

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
3 years agotape: add MediaCatalog implementation
Dietmar Maurer [Tue, 15 Dec 2020 12:13:44 +0000 (13:13 +0100)]
tape: add MediaCatalog implementation