https://bugzilla.redhat.com/show_bug.cgi?id=802847
When there multiple architectures defined in a provider hardware profile. The matching
logic only uses the first listed value. This means it would only see i386 and not x86_64
when architecture is specified as ['i386', 'x86_64'].
We will begin to see multiple architectures defined for ec2 once this patch in deltacloud
is released:
https://git-wip-us.apache.org/repos/asf?p=deltacloud.git;a=commitdiff;h=f...
Fixed the matching logic to consider all options that may be listed in architecture.
Once both conductor and deltacloud changes are in. m1.small will be usable and matched
when memory is specified as 512m and architecture is specified as x86_64.
---
src/app/models/hardware_profile.rb | 14 ++++++++++++--
1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/app/models/hardware_profile.rb b/src/app/models/hardware_profile.rb
index 087d2ae..7960f26 100644
--- a/src/app/models/hardware_profile.rb
+++ b/src/app/models/hardware_profile.rb
@@ -213,7 +213,7 @@ class HardwareProfile < ActiveRecord::Base
match_hardware_profile_property(front_end_hwp.memory, back_end_hwp.memory)
&&
match_hardware_profile_property(front_end_hwp.cpu, back_end_hwp.cpu) &&
match_hardware_profile_property(front_end_hwp.storage, back_end_hwp.storage)
&&
- front_end_hwp.architecture.value == back_end_hwp.architecture.value
+ match_hardware_profile_property(front_end_hwp.architecture,
back_end_hwp.architecture)
end
def self.match_hardware_profile_property(front_end_property, back_end_property)
@@ -230,10 +230,16 @@ class HardwareProfile < ActiveRecord::Base
match = BigDecimal.new(back_end_property.range_last.to_s) >=
BigDecimal.new(front_end_property.value.to_s) ? true : false
when "enum"
create_array_from_property(back_end_property).each do |value|
- if front_end_property.value.nil? or BigDecimal.new(value) >=
BigDecimal.new(front_end_property.value.to_s)
+ if front_end_property.value.nil?
+ match = true
+ elsif !is_numeric(front_end_property.value) || !is_numeric(value)
+ if front_end_property.value == value
match = true
end
+ elsif BigDecimal.new(value) >= BigDecimal.new(front_end_property.value.to_s)
+ match = true
end
+ end
end
return match
end
@@ -248,4 +254,8 @@ class HardwareProfile < ActiveRecord::Base
end
end
+ def self.is_numeric(value)
+ true if Float(value) rescue false
+ end
+
end
--
1.7.7.6