From: Michal Fojtik <[email protected]>
---
server/lib/deltacloud/drivers/ec2/ec2_driver.rb | 1 -
.../drivers/rackspace/rackspace_driver.rb | 120 +++++++++++---------
2 files changed, 68 insertions(+), 53 deletions(-)
diff --git a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
index fd3f9d9..5083622 100644
--- a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
+++ b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
@@ -231,7 +231,6 @@ module Deltacloud
def destroy_instance(credentials, instance_id)
ec2 = new_client(credentials)
- puts "Terminating instance #{instance_id}"
instance_id = instance_id
if ec2.terminate_instances([instance_id])
untag_instance(credentials, instance_id)
diff --git a/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
b/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
index e64edae..76403db 100644
--- a/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
+++ b/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
@@ -30,7 +30,7 @@ class RackspaceDriver < Deltacloud::BaseDriver
feature :instances, :authentication_password
def supported_collections
- DEFAULT_COLLECTIONS + [ :buckets ]
+ DEFAULT_COLLECTIONS + [ :buckets ] - [ :storage_snapshots,
:storage_volumes ]
end
def hardware_profiles(credentials, opts = {})
@@ -85,25 +85,41 @@ class RackspaceDriver < Deltacloud::BaseDriver
safely do
server = rs.create_server(:name => opts[:name] || Time.now.to_s,
:imageId => image_id.to_i,
- :flavorId => opts[:hwp_id].to_i ||
hardware_profiles(credentials).first.id.to_i)
+ :flavorId => opts[:hwp_id].length>0 ?
opts[:hwp_id].to_i : 1)
result = convert_instance_after_create(server, credentials.user,
server.adminPass)
end
result
end
- def create_image(credentials, opts={})
- rs = new_client(credentials)
+ # TODO: This action is reserved for create image from instance
+ #
+ #def create_image(credentials, opts={})
+ # rs = new_client(credentials)
+ # safely do
+ # server = rs.get_server(opts[:id].to_i)
+ # image = server.create_image(opts[:name])
+ # Image.new(
+ # :id => image.id.to_s,
+ # :name => image.name,
+ # :description => image.name,
+ # :owner_id => credentials.user,
+ # :state => image.status,
+ # :architecture => 'x86_64'
+ # )
+ # end
+ #end
+
+ def run_on_instance(credentials, opts={})
+ target = instance(credentials, :id => opts[:id])
+ param = {}
+ param[:credentials] = {
+ :username => 'root',
+ :password => opts[:password]
+ }
+ param[:port] = opts[:port] || '22'
+ param[:ip] = target.public_addresses.first
safely do
- server = rs.get_server(opts[:id].to_i)
- image = server.create_image(opts[:name])
- Image.new(
- :id => image.id.to_s,
- :name => image.name,
- :description => image.name,
- :owner_id => credentials.user,
- :state => image.status,
- :architecture => 'x86_64'
- )
+ Deltacloud::Runner.execute(opts[:cmd], param)
end
end
@@ -127,44 +143,6 @@ class RackspaceDriver < Deltacloud::BaseDriver
alias_method :stop_instance, :destroy_instance
- def convert_instance_after_create(server, user_name, password='')
- inst = Instance.new(
- :id => server.id.to_s,
- :realm_id => 'us',
- :owner_id => user_name,
- :description => server.name,
- :name => server.name,
- :state => (server.status == 'ACTIVE') ? 'RUNNING' : 'PENDING',
- :architecture => 'x86_64',
- :image_id => server.imageId.to_s,
- :instance_profile => InstanceProfile::new(server.flavorId.to_s),
- :public_addresses => server.addresses[:public],
- :private_addresses => server.addresses[:private],
- :username => 'root',
- :password => password ? password : nil
- )
- inst.actions = instance_actions_for(inst.state)
- inst
- end
-
- def convert_instance(server, user_name = '')
- inst = Instance.new(
- :id => server[:id].to_s,
- :realm_id => 'us',
- :owner_id => user_name,
- :description => server[:name],
- :name => server[:name],
- :state => (server[:status] == 'ACTIVE') ? 'RUNNING' : 'PENDING',
- :architecture => 'x86_64',
- :image_id => server[:imageId].to_s,
- :instance_profile => InstanceProfile::new(server[:flavorId].to_s),
- :public_addresses => server[:addresses][:public],
- :private_addresses => server[:addresses][:private]
- )
- inst.actions = instance_actions_for(inst.state)
- inst
- end
-
#
# Instances
#
@@ -362,6 +340,44 @@ private
})
end
+ def convert_instance_after_create(server, user_name, password='')
+ inst = Instance.new(
+ :id => server.id.to_s,
+ :realm_id => 'us',
+ :owner_id => user_name,
+ :description => server.name,
+ :name => server.name,
+ :state => (server.status == 'ACTIVE') ? 'RUNNING' : 'PENDING',
+ :architecture => 'x86_64',
+ :image_id => server.imageId.to_s,
+ :instance_profile => InstanceProfile::new(server.flavorId.to_s),
+ :public_addresses => server.addresses[:public],
+ :private_addresses => server.addresses[:private],
+ :username => 'root',
+ :password => password ? password : nil
+ )
+ inst.actions = instance_actions_for(inst.state)
+ inst
+ end
+
+ def convert_instance(server, user_name = '')
+ inst = Instance.new(
+ :id => server[:id].to_s,
+ :realm_id => 'us',
+ :owner_id => user_name,
+ :description => server[:name],
+ :name => server[:name],
+ :state => (server[:status] == 'ACTIVE') ? 'RUNNING' : 'PENDING',
+ :architecture => 'x86_64',
+ :image_id => server[:imageId].to_s,
+ :instance_profile => InstanceProfile::new(server[:flavorId].to_s),
+ :public_addresses => server[:addresses][:public],
+ :private_addresses => server[:addresses][:private]
+ )
+ inst.actions = instance_actions_for(inst.state)
+ inst
+ end
+
def cloudfiles_client(credentials)
safely do
CloudFiles::Connection.new(:username => credentials.user, :api_key =>
credentials.password)
--
1.7.4