On 10/13/2011 10:54 AM, jprovazn(a)redhat.com wrote:
From: Jan Provaznik<jprovazn(a)redhat.com>
If front end value is out of back end range, first/last range value
is returned instead of front end value.
---
src/app/models/hardware_profile.rb | 9 ++++++++-
src/spec/models/hardware_profile_spec.rb | 2 ++
2 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/src/app/models/hardware_profile.rb b/src/app/models/hardware_profile.rb
index cfe7022..1e3e599 100644
--- a/src/app/models/hardware_profile.rb
+++ b/src/app/models/hardware_profile.rb
@@ -161,7 +161,14 @@ class HardwareProfile< ActiveRecord::Base
when "fixed"
return back_end_property.value
when "range"
- return front_end_property.value.present? ? front_end_property.value :
back_end_property.value
+ val = BigDecimal.new(front_end_property.value.to_s)
+ if val< BigDecimal.new(back_end_property.range_first.to_s)
+ return back_end_property.range_first.to_s
+ elsif val> BigDecimal.new(back_end_property.range_last.to_s)
+ return back_end_property.range_last.to_s
+ else
+ return front_end_property.value.to_s
+ end
when "enum"
create_array_from_property(back_end_property).sort!.each do |value|
if front_end_property.value.nil? or BigDecimal.new(value)>=
BigDecimal.new(front_end_property.value)
diff --git a/src/spec/models/hardware_profile_spec.rb
b/src/spec/models/hardware_profile_spec.rb
index 6fef1fe..9685706 100644
--- a/src/spec/models/hardware_profile_spec.rb
+++ b/src/spec/models/hardware_profile_spec.rb
@@ -137,6 +137,7 @@ describe HardwareProfile do
it "should generate the correct override property values for a given
property" do
front_end_memory = FactoryGirl.create(:hwpp_fixed, :name => 'memory',
:unit => 'MB', :value => '2048')
+ front_end_memory2 = FactoryGirl.create(:hwpp_fixed, :name => 'memory',
:unit => 'MB', :value => '1.0')
front_end_storage = FactoryGirl.create(:hwpp_fixed, :name => 'storage',
:unit => 'GB', :value => '850')
front_end_cpu = FactoryGirl.create(:hwpp_fixed, :name => 'cpu', :unit
=> 'count', :value => '2')
front_end_architecture = FactoryGirl.create(:hwpp_fixed, :name =>
'architecture', :unit => 'label', :value => 'x86_64')
@@ -147,6 +148,7 @@ describe HardwareProfile do
back_end_architecture = FactoryGirl.create(:hwpp_fixed, :name =>
'architecture', :unit => 'label', :value => 'x86_64')
HardwareProfile.generate_override_property_value(front_end_memory,
back_end_memory).should == '2048'
+ HardwareProfile.generate_override_property_value(front_end_memory2,
back_end_memory).should == '1024'
HardwareProfile.generate_override_property_value(front_end_storage,
back_end_storage).should == '1500'
HardwareProfile.generate_override_property_value(front_end_cpu,
back_end_cpu).should == '2'
end
Ignore this patch