Michal Fojtik wrote:
> On 26/05/10 08:54 -0400, Scott Seago wrote:
>
>> 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?
>
> You mean how we display range/enum as a String ?
> I suggest:
>
> Range: "1..3"
> Enum: "1,2,3,4,5"
>
Sure -- also how do we combine that with value. Currently we just show 
the name+unit -- i.e. "5 MB" Perhaps we could do something like this:
"5 MB (valid range 1..10 MB)", "10 GB (valid values 10,20,30,40,50 GB)"

In any case that can be a separate patch since it's not a functional 
requirement which affects interaction with the API.
>
>>         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
>
> This patch looks good for me. ACK+
>
> -- Michal
>

I'll push this as-is. If you or lutter want to update the to_s method 
separately that would be fine.

Scott

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

Reply via email to