ACK

Works with the latest Core.

Note that when you set up a mock provider, add a mockuser/mockpassword cloud 
account, and click on the Realms tab, you will see two realms with the name 
"Europe" instead of one "Europe" and one "United States".

However, that is an issue with the deltacloud-client library and Michal Fojtik 
is already looking into it. You can push this patch.

Thomas


----- Original Message -----
From: [email protected]
To: [email protected]
Sent: Wednesday, July 7, 2010 6:05:16 PM GMT +01:00 Amsterdam / Berlin / Bern / 
Rome / Stockholm / Vienna
Subject: [deltacloud-devel] [PATCH aggregator] Core and Aggregator compatibility

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
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to