From: Jan Provaznik jprovazn@redhat.com
* HardwareProfileProperty 'kind' chnaged to symbol * allowed float format for CPU amount * HardwareProfile.name is generated from API 'id' attribute * added two simple CPU amount tests
(this patch replaces aggregator_Update-for-client-changes.patch, core part of patch is already pushed in repository) --- src/app/models/hardware_profile.rb | 6 ++-- src/app/models/hardware_profile_property.rb | 21 ++++--------- src/app/models/property_enum_entry.rb | 8 ++--- src/app/models/provider.rb | 4 +-- src/spec/factories/hardware_profile_property.rb | 36 +++++++++++----------- src/spec/models/hardware_profile_spec.rb | 14 +++++++++ 6 files changed, 45 insertions(+), 44 deletions(-)
diff --git a/src/app/models/hardware_profile.rb b/src/app/models/hardware_profile.rb index a92b658..de9ef23 100644 --- a/src/app/models/hardware_profile.rb +++ b/src/app/models/hardware_profile.rb @@ -90,10 +90,10 @@ class HardwareProfile < ActiveRecord::Base :value => prop.value) case prop.kind when HardwareProfileProperty::RANGE - the_property.range_first = prop.range.first - the_property.range_last = prop.range.last + the_property.range_first = prop.range[:from] + the_property.range_last = prop.range[:to] when HardwareProfileProperty::ENUM - the_property.property_enum_entries = prop.enum.entries.collect do |entry| + the_property.property_enum_entries = prop.options.collect do |entry| PropertyEnumEntry.new(:value => entry, :hardware_profile_property => the_property) end end diff --git a/src/app/models/hardware_profile_property.rb b/src/app/models/hardware_profile_property.rb index aedae31..0717484 100644 --- a/src/app/models/hardware_profile_property.rb +++ b/src/app/models/hardware_profile_property.rb @@ -26,9 +26,9 @@ class HardwareProfileProperty < ActiveRecord::Base CPU = "cpu" ARCHITECTURE = "architecture"
- FIXED = "fixed" - RANGE = "range" - ENUM = "enum" + FIXED = :fixed + RANGE = :range + ENUM = :enum
UNIT_MB = "MB" UNIT_GB = "GB" @@ -48,22 +48,14 @@ class HardwareProfileProperty < ActiveRecord::Base validates_presence_of :unit validates_presence_of :value validates_numericality_of :value, :greater_than => 0, - :if => Proc.new{|p| p.name == MEMORY or p.name == STORAGE } - validates_numericality_of :value, :greater_than => 0, - :if => Proc.new{|p| p.name == CPU }, :only_integer => true + :if => Proc.new{|p| p.name == MEMORY or p.name == STORAGE or p.name == CPU}
validates_numericality_of :range_first, :greater_than => 0, - :if => Proc.new{|p| (p.name == MEMORY or p.name == STORAGE) and + :if => Proc.new{|p| (p.name == MEMORY or p.name == STORAGE or p.name == CPU) and p.kind == RANGE} validates_numericality_of :range_last, :greater_than => 0, - :if => Proc.new{|p| (p.name == MEMORY or p.name == STORAGE) and + :if => Proc.new{|p| (p.name == MEMORY or p.name == STORAGE or p.name == CPU) and p.kind == RANGE} - validates_numericality_of :range_first, :greater_than => 0, - :if => Proc.new{|p| (p.name == CPU) and - p.kind == RANGE}, :only_integer => true - validates_numericality_of :range_last, :greater_than => 0, - :if => Proc.new{|p| (p.name == CPU) and - p.kind == RANGE}, :only_integer => true validates_associated :property_enum_entries def validate case name @@ -104,7 +96,6 @@ class HardwareProfileProperty < ActiveRecord::Base "Range ending must only be specified for range properties") end end - end end
diff --git a/src/app/models/property_enum_entry.rb b/src/app/models/property_enum_entry.rb index eb246ff..ff497ef 100644 --- a/src/app/models/property_enum_entry.rb +++ b/src/app/models/property_enum_entry.rb @@ -29,9 +29,7 @@ class PropertyEnumEntry < ActiveRecord::Base :if => Proc.new{|p| p.hardware_profile_property.name == HardwareProfileProperty::MEMORY or p.hardware_profile_property.name == - HardwareProfileProperty::STORAGE } - validates_numericality_of :value, :greater_than => 0, :only_integer => true, - :if => Proc.new{|p| p.hardware_profile_property.name == - HardwareProfileProperty::CPU } - + HardwareProfileProperty::STORAGE or + p.hardware_profile_property.name == + HardwareProfileProperty::CPU } end diff --git a/src/app/models/provider.rb b/src/app/models/provider.rb index 0a0120f..e439520 100644 --- a/src/app/models/provider.rb +++ b/src/app/models/provider.rb @@ -56,9 +56,7 @@ class Provider < ActiveRecord::Base hardware_profiles.each do |hardware_profile| ar_hardware_profile = HardwareProfile.new(:external_key => hardware_profile.id, - :name => hardware_profile.name ? - hardware_profile.name : - hardware_profile.id, + :name => hardware_profile.id, :provider_id => id) ar_hardware_profile.add_properties(hardware_profile) ar_hardware_profile.save! diff --git a/src/spec/factories/hardware_profile_property.rb b/src/spec/factories/hardware_profile_property.rb index 7f470f6..0a2447d 100644 --- a/src/spec/factories/hardware_profile_property.rb +++ b/src/spec/factories/hardware_profile_property.rb @@ -3,35 +3,35 @@ end
Factory.define :mock_hwp1_memory, :parent => :hardware_profile_property do |p| p.name 'memory' - p.kind 'fixed' + p.kind :fixed p.unit 'MB' p.value 1740.8 end
Factory.define :mock_hwp1_storage, :parent => :hardware_profile_property do |p| p.name 'storage' - p.kind 'fixed' + p.kind :fixed p.unit 'GB' p.value 160 end
Factory.define :mock_hwp1_cpu, :parent => :hardware_profile_property do |p| p.name 'cpu' - p.kind 'fixed' + p.kind :fixed p.unit 'count' - p.value 1 + p.value 1.0 end
Factory.define :mock_hwp1_arch, :parent => :hardware_profile_property do |p| p.name 'architecture' - p.kind 'fixed' + p.kind :fixed p.unit 'label' p.value 'i386' end
Factory.define :mock_hwp2_memory, :parent => :hardware_profile_property do |p| p.name 'memory' - p.kind 'range' + p.kind :range p.unit 'MB' p.value 10240 p.range_first 7680 @@ -40,7 +40,7 @@ end
Factory.define :mock_hwp2_storage, :parent => :hardware_profile_property do |p| p.name 'storage' - p.kind 'enum' + p.kind :enum p.unit 'GB' p.value 850 # p.property_enum_entries { |p| [p.association(:mock_hwp2_storage_enum1), @@ -49,49 +49,49 @@ end
Factory.define :mock_hwp2_cpu, :parent => :hardware_profile_property do |p| p.name 'cpu' - p.kind 'fixed' + p.kind :fixed p.unit 'count' - p.value 2 + p.value 2.0 end
Factory.define :mock_hwp2_arch, :parent => :hardware_profile_property do |p| p.name 'architecture' - p.kind 'fixed' + p.kind :fixed p.unit 'label' p.value 'x86_64' end
Factory.define :agg_hwp1_memory, :parent => :hardware_profile_property do |p| p.name 'memory' - p.kind 'fixed' + p.kind :fixed p.unit 'MB' p.value 1740.8 end
Factory.define :agg_hwp1_storage, :parent => :hardware_profile_property do |p| p.name 'storage' - p.kind 'fixed' + p.kind :fixed p.unit 'GB' p.value 160 end
Factory.define :agg_hwp1_cpu, :parent => :hardware_profile_property do |p| p.name 'cpu' - p.kind 'fixed' + p.kind :fixed p.unit 'count' p.value 1 end
Factory.define :agg_hwp1_arch, :parent => :hardware_profile_property do |p| p.name 'architecture' - p.kind 'fixed' + p.kind :fixed p.unit 'label' p.value 'i386' end
Factory.define :agg_hwp2_memory, :parent => :hardware_profile_property do |p| p.name 'memory' - p.kind 'range' + p.kind :range p.unit 'MB' p.value 10240 p.range_first 7680 @@ -100,7 +100,7 @@ end
Factory.define :agg_hwp2_storage, :parent => :hardware_profile_property do |p| p.name 'storage' - p.kind 'enum' + p.kind :enum p.unit 'GB' p.value 850 # p.property_enum_entries { |p| [p.association(:agg_hwp2_storage_enum1), @@ -109,14 +109,14 @@ end
Factory.define :agg_hwp2_cpu, :parent => :hardware_profile_property do |p| p.name 'cpu' - p.kind 'fixed' + p.kind :fixed p.unit 'count' p.value 2 end
Factory.define :agg_hwp2_arch, :parent => :hardware_profile_property do |p| p.name 'architecture' - p.kind 'fixed' + p.kind :fixed p.unit 'label' p.value 'x86_64' end diff --git a/src/spec/models/hardware_profile_spec.rb b/src/spec/models/hardware_profile_spec.rb index ab04fe1..8aa6557 100644 --- a/src/spec/models/hardware_profile_spec.rb +++ b/src/spec/models/hardware_profile_spec.rb @@ -42,6 +42,20 @@ describe HardwareProfile do end end
+ it "should require valid amount of CPU" do + [nil, "hello", -1].each do |fail_value| + @hp.cpu.value = fail_value + @hp.should_not be_valid + end + end + + it "should allow numerical amount of CPU" do + [2, 2.2].each do |fail_value| + @hp.cpu.value = fail_value + @hp.should be_valid + end + end + it "should allow Aggregator profiles only for provider profiles" do @hp.provider = nil