From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id EA8701FF146 for ; Tue, 28 Apr 2026 17:23:03 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id C5843188BD; Tue, 28 Apr 2026 17:23:03 +0200 (CEST) Date: Tue, 28 Apr 2026 17:22:23 +0200 From: Wolfgang Bumiller To: "Max R. Carrara" Subject: Re: [PATCH pve-storage v1 53/54] storage api: mark old public regexes for removal, bump APIVER & APIAGE Message-ID: References: <20260422111322.257380-1-m.carrara@proxmox.com> <20260422111322.257380-54-m.carrara@proxmox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260422111322.257380-54-m.carrara@proxmox.com> X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1777389647293 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.087 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 Message-ID-Hash: JPOEE3JWESK7QS65GY5TUSXMKVPXDPY6 X-Message-ID-Hash: JPOEE3JWESK7QS65GY5TUSXMKVPXDPY6 X-MailFrom: w.bumiller@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: pve-devel@lists.proxmox.com X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: There's no need to do 2 API bumps in 1 series. Please just add the deprecations to version 14 within the series, and do that within the patches which actually cause the deprecations. On Wed, Apr 22, 2026 at 01:13:19PM +0200, Max R. Carrara wrote: > Mark all unused regular expressions that were phased out during the > previous refactors and changes for removal on the next APIAGE reset. > > Instead, the parsing functions in `PVE::Storage::Common::Parse` should > be used instead. > > Signed-off-by: Max R. Carrara > --- > ApiChangeLog | 16 ++++++++++++++++ > src/PVE/Storage.pm | 10 ++++++++-- > src/PVE/Storage/Plugin.pm | 1 + > 3 files changed, 25 insertions(+), 2 deletions(-) > > diff --git a/ApiChangeLog b/ApiChangeLog > index d1d3e1c3..efcfef14 100644 > --- a/ApiChangeLog > +++ b/ApiChangeLog > @@ -6,6 +6,22 @@ without breaking anything unaware of it.) > > Future changes should be documented in here. > > +## Version 15: > + > +* Remove the following regular expressions: > + * `$PVE::Storage::ISO_EXT_RE_0` (`iso` volume type) > + * `$PVE::Storage::VZTMPL_EXT_RE_1` (`vztmpl` volume type) > + * `$PVE::Storage::BACKUP_EXT_RE_2` (`backup` volume type) > + * `$PVE::Storage::IMPORT_EXT_RE_1` (`import` volume type) > + * `$PVE::Storage::UPLOAD_IMPORT_EXT_RE_1` (`import` volume type) > + * `$PVE::Storage::OVA_CONTENT_RE_1` (`import` volume type) > + > + These regular expressions were mostly used for parsing file paths and volume > + names corresponding to their volume types, noted in parentheses above. > + > + Instead, The parsing functions in `PVE::Storage::Common::Parse` should be > + used. > + > ## Version 14: > > * Replace plugin helper `get_vtype_subdirs()` with standalone helper subroutine > diff --git a/src/PVE/Storage.pm b/src/PVE/Storage.pm > index 199a6375..3db34b68 100755 > --- a/src/PVE/Storage.pm > +++ b/src/PVE/Storage.pm > @@ -48,11 +48,11 @@ use PVE::Storage::BTRFSPlugin; > use PVE::Storage::ESXiPlugin; > > # Storage API version. Increment it on changes in storage API interface. > -use constant APIVER => 14; > +use constant APIVER => 15; > # 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 => 5; > +use constant APIAGE => 6; > > our $KNOWN_EXPORT_FORMATS = ['raw+size', 'tar+size', 'qcow2+size', 'vmdk+size', 'zfs', 'btrfs']; > > @@ -120,19 +120,25 @@ PVE::Storage::Plugin->init(); > # the following REs indicate the number or capture groups via the trailing digit > # CAUTION don't forget to update the digits accordingly after messing with the capture groups > > +# FIXME: remove this regex on the next APIAGE reset. > our $ISO_EXT_RE_0 = qr/\.(?:iso|img)/i; > > +# FIXME: remove this regex on the next APIAGE reset. > our $VZTMPL_EXT_RE_1 = qr/\.(?|(tar)(?!\.)|tar\.(gz|xz|zst|bz2))/i; > > +# FIXME: remove this regex on the next APIAGE reset. > our $BACKUP_EXT_RE_2 = qr/\.(tgz|(?:tar|vma)(?:\.(${\PVE::Storage::Plugin::COMPRESSOR_RE}))?)/; > > +# FIXME: remove this regex on the next APIAGE reset. > our $IMPORT_EXT_RE_1 = qr/\.(ova|ovf|qcow2|raw|vmdk)/; > > +# FIXME: remove this regex on the next APIAGE reset. > our $UPLOAD_IMPORT_EXT_RE_1 = qr/\.(ova|qcow2|raw|vmdk)/; > > our $SAFE_CHAR_CLASS_RE = qr/[a-zA-Z0-9\-\.\+\=\_]/; > our $SAFE_CHAR_WITH_WHITESPACE_CLASS_RE = qr/[ a-zA-Z0-9\-\.\+\=\_]/; > > +# FIXME: remove this regex on the next APIAGE reset. > our $OVA_CONTENT_RE_1 = qr/${SAFE_CHAR_WITH_WHITESPACE_CLASS_RE}+\.(qcow2|raw|vmdk)/; > > # FIXME remove with PVE 9.0, add versioned breaks for pve-manager > diff --git a/src/PVE/Storage/Plugin.pm b/src/PVE/Storage/Plugin.pm > index 3a3e1b62..6e20c519 100644 > --- a/src/PVE/Storage/Plugin.pm > +++ b/src/PVE/Storage/Plugin.pm > @@ -31,6 +31,7 @@ use base qw(PVE::SectionConfig); > > # TODO: Phase out these two constants > use constant KNOWN_COMPRESSION_FORMATS => ('gz', 'lzo', 'zst', 'bz2'); > +# FIXME: remove this regex on the next APIAGE reset. > use constant COMPRESSOR_RE => join('|', KNOWN_COMPRESSION_FORMATS); > > use constant LOG_EXT => ".log"; > -- > 2.47.3 > > > > > --