You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltacloud.apache.org by lu...@apache.org on 2010/07/09 01:22:21 UTC

svn commit: r962091 - in /incubator/deltacloud/trunk/client-ruby: lib/deltacloud.rb lib/models/instance.rb specs/fixtures/instances/inst1.yml specs/fixtures/instances/inst2.yml specs/instances_spec.rb

Author: lutter
Date: Thu Jul  8 23:22:21 2010
New Revision: 962091

URL: http://svn.apache.org/viewvc?rev=962091&view=rev
Log:
Adjust create_instance to take opts hash to account for optionality of flavor/realm.

Modified:
    incubator/deltacloud/trunk/client-ruby/lib/deltacloud.rb
    incubator/deltacloud/trunk/client-ruby/lib/models/instance.rb
    incubator/deltacloud/trunk/client-ruby/specs/fixtures/instances/inst1.yml
    incubator/deltacloud/trunk/client-ruby/specs/fixtures/instances/inst2.yml
    incubator/deltacloud/trunk/client-ruby/specs/instances_spec.rb

Modified: incubator/deltacloud/trunk/client-ruby/lib/deltacloud.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/client-ruby/lib/deltacloud.rb?rev=962091&r1=962090&r2=962091&view=diff
==============================================================================
--- incubator/deltacloud/trunk/client-ruby/lib/deltacloud.rb (original)
+++ incubator/deltacloud/trunk/client-ruby/lib/deltacloud.rb Thu Jul  8 23:22:21 2010
@@ -192,8 +192,16 @@ class DeltaCloud
     nil
   end
 
-  def create_instance(image_id, flavor_id)
-    request( entry_points[:instances], :post, {}, { 'image_id'=>image_id, 'flavor_id'=>flavor_id} ) do |response|
+  def create_instance(image_id, opts={})
+    realm_id = opts[:realm]
+    flavor_id = opts[:flavor]
+
+    params = {}
+    ( params[:realm_id] = realm_id ) if realm_id
+    ( params[:flavor_id] = flavor_id ) if flavor_id
+
+    params[:image_id] = image_id
+    request( entry_points[:instances], :post, {}, params ) do |response|
       if ( response.is_a?( Net::HTTPSuccess ) )
         doc = REXML::Document.new( response.body )
         instance = doc.root

Modified: incubator/deltacloud/trunk/client-ruby/lib/models/instance.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/client-ruby/lib/models/instance.rb?rev=962091&r1=962090&r2=962091&view=diff
==============================================================================
--- incubator/deltacloud/trunk/client-ruby/lib/models/instance.rb (original)
+++ incubator/deltacloud/trunk/client-ruby/lib/models/instance.rb Thu Jul  8 23:22:21 2010
@@ -12,6 +12,7 @@ class Instance < BaseModel
   attribute :actions
   attribute :image
   attribute :flavor
+  attribute :realm
 
   def initialize(client, uri, xml=nil)
     super( client, uri, xml )
@@ -33,6 +34,8 @@ class Instance < BaseModel
       @image = Image.new( @client, image_uri )
       flavor_uri = xml.get_elements( 'flavor' )[0].attributes['href']
       @flavor = Flavor.new( @client, flavor_uri )
+      realm_uri = xml.get_elements( 'realm' )[0].attributes['href']
+      @realm = Realm.new( @client, realm_uri )
       @state = xml.text( 'state' )
       @actions = []
       xml.get_elements( 'actions/link' ).each do |link|

Modified: incubator/deltacloud/trunk/client-ruby/specs/fixtures/instances/inst1.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/client-ruby/specs/fixtures/instances/inst1.yml?rev=962091&r1=962090&r2=962091&view=diff
==============================================================================
--- incubator/deltacloud/trunk/client-ruby/specs/fixtures/instances/inst1.yml (original)
+++ incubator/deltacloud/trunk/client-ruby/specs/fixtures/instances/inst1.yml Thu Jul  8 23:22:21 2010
@@ -4,3 +4,4 @@
 :public_addresses: [ img3.inst1.public.com ]
 :private_addresses: [ img3.inst1.private.com ]
 :flavor_id: m1-small
+:realm_id: us

Modified: incubator/deltacloud/trunk/client-ruby/specs/fixtures/instances/inst2.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/client-ruby/specs/fixtures/instances/inst2.yml?rev=962091&r1=962090&r2=962091&view=diff
==============================================================================
--- incubator/deltacloud/trunk/client-ruby/specs/fixtures/instances/inst2.yml (original)
+++ incubator/deltacloud/trunk/client-ruby/specs/fixtures/instances/inst2.yml Thu Jul  8 23:22:21 2010
@@ -4,3 +4,4 @@
 :public_addresses: [ img1.inst2.public.com ]
 :private_addresses: [ img1.inst2.private.com ]
 :flavor_id: m1-small
+:realm_id: us

Modified: incubator/deltacloud/trunk/client-ruby/specs/instances_spec.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/client-ruby/specs/instances_spec.rb?rev=962091&r1=962090&r2=962091&view=diff
==============================================================================
--- incubator/deltacloud/trunk/client-ruby/specs/instances_spec.rb (original)
+++ incubator/deltacloud/trunk/client-ruby/specs/instances_spec.rb Thu Jul  8 23:22:21 2010
@@ -58,17 +58,51 @@ describe "instances" do
     end
   end
 
-  it "should allow creation of new instances" do
+  it "should allow creation of new instances with reasonable defaults" do
     DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
-      instance = client.create_instance( 'img1', 'm1-small' )
+      instance = client.create_instance( 'img1' )
       instance.should_not be_nil
       instance.uri.should eql( API_URL + '/instances/inst3' )
       instance.id.should eql( 'inst3' )
+      instance.image.id.should eql( 'img1' )
+      instance.flavor.id.should eql( 'm1-large' )
+      instance.realm.id.should eql( 'us' )
+    end
+  end
+
+  it "should allow creation of new instances with specific realm" do
+    DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
+      instance = client.create_instance( 'img1', :realm=>'eu' )
+      instance.should_not be_nil
+      instance.uri.should eql( API_URL + '/instances/inst3' )
+      instance.id.should eql( 'inst3' )
+      instance.image.id.should eql( 'img1' )
+      instance.flavor.id.should eql( 'm1-large' )
+      instance.realm.id.should eql( 'eu' )
+    end
+  end
 
-      instance = client.create_instance( 'img1', 'm1-small' )
+  it "should allow creation of new instances with specific flavor" do
+    DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
+      instance = client.create_instance( 'img1', :flavor=>'m1-xlarge' )
       instance.should_not be_nil
-      instance.uri.should eql( API_URL + '/instances/inst4' )
-      instance.id.should eql( 'inst4' )
+      instance.uri.should eql( API_URL + '/instances/inst3' )
+      instance.id.should eql( 'inst3' )
+      instance.image.id.should eql( 'img1' )
+      instance.flavor.id.should eql( 'm1-xlarge' )
+      instance.realm.id.should eql( 'us' )
+    end
+  end
+
+  it "should allow creation of new instances with specific realm and flavor" do
+    DeltaCloud.new( API_NAME, API_PASSWORD, API_URL ) do |client|
+      instance = client.create_instance( 'img1', :realm=>'eu', :flavor=>'m1-xlarge' )
+      instance.should_not be_nil
+      instance.uri.should eql( API_URL + '/instances/inst3' )
+      instance.id.should eql( 'inst3' )
+      instance.image.id.should eql( 'img1' )
+      instance.flavor.id.should eql( 'm1-xlarge' )
+      instance.realm.id.should eql( 'eu' )
     end
   end