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

Reply via email to