From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id EC71A1FF16E for <inbox@lore.proxmox.com>; Mon, 31 Mar 2025 15:21:46 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id F049A4FA1; Mon, 31 Mar 2025 15:20:36 +0200 (CEST) From: Fiona Ebner <f.ebner@proxmox.com> To: pve-devel@lists.proxmox.com Date: Mon, 31 Mar 2025 15:19:57 +0200 Message-Id: <20250331132020.105324-15-f.ebner@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250331132020.105324-1-f.ebner@proxmox.com> References: <20250331132020.105324-1-f.ebner@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.040 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment KAM_SHORT 0.001 Use of a URL Shortener for very short URL SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH storage v6 14/37] plugin api: bump api version and age X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> List-Post: <mailto:pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> Changes for version 11: * Allow declaring storage features via plugin data. * Introduce new_backup_provider() plugin method. * Allow declaring sensitive properties via plugin data. See the api changelog file for details. Signed-off-by: Fiona Ebner <f.ebner@proxmox.com> --- ApiChangeLog | 32 ++++++++++++++++++++++++++++++++ src/PVE/Storage.pm | 4 ++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/ApiChangeLog b/ApiChangeLog index 98b5893..987da54 100644 --- a/ApiChangeLog +++ b/ApiChangeLog @@ -6,6 +6,38 @@ without breaking anything unaware of it.) Future changes should be documented in here. +## Version 11: + +* Allow declaring storage features via plugin data + + A new `storage_has_feature()` helper function was added that checks a storage plugin's features. + Plugins can indicate support for certain features in their `plugindata`. The first such feature is + `backup-provider`, see below for more details. To declare support for this feature, return + `features => { 'backup-provider' => 1 }` as part of the plugin data. + +* Introduce new_backup_provider() plugin method + + Proxmox VE now supports a `Backup Provider API` that can be used to implement custom backup + solutions tightly integrated in the Proxmox VE stack. See the `PVE::BackupProvider::Plugin::Base` + module for detailed documentation. A backup provider also needs to implement an associated storage + plugin for user-facing integration in Proxmox VE. Such a plugin needds to opt-in to the + `backup-provider` feature (see above) and implement the new_backup_provider() method, returning a + blessed reference to the backup provider class. The rest of the plugin methods, e.g. listing + content, providing usage information, etc., follow the same API as usual. + +* Allow declaring sensitive properties via plugin data + + A new `sensitive_properties()` helper function was added to get the list of sensitive properties + a plugin uses via the plugin's `plugindata`. The sensitive properties are passed separately from + other properties to the `on_add_hook()` and `on_update_hook()` methods and should not be written + to the storage configuration file directly, but stored in the more restricted + `/etc/pve/priv/storage` directory on the Proxmox Cluster File System. For example, to declare that + a `ssh-private-key` property used by the plugin is sensitive, return + `'sensitive-properties' => { 'ssh-private-key' => 1 }` as part of the plugin data. The list of + sensitive properties was hard-coded previously, as `encryption-key`, `keyring`, `master-pubkey`, + `password`. For backwards compatibility, this list is still used if a plugin doesn't declare its + own sensitive properties. + ## Version 10: * a new `rename_volume` method has been added diff --git a/src/PVE/Storage.pm b/src/PVE/Storage.pm index 7fd97b7..10a4abc 100755 --- a/src/PVE/Storage.pm +++ b/src/PVE/Storage.pm @@ -42,11 +42,11 @@ use PVE::Storage::BTRFSPlugin; use PVE::Storage::ESXiPlugin; # Storage API version. Increment it on changes in storage API interface. -use constant APIVER => 10; +use constant APIVER => 11; # Age is the number of versions we're backward compatible with. # This is like having 'current=APIVER' and age='APIAGE' in libtool, # see https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html -use constant APIAGE => 1; +use constant APIAGE => 2; our $KNOWN_EXPORT_FORMATS = ['raw+size', 'tar+size', 'qcow2+size', 'vmdk+size', 'zfs', 'btrfs']; -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel