You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltacloud.apache.org by mf...@apache.org on 2013/02/27 15:56:39 UTC

git commit: Error responses from server don't have to contain backend node, only a message. For example 401 error response looks like: Authentication required

Updated Branches:
  refs/heads/master 94e0c127e -> 6e6424af4


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.


Project: http://git-wip-us.apache.org/repos/asf/deltacloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltacloud/commit/6e6424af
Tree: http://git-wip-us.apache.org/repos/asf/deltacloud/tree/6e6424af
Diff: http://git-wip-us.apache.org/repos/asf/deltacloud/diff/6e6424af

Branch: refs/heads/master
Commit: 6e6424af4a0a038f7b236d17d760dbaa1ed28686
Parents: 94e0c12
Author: Jan Provaznik <jp...@redhat.com>
Authored: Wed Feb 27 15:56:28 2013 +0100
Committer: Michal fojtik <mf...@redhat.com>
Committed: Wed Feb 27 15:56:28 2013 +0100

----------------------------------------------------------------------
 client/lib/deltacloud.rb |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltacloud/blob/6e6424af/client/lib/deltacloud.rb
----------------------------------------------------------------------
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)