]> git.proxmox.com Git - pve-common.git/blobdiff - src/PVE/JSONSchema.pm
JSONSchema: allow to import parse_property_string
[pve-common.git] / src / PVE / JSONSchema.pm
index d332a3dd1c21dbbd8c86721045005c665e4b4461..84fb694fcc1b2ce920036cdda2955667c1c229f5 100644 (file)
@@ -16,8 +16,9 @@ use Data::Dumper;
 use base 'Exporter';
 
 our @EXPORT_OK = qw(
-register_standard_option
 get_standard_option
+parse_property_string
+register_standard_option
 );
 
 # Note: This class implements something similar to JSON schema, but it is not 100% complete.
@@ -169,7 +170,7 @@ register_format('pve-configid', \&pve_verify_configid);
 sub pve_verify_configid {
     my ($id, $noerr) = @_;
 
-    if ($id !~ m/^[a-z][a-z0-9_]+$/i) {
+    if ($id !~ m/^[a-z][a-z0-9_-]+$/i) {
        return undef if $noerr;
        die "invalid configuration ID '$id'\n";
     }
@@ -235,33 +236,30 @@ sub parse_idmap {
        } elsif ($entry =~ m/^([^:]+):([^:]+)$/) {
            my ($source, $target) = ($1, $2);
            eval {
-               PVE::JSONSchema::check_format($idformat, $source, '');
-               PVE::JSONSchema::check_format($idformat, $target, '');
+               check_format($idformat, $source, '');
+               check_format($idformat, $target, '');
            };
-           die "entry '$entry' contains invalid ID - $@\n"
-               if $@;
+           die "entry '$entry' contains invalid ID - $@\n" if $@;
 
            die "duplicate mapping for source '$source'\n"
-               if $map->{entries}->{$source};
+               if exists $map->{entries}->{$source};
 
            $map->{entries}->{$source} = $target;
        } else {
            eval {
-               PVE::JSONSchema::check_format($idformat, $entry);
+               check_format($idformat, $entry);
            };
-
-           die "entry '$entry' contains invalid ID - $@\n"
-               if $@;
+           die "entry '$entry' contains invalid ID - $@\n" if $@;
 
            die "default target ID can only be provided once\n"
-               if $map->{default};
+               if exists $map->{default};
 
            $map->{default} = $entry;
        }
     }
 
     die "identity mapping cannot be combined with other mappings\n"
-       if $map->{identity} && ($map->{default} || $map->{entries});
+       if $map->{identity} && ($map->{default} || exists $map->{entries});
 
     return $map;
 }