def fetch_metadata(id='', api_version=nil)
api_version ||= best_api_version
return Hash.new if api_version.nil?
metadata = Hash.new
retrieved_metadata = metadata_get(id, api_version)
if retrieved_metadata
retrieved_metadata.split("\n").each do |o|
key = expand_path("#{id}#{o}")
if key[-1..-1] != '/'
metadata[metadata_key(key)] =
if EC2_ARRAY_VALUES.include? key
retr_meta = metadata_get(key, api_version)
retr_meta ? retr_meta.split("\n") : retr_meta
else
metadata_get(key, api_version)
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
end