From: David Lutterkort <[email protected]>
---
server/lib/deltacloud/hardware_profile.rb | 48 ++++++++++++++++++--
.../deltacloud/helpers/hardware_profiles_helper.rb | 4 +-
2 files changed, 46 insertions(+), 6 deletions(-)
diff --git a/server/lib/deltacloud/hardware_profile.rb
b/server/lib/deltacloud/hardware_profile.rb
index 613a9d5..6c0605b 100644
--- a/server/lib/deltacloud/hardware_profile.rb
+++ b/server/lib/deltacloud/hardware_profile.rb
@@ -2,8 +2,19 @@
module Deltacloud
class HardwareProfile
+ UNITS = {
+ :memory => "MB",
+ :storage => "GB",
+ :architecture => "label",
+ :cpu => "count"
+ }
+
+ def self.unit(name)
+ UNITS[name]
+ end
+
class Property
- attr_reader :name, :kind
+ attr_reader :name, :kind, :default
# kind == :range
attr_reader :first, :last
# kind == :enum
@@ -11,29 +22,45 @@ module Deltacloud
# kind == :fixed
attr_reader :value
- def initialize(name, values)
+ def initialize(name, values, opts = {})
@name = name
if values.is_a?(Range)
@kind = :range
@first = values.first
@last = values.last
+ @default = values.first
elsif values.is_a?(Array)
@kind = :enum
@values = values
+ @default = values.first
else
@kind = :fixed
@value = values
+ @default = @value
end
+ @default = opts[:default] if opts[:default]
+ end
+
+ def unit
+ HardwareProfile.unit(name)
+ end
+
+ def param
+ "hwp_#{name}"
+ end
+
+ def fixed?
+ kind == :fixed
end
end
class << self
def property(prop)
define_method(prop) do |*args|
- values, *ignored = *args
+ values, opts, *ignored = *args
instvar = :"@#{prop}"
unless values.nil?
- @properties[prop] = Property.new(prop, values)
+ @properties[prop] = Property.new(prop, values, opts || {})
end
@properties[prop]
end
@@ -55,5 +82,18 @@ module Deltacloud
def each_property(&block)
@properties.each_value { |prop| yield prop }
end
+
+ def properties
+ @properties.values
+ end
+
+ def property(name)
+ @properties[name.to_sym]
+ end
+
+ def default?(prop, v)
+ p = @properties[prop.to_sym]
+ p && p.default.to_s == v
+ end
end
end
diff --git a/server/lib/deltacloud/helpers/hardware_profiles_helper.rb
b/server/lib/deltacloud/helpers/hardware_profiles_helper.rb
index 89d84e0..979f818 100644
--- a/server/lib/deltacloud/helpers/hardware_profiles_helper.rb
+++ b/server/lib/deltacloud/helpers/hardware_profiles_helper.rb
@@ -4,9 +4,9 @@ module HardwareProfilesHelper
return "∅" unless prop
case prop.kind
when :range
- "#{prop.first} - #{prop.last}"
+ "#{prop.first} - #{prop.last} (default: #{prop.default})"
when :enum
- prop.values.join(', ')
+ prop.values.join(', ') + " (default: #{prop.default})"
else
prop.value.to_s
end
--
1.6.6.1
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel