On 02/27, jprov...@redhat.com wrote:

ACK. Pushing.

> From: Jan Provaznik <jprov...@redhat.com>
> 
> Error responses from server don't have to contain backend node, only a 
> message.
> For example 401 error response looks like:
> <error status='401' url='/api/instances'>
>   <message>Authentication required</message>
> </error>
> 
> This patch makes sure that dc-client doesn't fail if 'backend' node is not 
> present.
> ---
>  client/lib/deltacloud.rb | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/client/lib/deltacloud.rb b/client/lib/deltacloud.rb
> index c3efcde..a58c280 100644
> --- a/client/lib/deltacloud.rb
> +++ b/client/lib/deltacloud.rb
> @@ -366,10 +366,12 @@ module DeltaCloud
>          DeltaCloud::HTTPError.client_error(response.code)
>        else
>          opts = {
> -          :driver => (xml/'backend').first[:driver],
> -          :provider => (xml/'backend').first[:provider],
>            :params => (xml/'request/param').inject({}) { |r,p| 
> r[:"#{p[:name]}"] = p.text; r }
>          }
> +        if backend_node = xml.at_xpath('/error/backend')
> +          opts[:driver]   = backend_node[:driver]
> +          opts[:provider] = backend_node[:provider]
> +        end
>          backtrace = (xml/'backtrace').empty? ? nil : 
> (xml/'backtrace').first.text.split("\n")[1..10].map { |l| l.strip }
>          DeltaCloud::HTTPError.server_error(xml.root[:status] || 
> response.code,
>                                             (xml/'message').first.text, opts, 
> backtrace)
> -- 
> 1.7.11.7
> 

-- 
Michal Fojtik <mfoj...@redhat.com>
Deltacloud API, CloudForms

Reply via email to