# File lib/ohai/mixin/ec2_metadata.rb, line 109
      def fetch_metadata(id='', api_version=nil)
        api_version ||= best_api_version
        return Hash.new if api_version.nil?
        metadata = Hash.new
        metadata_get(id, api_version).body.split("\n").each do |o|
          key = expand_path("#{id}#{o}")
          if key[-1..-1] != '/'
            metadata[metadata_key(key)] =
              if EC2_ARRAY_VALUES.include? key
                metadata_get(key, api_version).body.split("\n")
              else
                metadata_get(key, api_version).body
              end
          elsif not key.eql?(id) and not key.eql?('/')
            name = key[0..-2]
            sym = metadata_key(name)
            if EC2_ARRAY_DIR.include?(name)
              metadata[sym] = fetch_dir_metadata(key, api_version)
            elsif EC2_JSON_DIR.include?(name)
              metadata[sym] = fetch_json_dir_metadata(key, api_version)
            else
              fetch_metadata(key, api_version).each{|k,v| metadata[k] = v}
            end
          end
        end
        metadata
      end