diff --git a/Makefile b/Makefile index 2f612e0..3c04f4f 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ RELEASE=2.3 VERSION=2.3 PACKAGE=libpve-storage-perl -PKGREL=4 +PKGREL=5 DESTDIR= PREFIX=/usr diff --git a/PVE/API2/Storage/Content.pm b/PVE/API2/Storage/Content.pm index 7a8249c..ac784bd 100644 --- a/PVE/API2/Storage/Content.pm +++ b/PVE/API2/Storage/Content.pm @@ -249,7 +249,7 @@ __PACKAGE__->register_method ({ method => 'DELETE', description => "Delete volume", permissions => { - description => "You need 'Datastore.Allocate' privilege on the storage ('Datastore.AllocateSpace' is not enough).", + description => "You need 'Datastore.Allocate' privilege on the storage (or 'Datastore.AllocateSpace' for backup volumes if you have VM.Backup privilege on the VM).", user => 'all', }, protected => 1, @@ -272,12 +272,18 @@ __PACKAGE__->register_method ({ my $rpcenv = PVE::RPCEnvironment::get(); my $authuser = $rpcenv->get_user(); - my ($volid, $storeid) = &$real_volume_id($param->{storage}, $param->{volume}); - - $rpcenv->check($authuser, "/storage/$storeid", ['Datastore.Allocate']); - my $cfg = cfs_read_file('storage.cfg'); + my ($volid, $storeid) = &$real_volume_id($param->{storage}, $param->{volume}); + + my ($path, $ownervm, $vtype) = PVE::Storage::path($cfg, $volid); + if ($vtype eq 'backup' && $ownervm) { + $rpcenv->check($authuser, "/storage/$storeid", ['Datastore.AllocateSpace']); + $rpcenv->check($authuser, "/vms/$ownervm", ['VM.Backup']); + } else { + $rpcenv->check($authuser, "/storage/$storeid", ['Datastore.Allocate']); + } + PVE::Storage::vdisk_free ($cfg, $volid); return undef; diff --git a/changelog.Debian b/changelog.Debian index 5a3022a..2cecccb 100644 --- a/changelog.Debian +++ b/changelog.Debian @@ -1,3 +1,11 @@ +libpve-storage-perl (2.3-5) unstable; urgency=low + + * Allow removal of backup volumes if the user has + Datastore.AllocateSpace privilege on the storage and VM.Backup + privilege on the VM + + -- Proxmox Support Team Fri, 01 Mar 2013 06:03:24 +0100 + libpve-storage-perl (2.3-4) unstable; urgency=low * rbd: rework pool - username - auth_supported options