diff --git a/lib/fog/terremark/parsers/shared/vapp.rb b/lib/fog/terremark/parsers/shared/vapp.rb index aee6af9db..a35c5f255 100644 --- a/lib/fog/terremark/parsers/shared/vapp.rb +++ b/lib/fog/terremark/parsers/shared/vapp.rb @@ -6,7 +6,9 @@ module Fog class Vapp < Fog::Parsers::Base def reset - @response = { 'Links' => [] } + @response = { 'Links' => [], 'VirtualHardware' => {} } + @in_operating_system = false + @resource_type = nil end def start_element(name, attributes) @@ -18,7 +20,9 @@ module Fog link[attributes.shift] = attributes.shift end @response['Links'] << link - when 'VApp' + when 'OperatingSystemSection' + @in_operating_system = true + when 'VApp' vapp = {} until attributes.empty? if attributes.first.is_a?(Array) @@ -29,13 +33,38 @@ module Fog end end @response.merge!(vapp.reject {|key,value| !['href', 'name', 'size', 'status', 'type'].include?(key)}) - end + end end def end_element(name) case name when 'IpAddress' @response['IpAddress'] = @value + when 'Description' + if @in_operating_system + @response['OperatingSystem'][name] = @value + @in_operating_system = false + end + when 'ResourceType' + @resource_type = @value + case @value + when '3' + @get_cpu = true # cpu + when '4' # memory + @get_ram = true + when '17' # disks + @get_disks = true + end + when 'VirtualQuantity' + case @resource_type + when '3' + @response['VirtualHardware']['cpu'] = @value + when '4' + @response['VirtualHardware']['ram'] = @value + when '17' + @response['VirtualHardware']['disks'] ||= [] + @response['VirtualHardware']['disks'] << @value + end end end @@ -45,3 +74,4 @@ module Fog end end end +