--- .../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"]