def create options = {}
resp = case
when options[:instance_id]
client.create_image(options)
when options[:image_location] || options[:root_device_name]
if kernel = options.delete(:kernel)
options[:kernel_id] = kernel.id
end
if ramdisk = options.delete(:ramdisk)
options[:ramdisk_id] = ramdisk.id
end
options[:block_device_mappings] =
translate_block_device_mappings(options[:block_device_mappings]) if
options[:block_device_mappings]
client.register_image(options)
else
raise(ArgumentError,
"expected instance_id, image_location, " +
"or root_device_name")
end
Image.new(resp.image_id, :config => config)
end