From: David Lutterkort <[email protected]>

Adapt the initial data and add a sample instance that overrides a HWP
property
---
 server/lib/deltacloud/base_driver/base_driver.rb   |   18 ++++++++++++++++++
 .../drivers/mock/data/instances/inst0.yml          |   17 +++++++++++++++++
 .../drivers/mock/data/instances/inst1.yml          |    2 ++
 .../drivers/mock/data/instances/inst2.yml          |    2 ++
 server/lib/deltacloud/drivers/mock/mock_driver.rb  |   10 +++-------
 5 files changed, 42 insertions(+), 7 deletions(-)
 create mode 100644 server/lib/deltacloud/drivers/mock/data/instances/inst0.yml

diff --git a/server/lib/deltacloud/base_driver/base_driver.rb 
b/server/lib/deltacloud/base_driver/base_driver.rb
index 373d64e..a3069e9 100644
--- a/server/lib/deltacloud/base_driver/base_driver.rb
+++ b/server/lib/deltacloud/base_driver/base_driver.rb
@@ -72,6 +72,24 @@ module Deltacloud
       profiles
     end
 
+    def find_hardware_profile(credentials, name, image_id)
+      hwp = nil
+      if name
+        unless hwp = hardware_profiles(credentials, :name => name).first
+          raise BackendError.new(400, "bad-hardware-profile-name",
+            "Hardware profile '#{name}' does not exist", nil)
+        end
+      else
+        unless image = image(credentials, :id=>image_id)
+          raise BackendError.new(400, "bad-image-id",
+              "Image with ID '#{image_id}' does not exist", nil)
+        end
+        hwp = hardware_profiles(credentials,
+                                :architecture=>image.architecture).first
+      end
+      return hwp
+    end
+
     def self.define_instance_states(&block)
       machine = ::Deltacloud::StateMachine.new(&block)
       @instance_state_machine = machine
diff --git a/server/lib/deltacloud/drivers/mock/data/instances/inst0.yml 
b/server/lib/deltacloud/drivers/mock/data/instances/inst0.yml
new file mode 100644
index 0000000..c1880b7
--- /dev/null
+++ b/server/lib/deltacloud/drivers/mock/data/instances/inst0.yml
@@ -0,0 +1,17 @@
+---
+:realm_id: us
+:public_addresses:
+- img1.inst0.public.com
+:state: RUNNING
+:name: "Mock Instance With Profile Change"
+:private_addresses:
+- img1.inst0.private.com
+:image_id: img1
+:flavor_id: m1-large
+:instance_profile: !ruby/object:InstanceProfile
+  id: m1-large
+  memory: "12288"
+:owner_id: mockuser
+:actions:
+- :reboot
+- :stop
diff --git a/server/lib/deltacloud/drivers/mock/data/instances/inst1.yml 
b/server/lib/deltacloud/drivers/mock/data/instances/inst1.yml
index 26a6e3b..aa3f86e 100644
--- a/server/lib/deltacloud/drivers/mock/data/instances/inst1.yml
+++ b/server/lib/deltacloud/drivers/mock/data/instances/inst1.yml
@@ -6,3 +6,5 @@
 :private_addresses: [ img3.inst1.private.com ]
 :flavor_id: m1-small
 :realm_id: us
+:instance_profile: !ruby/object:InstanceProfile
+  id: m1-small
diff --git a/server/lib/deltacloud/drivers/mock/data/instances/inst2.yml 
b/server/lib/deltacloud/drivers/mock/data/instances/inst2.yml
index ee1de37..69d4720 100644
--- a/server/lib/deltacloud/drivers/mock/data/instances/inst2.yml
+++ b/server/lib/deltacloud/drivers/mock/data/instances/inst2.yml
@@ -6,3 +6,5 @@
 :private_addresses: [ img1.inst2.private.com ]
 :flavor_id: m1-small
 :realm_id: us
+:instance_profile: !ruby/object:InstanceProfile
+  id: m1-large
diff --git a/server/lib/deltacloud/drivers/mock/mock_driver.rb 
b/server/lib/deltacloud/drivers/mock/mock_driver.rb
index 6d99c36..8841e3f 100644
--- a/server/lib/deltacloud/drivers/mock/mock_driver.rb
+++ b/server/lib/deltacloud/drivers/mock/mock_driver.rb
@@ -206,12 +206,7 @@ class MockDriver < Deltacloud::BaseDriver
       ( realm_id = realm.id ) if realm
     end
 
-    flavor_id = opts[:flavor_id]
-    if ( flavor_id.nil? )
-      image = image(credentials, :id=>image_id )
-      flavor = flavors(credentials, :architecture=>image.architecture).first
-      (flavor_id = flavor.id ) if flavor
-    end
+    hwp = find_hardware_profile(credentials, opts[:hwp_id], image_id)
 
     name = opts[:name] || "i-#{Time.now.to_i}"
 
@@ -222,7 +217,8 @@ class MockDriver < Deltacloud::BaseDriver
       :owner_id=>credentials.user,
       :public_addresses=>["#{image_id}.#{next_id}.public.com"],
       :private_addresses=>["#{image_id}.#{next_id}.private.com"],
-      :flavor_id=>flavor_id,
+      :flavor_id=>hwp.name,
+      :instance_profile => InstanceProfile.new(hwp.name, opts),
       :realm_id=>realm_id,
       :actions=>instance_actions_for( 'RUNNING' )
     }
-- 
1.6.6.1

_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to