def create_image(instance_id, name, description, no_reboot = false, options = {})
params = {}
block_device_mappings = options[:block_device_mappings] || []
params.merge!Fog::AWS.indexed_param('BlockDeviceMapping.%d.DeviceName', block_device_mappings.map{|mapping| mapping['DeviceName']})
params.merge!Fog::AWS.indexed_param('BlockDeviceMapping.%d.NoDevice', block_device_mappings.map{|mapping| mapping['NoDevice']})
params.merge!Fog::AWS.indexed_param('BlockDeviceMapping.%d.VirtualName', block_device_mappings.map{|mapping| mapping['VirtualName']})
params.merge!Fog::AWS.indexed_param('BlockDeviceMapping.%d.Ebs.SnapshotId', block_device_mappings.map{|mapping| mapping['Ebs.SnapshotId']})
params.merge!Fog::AWS.indexed_param('BlockDeviceMapping.%d.Ebs.DeleteOnTermination', block_device_mappings.map{|mapping| mapping['Ebs.DeleteOnTermination']})
params.merge!Fog::AWS.indexed_param('BlockDeviceMapping.%d.Ebs.VolumeType', block_device_mappings.map{|mapping| mapping['Ebs.VolumeType']})
params.merge!Fog::AWS.indexed_param('BlockDeviceMapping.%d.Ebs.Iops', block_device_mappings.map{|mapping| mapping['Ebs.Iops']})
params.reject!{|k,v| v.nil?}
reserved_ebs_root_device = '/dev/sda1'
block_devices = options.delete(:block_device_mappings) || []
register_image_response = register_image(name, description, reserved_ebs_root_device, block_devices, options)
response = Excon::Response.new
if instance_id && !name.empty?
response.status = 200
response.body = {
'requestId' => Fog::AWS::Mock.request_id,
'imageId' => register_image_response.body['imageId']
}
else
response.status = 400
response.body = {
'Code' => 'InvalidParameterValue'
}
if name.empty?
response.body['Message'] = "Invalid value '' for name. Must be specified."
end
end
response
end