[pve-devel] [PATCH qemu-server v2 8/8] return error from guest-agent
    Thomas Lamprecht 
    t.lamprecht at proxmox.com
       
    Tue Feb 20 09:34:48 CET 2018
    
    
  
On 2/15/18 2:04 PM, Dominik Csapak wrote:
> in case of e.g. a non-existant guest-agent command, it would return
> { error: {someerrorobject} }
> but we did only include the 'return' property
> 
> in case we do not get any and the error property is set,
> return that
> 
> i looked at all the paths were we use the QMPClient, and either
> we have our own callback for the result,
> or we do not rely on the result being empty upon an error, so this
> should not break anything
> 
> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> ---
> new in v2
>  PVE/QMPClient.pm | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/PVE/QMPClient.pm b/PVE/QMPClient.pm
> index 9e32533..e08909b 100755
> --- a/PVE/QMPClient.pm
> +++ b/PVE/QMPClient.pm
> @@ -92,6 +92,8 @@ sub cmd {
>      my $callback = sub {
>  	my ($vmid, $resp) = @_;
>  	$result = $resp->{'return'};
> +	# return error message if we have one and no result
This comment just states what is readable from the code below,
so maybe it's not needed (''what' vs. 'why' comment)
> +	$result = { error => $resp->{'error'} } if !$result && $resp->{'error'};
Needs a defined check for $result, else an empty response gets overwritten.
Also, error is always true with this check - its a hash ref, which is also
true if empty.
So maybe just use:
    $result = { error => $resp->{error} } if !defined($result);
or 
$result = $resp->{result} // { error => $resp->{error} };
just as an idea...
>      };
>  
>      die "no command specified" if !($cmd && $cmd->{execute});
> 
    
    
More information about the pve-devel
mailing list