From: David Lutterkort lutter@redhat.com
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' ) }