From 50410be9434b8b8b8ea63ce737731b7c50fa1677 Mon Sep 17 00:00:00 2001 From: juanmont Date: Tue, 8 Nov 2016 10:43:33 +0100 Subject: [PATCH] F #4839 Added a new login error when oned is not running --- src/cloud/common/CloudAuth/OpenNebulaCloudAuth.rb | 4 +--- src/oca/ruby/opennebula/client.rb | 2 +- src/oca/ruby/opennebula/error.rb | 12 ++++++++++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/cloud/common/CloudAuth/OpenNebulaCloudAuth.rb b/src/cloud/common/CloudAuth/OpenNebulaCloudAuth.rb index 6d300cb450..c6d04fc53a 100644 --- a/src/cloud/common/CloudAuth/OpenNebulaCloudAuth.rb +++ b/src/cloud/common/CloudAuth/OpenNebulaCloudAuth.rb @@ -31,10 +31,8 @@ module OpenNebulaCloudAuth # def do_auth(env, params={}) auth = Rack::Auth::Basic::Request.new(env) - if auth.provided? && auth.basic? username, password = auth.credentials - authenticated = false invalid_chars = @@ -72,11 +70,11 @@ module OpenNebulaCloudAuth rc = user.info end - if OpenNebula.is_error?(rc) if logger logger.error{ "User #{username} could not be authenticated"} logger.error { rc.message } + throw Exception(rc.message) if rc.is_exml_rpc_call?() end return nil end diff --git a/src/oca/ruby/opennebula/client.rb b/src/oca/ruby/opennebula/client.rb index 8eeb05655e..abb07fa3eb 100644 --- a/src/oca/ruby/opennebula/client.rb +++ b/src/oca/ruby/opennebula/client.rb @@ -201,7 +201,7 @@ module OpenNebula response[1] #response[1..-1] end rescue Exception => e - Error.new(e.message) + Error.new(e.message, Error::EXML_RPC_CALL) end end diff --git a/src/oca/ruby/opennebula/error.rb b/src/oca/ruby/opennebula/error.rb index 0d597c1bfa..8ae3b42730 100644 --- a/src/oca/ruby/opennebula/error.rb +++ b/src/oca/ruby/opennebula/error.rb @@ -28,8 +28,10 @@ module OpenNebula EACTION = 0x0800 EXML_RPC_API = 0x1000 EINTERNAL = 0x2000 - ENOTDEFINED = 0x1111 - + EALLOCATE = 0x4000 + ENOTDEFINED = 0xF001 + EXML_RPC_CALL = 0xF002 + attr_reader :message, :errno # +message+ Description of the error @@ -42,6 +44,11 @@ module OpenNebula def to_str() @message end + + def is_exml_rpc_call?() + @errno == EXML_RPC_CALL + end + end # Returns true if the object returned by a method of the OpenNebula @@ -49,4 +56,5 @@ module OpenNebula def self.is_error?(value) value.class==OpenNebula::Error end + end