JSONSchema: verify comma-separated property strings

This commit is contained in:
Wolfgang Bumiller 2015-09-22 13:45:42 +02:00 committed by Dietmar Maurer
parent 095b88fd51
commit 2f9e609a46

View File

@ -396,8 +396,9 @@ PVE::JSONSchema::register_standard_option('pve-startup-order', {
}); });
sub check_format { sub check_format {
my ($format, $value) = @_; my ($format, $value, $path) = @_;
return parse_property_string($format, $value, $path) if ref($format) eq 'HASH';
return if $format eq 'regex'; return if $format eq 'regex';
if ($format =~ m/^(.*)-a?list$/) { if ($format =~ m/^(.*)-a?list$/) {
@ -427,6 +428,7 @@ sub check_format {
die "undefined format '$format'\n" if !$code; die "undefined format '$format'\n" if !$code;
return parse_property_string($code, $value, $path) if ref($code) eq 'HASH';
&$code($value); &$code($value);
} }
} }
@ -728,7 +730,7 @@ sub check_prop {
} else { } else {
if (my $format = $schema->{format}) { if (my $format = $schema->{format}) {
eval { check_format($format, $value); }; eval { check_format($format, $value, $path); };
if ($@) { if ($@) {
add_error($errors, $path, "invalid format - $@"); add_error($errors, $path, "invalid format - $@");
return; return;
@ -915,7 +917,7 @@ my $default_schema_noref = {
description => "indicates a required property or a schema that must be validated if this property is present", description => "indicates a required property or a schema that must be validated if this property is present",
}, },
format => { format => {
type => "string", type => [ "string", "object" ],
optional => 1, optional => 1,
description => "This indicates what format the data is among some predefined formats which may include:\n\ndate - a string following the ISO format \naddress \nschema - a schema definition object \nperson \npage \nhtml - a string representing HTML", description => "This indicates what format the data is among some predefined formats which may include:\n\ndate - a string following the ISO format \naddress \nschema - a schema definition object \nperson \npage \nhtml - a string representing HTML",
}, },