X-Git-Url: https://git.proxmox.com/?p=pve-common.git;a=blobdiff_plain;f=src%2FPVE%2FRESTHandler.pm;h=961b2532c085fee7972d149d34aa21e34658d270;hp=fc220a6018481d48bc2ab75b8aa39eb3728964b2;hb=461273044692eed60788cf2ef9b711206851b029;hpb=534d42709838dce93d7e4258cf84dcb816125c40 diff --git a/src/PVE/RESTHandler.pm b/src/PVE/RESTHandler.pm index fc220a6..961b253 100644 --- a/src/PVE/RESTHandler.pm +++ b/src/PVE/RESTHandler.pm @@ -34,7 +34,7 @@ sub api_clone_schema { my $pd = $d->{$p}; if ($p =~ m/^([a-z]+)(\d+)$/) { my ($name, $idx) = ($1, $2); - if ($idx == 0) { + if ($idx == 0 && defined($d->{"${name}1"})) { $p = "${name}[n]"; } elsif (defined($d->{"${name}0"})) { next; # only handle once for -xx0, but only if -xx0 exists @@ -249,31 +249,6 @@ sub register_method { push @{$method_registry->{$self}}, $info; } -sub register_page_formatter { - my ($self, %config) = @_; - - my $format = $config{format} || - die "missing format"; - - my $path = $config{path} || - die "missing path"; - - my $method = $config{method} || - die "missing method"; - - my $code = $config{code} || - die "missing formatter code"; - - my $uri_param = {}; - my ($handler, $info) = $self->find_handler($method, $path, $uri_param); - die "unabe to find handler for '$method: $path'" if !($handler && $info); - - die "duplicate formatter for '$method: $path'" - if $info->{formatter} && $info->{formatter}->{$format}; - - $info->{formatter}->{$format} = $code; -} - sub DESTROY {}; # avoid problems with autoload sub AUTOLOAD { @@ -417,7 +392,7 @@ sub handle { # $display_name: for example "-$name" of "<$name>", pass undef to use "$name:" # $phash: json schema property hash # $format: 'asciidoc', 'short', 'long' or 'full' -# $style: 'config', 'arg' or 'fixed' +# $style: 'config', 'config-sub', 'arg' or 'fixed' my $get_property_description = sub { my ($name, $style, $phash, $format, $hidepw, $fileparams) = @_; @@ -434,7 +409,7 @@ my $get_property_description = sub { chomp $descr; - my $type = PVE::JSONSchema::schema_get_type_text($phash); + my $type = PVE::JSONSchema::schema_get_type_text($phash, $style); if ($hidepw && $name eq 'password') { $type = ''; @@ -443,7 +418,7 @@ my $get_property_description = sub { if ($fileparams && $type eq 'string') { foreach my $elem (@$fileparams) { if ($name eq $elem) { - $type = 'filepath'; + $type = ''; last; } } @@ -458,7 +433,7 @@ my $get_property_description = sub { } elsif ($style eq 'arg') { $res .= "`-$name` "; } elsif ($style eq 'fixed') { - $res .= "`<$name>` "; + $res .= "`<$name>`: "; } else { die "unknown style '$style'"; } @@ -466,7 +441,7 @@ my $get_property_description = sub { $res .= "`$type` " if $type; if (defined(my $dv = $phash->{default})) { - $res .= "(default=`$dv`)"; + $res .= "('default =' `$dv`)"; } if ($style eq 'config-sub') { @@ -591,7 +566,7 @@ sub usage_str { if ($k =~ m/^([a-z]+)(\d+)$/) { my ($name, $idx) = ($1, $2); next if $idx_param->{$name}; - if ($idx == 0) { + if ($idx == 0 && defined($prop->{"${name}1"})) { $idx_param->{$name} = 1; $base = "${name}[n]"; } @@ -656,7 +631,7 @@ sub dump_properties { if ($k =~ m/^([a-z]+)(\d+)$/) { my ($name, $idx) = ($1, $2); next if $idx_param->{$name}; - if ($idx == 0) { + if ($idx == 0 && defined($prop->{"${name}1"})) { $idx_param->{$name} = 1; $base = "${name}[n]"; }