From ebe02b874d2079783be7bc1a49477b6e6f7fc997 Mon Sep 17 00:00:00 2001 From: Wesley Beary Date: Thu, 9 Jul 2009 23:02:24 -0700 Subject: [PATCH] fix for image product_codes in parser --- lib/fog/aws/ec2.rb | 2 -- lib/fog/aws/ec2/parsers.rb | 21 ++++++++++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/lib/fog/aws/ec2.rb b/lib/fog/aws/ec2.rb index 724b8d447..95303a70a 100644 --- a/lib/fog/aws/ec2.rb +++ b/lib/fog/aws/ec2.rb @@ -390,8 +390,6 @@ module Fog :method => 'POST' }) - p response - if parser && !response.body.empty? Nokogiri::XML::SAX::Parser.new(parser).parse(response.body.split(/<\?xml.*\?>/)[1]) response.body = parser.response diff --git a/lib/fog/aws/ec2/parsers.rb b/lib/fog/aws/ec2/parsers.rb index 523289a94..dafff4340 100644 --- a/lib/fog/aws/ec2/parsers.rb +++ b/lib/fog/aws/ec2/parsers.rb @@ -101,10 +101,17 @@ module Fog class DescribeImages < Fog::Parsers::Base def reset - @image = {} + @image = { :product_codes => [] } @response = { :image_set => [] } end + def start_element(name, attrs = []) + if name == 'productCodes' + @in_product_codes = true + end + @value = '' + end + def end_element(name) case name when 'architecture' @@ -126,10 +133,18 @@ module Fog @image[:is_public] = false end when 'item' - @response[:image_set] << @image - @image = {} + unless @in_product_codes + @response[:image_set] << @image + @image = { :product_codes => [] } + end when 'kernelId' @image[:kernel_id] = @value + when 'platform' + @image[:platform] = @value + when 'productCode' + @image[:product_codes] << @value + when 'productCodes' + @in_product_codes = false when 'ramdiskId' @image[:ramdisk_id] = @value when 'requestId'