Hardware Profile client was missing the attributes to handle range and enum 
properties.

Signed-off-by: Scott Seago <[email protected]>
---
 client/lib/dcloud/hardware_profile.rb |   41 ++++++++++++++++++++++++++++++++-
 1 files changed, 40 insertions(+), 1 deletions(-)

diff --git a/client/lib/dcloud/hardware_profile.rb 
b/client/lib/dcloud/hardware_profile.rb
index d6c4aa0..02ee303 100644
--- a/client/lib/dcloud/hardware_profile.rb
+++ b/client/lib/dcloud/hardware_profile.rb
@@ -22,7 +22,33 @@ module DCloud
     class HardwareProfile < BaseModel
 
       class Property
-        attr_reader :name, :unit, :value
+        class Range
+          attr_reader :first, :last
+          def initialize(element)
+            if element
+              @first = element.attributes['first']
+              @last = element.attributes['last']
+            end
+          end
+          def present?
+            ! @first.nil?
+          end
+        end
+        class Enum
+          attr_reader :entries
+          def initialize(element)
+            @entries = []
+            if element
+              element.get_elements( 'entry' ).each do |entry|
+                @entries << entry.attributes['value']
+              end
+            end
+          end
+          def present?
+            ! @entries.empty?
+          end
+        end
+        attr_reader :name, :kind, :unit, :value, :range, :enum
 
         def initialize(xml, name)
           @name = name
@@ -30,6 +56,9 @@ module DCloud
           if p
             @value = p.attributes['value']
             @unit = p.attributes['unit']
+            @kind = p.attributes['kind']
+            @range = Range.new(p.get_elements('range')[0]) if @kind=='range'
+            @enum = Enum.new(p.get_elements('enum')[0]) if @kind=='enum'
           end
         end
 
@@ -37,6 +66,7 @@ module DCloud
           ! @value.nil?
         end
 
+        # FIXME: how to  range/enum/kind bits fit into this?
         def to_s
           v = @value || "---"
           u = @unit || ""
@@ -52,10 +82,18 @@ module DCloud
         end
       end
 
+      class IntegerProperty < Property
+        def initialize(xml, name)
+          super(xml, name)
+          @value = @value.to_i if @value
+        end
+      end
+
       xml_tag_name :hardware_profile
 
       attribute :memory
       attribute :storage
+      attribute :cpu
       attribute :architecture
 
       def initialize(client, uri, xml=nil)
@@ -67,6 +105,7 @@ module DCloud
         unless xml.nil?
           @memory = FloatProperty.new(xml, 'memory')
           @storage = FloatProperty.new(xml, 'storage')
+          @cpu = IntegerProperty.new(xml, 'cpu')
           @architecture = Property.new(xml, 'architecture')
         end
       end
-- 
1.6.2.5

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

Reply via email to