From 0066560da4d228f594bd617219c70f1d289f56a8 Mon Sep 17 00:00:00 2001 From: Fiona Ebner Date: Fri, 4 Apr 2025 15:31:37 +0200 Subject: [PATCH] add storage_has_feature() helper function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Which looks up whether a storage supports a given feature in its 'plugindata'. This is intentionally kept simple and not implemented as a plugin method for now. Should it ever become more complex requiring plugins to override the default implementation, it can later be changed to a method. Suggested-by: Fabian Grünbichler Signed-off-by: Fiona Ebner Tested-by: Wolfgang Bumiller Reviewed-by: Wolfgang Bumiller Link: https://lore.proxmox.com/20250404133204.239783-3-f.ebner@proxmox.com --- src/PVE/Storage.pm | 8 ++++++++ src/PVE/Storage/Plugin.pm | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/PVE/Storage.pm b/src/PVE/Storage.pm index c5d4ff8..8cbfb4f 100755 --- a/src/PVE/Storage.pm +++ b/src/PVE/Storage.pm @@ -213,6 +213,14 @@ sub storage_check_enabled { return storage_check_node($cfg, $storeid, $node, $noerr); } +sub storage_has_feature { + my ($cfg, $storeid, $feature) = @_; + + my $scfg = storage_config($cfg, $storeid); + + return PVE::Storage::Plugin::storage_has_feature($scfg->{type}, $feature); +} + # storage_can_replicate: # return true if storage supports replication # (volumes allocated with vdisk_alloc() has replication feature) diff --git a/src/PVE/Storage/Plugin.pm b/src/PVE/Storage/Plugin.pm index 6e23fec..0efb7d2 100644 --- a/src/PVE/Storage/Plugin.pm +++ b/src/PVE/Storage/Plugin.pm @@ -245,6 +245,16 @@ sub dirs_hash_to_string { return join(',', map { "$_=$hash->{$_}" } sort keys %$hash); } +sub storage_has_feature { + my ($type, $feature) = @_; + + my $data = $defaultData->{plugindata}->{$type}; + if (my $features = $data->{features}) { + return $features->{$feature}; + } + return; +} + sub default_format { my ($scfg) = @_;