From: Fiona Ebner <f.ebner@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>,
Filip Schauer <f.schauer@proxmox.com>
Subject: Re: [pve-devel] [PATCH storage v6 3/7] api: content: support moving backups between path based storages
Date: Thu, 13 Feb 2025 18:21:03 +0100 [thread overview]
Message-ID: <68d023cf-0e18-40ac-b7a2-8402f57d7ac4@proxmox.com> (raw)
In-Reply-To: <20250120112842.36450-4-f.schauer@proxmox.com>
Am 20.01.25 um 12:28 schrieb Filip Schauer:
> This commit adds the "backup+size" export format. When this format is
> used, the data stream starts with metadata of the backup (protected flag
> & notes) followed by the contents of the backup archive.
>
> Signed-off-by: Filip Schauer <f.schauer@proxmox.com>
> ---
> src/PVE/API2/Storage/Content.pm | 15 ++++++++++--
> src/PVE/Storage.pm | 10 +++++++-
> src/PVE/Storage/Plugin.pm | 42 +++++++++++++++++++++++++++++----
> 3 files changed, 60 insertions(+), 7 deletions(-)
>
> diff --git a/src/PVE/API2/Storage/Content.pm b/src/PVE/API2/Storage/Content.pm
> index ac451dc..9ee3c51 100644
> --- a/src/PVE/API2/Storage/Content.pm
> +++ b/src/PVE/API2/Storage/Content.pm
> @@ -548,10 +548,10 @@ __PACKAGE__->register_method ({
>
> my $cfg = PVE::Storage::config();
>
> - my ($vtype) = PVE::Storage::parse_volname($cfg, $src_volid);
> + my ($vtype, undef, $ownervm) = PVE::Storage::parse_volname($cfg, $src_volid);
> die "use pct move-volume or qm disk move" if $vtype eq 'images' || $vtype eq 'rootdir';
> die "moving volume of type '$vtype' not implemented\n"
> - if (!grep { $vtype eq $_ } qw(import iso snippets vztmpl));
> + if (!grep { $vtype eq $_ } qw(backup import iso snippets vztmpl));
>
> my $rpcenv = PVE::RPCEnvironment::get();
> my $user = $rpcenv->get_user();
> @@ -560,10 +560,21 @@ __PACKAGE__->register_method ({
>
> if ($delete) {
> $rpcenv->check($user, "/storage/$src_storeid", ["Datastore.Allocate"]);
> +
> + if ($vtype eq 'backup') {
> + my $src_cfg = PVE::Storage::storage_config($cfg, $src_storeid);
> + my $src_plugin = PVE::Storage::Plugin->lookup($src_cfg->{type});
> + my $protected = $src_plugin->get_volume_attribute($src_cfg, $src_storeid, $volname, 'protected');
I'd prefer this to use the function from the storage module rather than
calling into the plugin itself.
> + die "cannot delete protected backup\n" if $protected;
> + }
> } else {
> $rpcenv->check($user, "/storage/$dst_storeid", ["Datastore.AllocateSpace"]);
> }
>
> + if ($vtype eq 'backup' && $ownervm) {
> + $rpcenv->check($user, "/vms/$ownervm", ['VM.Backup']);
> + }
Don't you just need to pass $ownervm to check_volume_access()? Because
having this check rules out a user with Datastore.Allocate to use the
API if they don't also have the backup permission.
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
next prev parent reply other threads:[~2025-02-13 17:21 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-20 11:28 [pve-devel] [PATCH storage v6 0/7] support moving volumes between storages Filip Schauer
2025-01-20 11:28 ` [pve-devel] [PATCH storage v6 1/7] plugin: allow volume import of iso, snippets, vztmpl and import Filip Schauer
2025-02-13 17:21 ` Fiona Ebner
2025-02-14 9:50 ` Fiona Ebner
2025-01-20 11:28 ` [pve-devel] [PATCH storage v6 2/7] api: content: implement moving a volume between storages Filip Schauer
2025-02-13 17:21 ` Fiona Ebner
2025-01-20 11:28 ` [pve-devel] [PATCH storage v6 3/7] api: content: support moving backups between path based storages Filip Schauer
2025-02-13 17:21 ` Fiona Ebner [this message]
2025-01-20 11:28 ` [pve-devel] [PATCH storage v6 4/7] storage: introduce decompress_archive_into_pipe helper Filip Schauer
2025-02-13 17:21 ` Fiona Ebner
2025-01-20 11:28 ` [pve-devel] [PATCH storage v6 5/7] support moving VMA backups to PBS Filip Schauer
2025-02-13 17:20 ` Fiona Ebner
2025-01-20 11:28 ` [pve-devel] [PATCH storage v6 6/7] pvesm: add a move-volume command Filip Schauer
2025-02-13 17:21 ` Fiona Ebner
2025-01-20 11:28 ` [pve-devel] [PATCH storage v6 7/7] storage migrate: avoid ssh when moving a volume locally Filip Schauer
2025-02-13 17:21 ` Fiona Ebner
2025-02-13 17:23 ` [pve-devel] [PATCH storage v6 0/7] support moving volumes between storages Fiona Ebner
2025-03-11 14:25 ` Filip Schauer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=68d023cf-0e18-40ac-b7a2-8402f57d7ac4@proxmox.com \
--to=f.ebner@proxmox.com \
--cc=f.schauer@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.