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: jprovazn(a)redhat.com
To: deltacloud-devel(a)lists.fedorahosted.org
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 <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
_______________________________________________
deltacloud-devel mailing list
deltacloud-devel(a)lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/deltacloud-devel