def request_spot_instances(options)
options = options.dup
request_hash = { 'SpotPrice' => options[:spot_price],
'LaunchSpecification.ImageId' => options[:image_id],
'LaunchSpecification.InstanceType' => options[:instance_type]}
request_hash['ValidFrom'] = AwsUtils::utc_iso8601(options[:valid_from]) unless options[:valid_from].blank?
request_hash['ValidUntil'] = AwsUtils::utc_iso8601(options[:valid_until]) unless options[:valid_until].blank?
request_hash['InstanceCount'] = options[:instance_count] unless options[:instance_count].blank?
request_hash['Type'] = options[:type] unless options[:type].blank?
request_hash['LaunchGroup'] = options[:launch_group] unless options[:launch_group].blank?
request_hash['AvailabilityZoneGroup'] = options[:availability_zone_group] unless options[:availability_zone_group].blank?
request_hash['LaunchSpecification.KeyName'] = options[:key_name] unless options[:key_name].blank?
request_hash['LaunchSpecification.AddressingType'] = options[:addressing_type] unless options[:addressing_type].blank?
request_hash['LaunchSpecification.KernelId'] = options[:kernel_id] unless options[:kernel_id].blank?
request_hash['LaunchSpecification.RamdiskId'] = options[:ramdisk_id] unless options[:ramdisk_id].blank?
request_hash['LaunchSpecification.SubnetId'] = options[:subnet_id] unless options[:subnet_id].blank?
request_hash['LaunchSpecification.Placement.AvailabilityZone'] = options[:availability_zone] unless options[:availability_zone].blank?
request_hash['LaunchSpecification.Monitoring.Enabled'] = options[:monitoring_enabled] unless options[:monitoring_enabled].blank?
request_hash.merge!(amazonize_list('LaunchSpecification.SecurityGroup', options[:groups])) unless options[:groups].blank?
request_hash.merge!(amazonize_block_device_mappings(options[:block_device_mappings], 'LaunchSpecification.BlockDeviceMapping'))
unless options[:user_data].blank?
options[:user_data].strip!
request_hash['LaunchSpecification.UserData'] = Base64.encode64(options[:user_data]).delete("\n") unless options[:user_data].blank?
end
link = generate_request("RequestSpotInstances", request_hash)
request_info(link, QEc2DescribeSpotInstanceParser.new(:logger => @logger))
end