# File lib/ec2/right_ec2_spot_instances.rb, line 203
    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?
        # See RightAws::Ec2#run_instances
        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