[pve-devel] [PATCH pve-storage v2 3/5] tree-wide: make use of content type assertion helper

Daniel Kral d.kral at proxmox.com
Tue Feb 11 17:07:57 CET 2025


Make any code path with an existent content type assertion use the newly
introduced content type assertion helper.

As those code paths must perform actions on the storage anyway, the
`storage_check_enabled` in the helper subroutine adds an additional
precondition check without breaking the existing APIs with a new error.

Signed-off-by: Daniel Kral <d.kral at proxmox.com>
---
changes since v1:
- new!

 src/PVE/API2/Storage/Status.pm | 6 ++----
 src/PVE/Storage.pm             | 3 ++-
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/PVE/API2/Storage/Status.pm b/src/PVE/API2/Storage/Status.pm
index c854b53..e5652f4 100644
--- a/src/PVE/API2/Storage/Status.pm
+++ b/src/PVE/API2/Storage/Status.pm
@@ -478,8 +478,7 @@ __PACKAGE__->register_method ({
 	    raise_param_exc({ content => "upload content type '$content' not allowed" });
 	}
 
-	die "storage '$storage' does not support '$content' content\n"
-	    if !$scfg->{content}->{$content};
+	PVE::Storage::assert_content_type_supported($cfg, $storage, $content, $node);
 
 	my $dest = "$path/$filename";
 	my $dirname = dirname($dest);
@@ -660,8 +659,7 @@ __PACKAGE__->register_method({
 
 	my ($content, $url) = $param->@{'content', 'url'};
 
-	die "storage '$storage' is not configured for content-type '$content'\n"
-	    if !$scfg->{content}->{$content};
+	PVE::Storage::assert_content_type_supported($cfg, $storage, $content, $node);
 
 	my $filename = PVE::Storage::normalize_content_filename($param->{filename});
 
diff --git a/src/PVE/Storage.pm b/src/PVE/Storage.pm
index ca69cd6..0134893 100755
--- a/src/PVE/Storage.pm
+++ b/src/PVE/Storage.pm
@@ -1816,7 +1816,8 @@ sub prune_backups {
     my ($cfg, $storeid, $keep, $vmid, $type, $dryrun, $logfunc) = @_;
 
     my $scfg = storage_config($cfg, $storeid);
-    die "storage '$storeid' does not support backups\n" if !$scfg->{content}->{backup};
+
+    PVE::Storage::assert_content_type_supported($cfg, $storeid, "backup");
 
     if (!defined($keep)) {
 	die "no prune-backups options configured for storage '$storeid'\n"
-- 
2.39.5





More information about the pve-devel mailing list