[PATCH conductor 2/3] Consider 401 code as valid when checking provider connection
jprovazn at redhat.com
jprovazn at redhat.com
Thu Sep 27 15:10:39 UTC 2012
From: Jan Provaznik <jprovazn at redhat.com>
dc-core returns 401 if no credentials are passed when doing any openstack request,
but conductor can not send credentials when connecting through provider model.
For provider connection test (valid_framework? method) can be 401
response code considered as valid. Bug is tracked here:
https://issues.apache.org/jira/browse/DTACLOUD-330
The connection test is currently not very usable anyway because for most drivers
it just checks if "deltacloud knows about this driver" but not real end-provider
connection is tested.
This can be improved on Conductor side once the following issue is solved on deltacloud side:
https://issues.apache.org/jira/browse/DTACLOUD-307
---
src/app/models/provider.rb | 24 +++++++++++++++++-------
1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/src/app/models/provider.rb b/src/app/models/provider.rb
index bb6b660..05ff0e4 100644
--- a/src/app/models/provider.rb
+++ b/src/app/models/provider.rb
@@ -106,12 +106,7 @@ class Provider < ActiveRecord::Base
def connect
begin
- opts = {:username => nil,
- :password => nil,
- :driver => provider_type.deltacloud_driver }
- opts[:provider] = deltacloud_provider if deltacloud_provider
- client = DeltaCloud.new(nil, nil, url)
- return client.with_config(opts)
+ connect!
rescue Exception => e
logger.error("Error connecting to framework: #{e.message}")
logger.error("Backtrace: #{e.backtrace.join("\n")}")
@@ -119,6 +114,15 @@ class Provider < ActiveRecord::Base
end
end
+ def connect!
+ opts = {:username => nil,
+ :password => nil,
+ :driver => provider_type.deltacloud_driver }
+ opts[:provider] = deltacloud_provider if deltacloud_provider
+ client = DeltaCloud.new(nil, nil, url)
+ client.with_config(opts)
+ end
+
def pools
cloud_accounts.collect {|account| account.pools}.flatten.uniq
end
@@ -278,7 +282,13 @@ class Provider < ActiveRecord::Base
private
def valid_framework?
- connect.nil? ? false : true
+ begin
+ connect!.nil?
+ rescue Exception => e
+ logger.error("Error connecting to framework: #{e.message}")
+ logger.error("Backtrace: #{e.backtrace.join("\n")}")
+ e.message =~ /401 : Not authorized/ ? true : false
+ end
end
def valid_provider?
--
1.7.11.4
More information about the aeolus-devel
mailing list