---
.../lib/deltacloud/base_driver/authentication.rb | 47 ++++++++++++++++++++
server/lib/deltacloud/drivers/ec2/ec2_driver.rb | 16 +-----
.../lib/deltacloud/drivers/gogrid/gogrid_driver.rb | 18 +------
.../drivers/rackspace/rackspace_driver.rb | 1 +
4 files changed, 54 insertions(+), 28 deletions(-)
create mode 100644 server/lib/deltacloud/base_driver/authentication.rb
diff --git a/server/lib/deltacloud/base_driver/authentication.rb
b/server/lib/deltacloud/base_driver/authentication.rb
new file mode 100644
index 0000000..1acc05c
--- /dev/null
+++ b/server/lib/deltacloud/base_driver/authentication.rb
@@ -0,0 +1,47 @@
+module Deltacloud
+ module Authentication
+
+ class Key
+ attr_accessor :keyname
+
+ def initialize(keyname)
+ @keyname = keyname
+ end
+
+ def has_key?
+ @keyname ? true : false
+ end
+
+ def to_s
+ return '<error>Instance do not provide a key name</error>'
unless has_key?
+ ' <login type="key">'+
+ '
<keyname><![CDATA['+@keyname+']]></keyname>'+
+ ' </login>'
+ end
+
+ end
+
+ class Password
+ attr_accessor :username
+ attr_accessor :password
+
+ def initialize(username, password)
+ @username, @password = username, password
+ end
+
+ def has_password?
+ (@username && @password) ? true : false
+ end
+
+ def to_s
+ return '<error>Instance do not provide username or
password</error>' unless has_password?
+ ' <login type="password">'+
+ '
<username><![CDATA['+@username+']]></username>'+
+ '
<password><![CDATA['+@password+']]></password>'+
+ ' </login>'
+ end
+
+ end
+
+ end
+end
diff --git a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
index 0f4e128..603b266 100644
--- a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
+++ b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
@@ -17,25 +17,16 @@
require 'deltacloud/base_driver'
+require 'deltacloud/base_driver/authentication'
require 'AWS'
-class Instance
- attr_accessor :keyname
- attr_accessor :authn_error
-
- def authn_feature_failed?
- return true unless authn_error.nil?
- end
-
-end
-
module Deltacloud
module Drivers
module EC2
class EC2Driver < Deltacloud::BaseDriver
feature :instances, :user_data
- feature :instances, :authentication_key
+ feature :instances, :authentication
define_hardware_profile('m1.small') do
cpu 1
@@ -297,10 +288,9 @@ class EC2Driver < Deltacloud::BaseDriver
:private_addresses=>( ec2_instance['privateDnsName'] == '' ? []
: [ec2_instance['privateDnsName']] ),
:instance_profile =>InstanceProfile.new(hwp_name),
:actions=>instance_actions_for( state ),
- :keyname => ec2_instance['keyName'],
+ :authentication =>
Deltacloud::Authentication::Key.new(ec2_instance['keyName']),
:launch_time => ec2_instance['launchTime']
} )
- instance.authn_error = "Key not set for instance" unless
ec2_instance['keyName']
return instance
end
diff --git a/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb
b/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb
index ec56312..c2a9d87 100644
--- a/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb
+++ b/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb
@@ -16,25 +16,16 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
require 'deltacloud/base_driver'
+require 'deltacloud/base_driver/authentication'
require 'deltacloud/drivers/gogrid/gogrid_client'
-class Instance
- attr_accessor :username
- attr_accessor :password
- attr_accessor :authn_error
-
- def authn_feature_failed?
- return true unless authn_error.nil?
- end
-end
-
module Deltacloud
module Drivers
module Gogrid
class GogridDriver < Deltacloud::BaseDriver
- feature :instances, :authentication_password
+ feature :instances, :authentication
define_hardware_profile 'server' do
cpu 2
@@ -105,7 +96,6 @@ class GogridDriver < Deltacloud::BaseDriver
inst = convert_instance(instance, credentials.user)
else
inst = convert_instance(instance, credentials.user)
- inst.authn_error = "Unable to fetch password"
end
return inst
else
@@ -139,7 +129,6 @@ class GogridDriver < Deltacloud::BaseDriver
inst = convert_instance(instance, credentials.user)
else
inst = convert_instance(instance, credentials.user)
- inst.authn_error = "Unable to fetch password"
end
instances = [inst]
rescue Exception => e
@@ -282,8 +271,7 @@ class GogridDriver < Deltacloud::BaseDriver
:actions =>
instance_actions_for(convert_server_state(instance['state']['name'],
instance['id'])),
:public_addresses => [ instance['ip']['ip'] ],
:private_addresses => [],
- :username => instance['username'],
- :password => instance['password']
+ :authentication =>
Deltacloud::Authentication::Password.new(instance['username'],
instance['password'])
)
end
diff --git a/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
b/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
index 3ad5452..4361ff8 100644
--- a/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
+++ b/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
@@ -119,6 +119,7 @@ class RackspaceDriver < Deltacloud::BaseDriver
inst.actions = instance_actions_for(inst.state)
inst.image_id = srv["imageId"].to_s
inst.instance_profile = InstanceProfile.new(srv["flavorId"].to_s)
+ inst.authentication = Deltacloud::Authentication::Password.new('root',
srv['adminPass'])
if srv["addresses"]
inst.public_addresses = srv["addresses"]["public"]
inst.private_addresses = srv["addresses"]["private"]
--
1.7.1