From: Jan Provaznik <[email protected]>

  * 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

_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to