]> git.proxmox.com Git - pve-storage.git/commitdiff
volume export/import: allow uppercase letters
authorFabian Ebner <f.ebner@proxmox.com>
Mon, 12 Apr 2021 11:37:15 +0000 (13:37 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Mon, 12 Apr 2021 12:52:29 +0000 (14:52 +0200)
Bug reported in the community forum[0].

Currently, it's possible to break replication by:
1. have an existing snapshot whose name contains an uppercase letter
2. set up a replication job and run it
3. rollback to the existing snapshot
4. replicate again -> fails

The failure occurs, because after step 3, the most recent common snapshot is the
previously existing one and currently no uppercase letters are allowed for
export/import.

The pve-snapshot-name option uses the CONFIGID_RE
    qr/[a-z][a-z0-9_-]+/i
so it cannot be used here, because it would not allow for e.g. '__migrate__'.
Simply allow uppercase letters, to be backwards compatible and allow all
possible pve-snapshot-name values.

There is still an issue if there also was state volume, but that's a different
bug[1].

[0]: https://forum.proxmox.com/threads/solved-migration-error-base-value-does-not-match-the-regex-pattern.85946/
[1]: https://bugzilla.proxmox.com/show_bug.cgi?id=3111

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
PVE/CLI/pvesm.pm

index 3594774efb169ad1a8a8df0348313b797554be24..7b46897e5f81421134d90d38cf37b84e036e886c 100755 (executable)
@@ -244,14 +244,14 @@ __PACKAGE__->register_method ({
            base => {
                description => "Snapshot to start an incremental stream from",
                type => 'string',
-               pattern => qr/[a-z0-9_\-]{1,40}/,
+               pattern => qr/[a-z0-9_\-]{1,40}/i,
                maxLength => 40,
                optional => 1,
            },
            snapshot => {
                description => "Snapshot to export",
                type => 'string',
-               pattern => qr/[a-z0-9_\-]{1,40}/,
+               pattern => qr/[a-z0-9_\-]{1,40}/i,
                maxLength => 40,
                optional => 1,
            },
@@ -321,7 +321,7 @@ __PACKAGE__->register_method ({
            base => {
                description => "Base snapshot of an incremental stream",
                type => 'string',
-               pattern => qr/[a-z0-9_\-]{1,40}/,
+               pattern => qr/[a-z0-9_\-]{1,40}/i,
                maxLength => 40,
                optional => 1,
            },
@@ -335,7 +335,7 @@ __PACKAGE__->register_method ({
            'delete-snapshot' => {
                description => "A snapshot to delete on success",
                type => 'string',
-               pattern => qr/[a-z0-9_\-]{1,80}/,
+               pattern => qr/[a-z0-9_\-]{1,80}/i,
                maxLength => 80,
                optional => 1,
            },