From: Jan Provaznik <jprovazn(a)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
--
1.7.0.1