# File lib/ec2/right_ec2.rb, line 502
    def launch_instances(image_id, lparams={}) 
      @logger.info("Launching instance of image #{image_id} for #{@aws_access_key_id}, " + 
                   "key: #{lparams[:key_name]}, groups: #{(lparams[:group_ids]).to_a.join(',')}")
      # careful: keyName and securityGroups may be nil
      params = hash_params('SecurityGroup', lparams[:group_ids].to_a)
      params.update( {'ImageId'        => image_id,
                      'MinCount'       => (lparams[:min_count] || 1).to_s, 
                      'MaxCount'       => (lparams[:max_count] || 1).to_s, 
                      'AddressingType' => lparams[:addressing_type] || DEFAULT_ADDRESSING_TYPE, 
                      'InstanceType'   => lparams[:instance_type]   || DEFAULT_INSTANCE_TYPE })
      # optional params
      params['KeyName']                    = lparams[:key_name]              unless lparams[:key_name].blank? 
      params['KernelId']                   = lparams[:kernel_id]             unless lparams[:kernel_id].blank? 
      params['RamdiskId']                  = lparams[:ramdisk_id]            unless lparams[:ramdisk_id].blank? 
      params['Placement.AvailabilityZone'] = lparams[:availability_zone]     unless lparams[:availability_zone].blank? 
      params['BlockDeviceMappings']        = lparams[:block_device_mappings] unless lparams[:block_device_mappings].blank?
      unless lparams[:user_data].blank? 
        lparams[:user_data].strip! 
          # Do not use CGI::escape(encode64(...)) as it is done in Amazons EC2 library.
          # Amazon 169.254.169.254 does not like escaped symbols!
          # And it doesn't like "\n" inside of encoded string! Grrr....
          # Otherwise, some of UserData symbols will be lost...
        params['UserData'] = Base64.encode64(lparams[:user_data]).delete("\n") unless lparams[:user_data].blank?
      end
      link = generate_request("RunInstances", params)
        #debugger
      instances = request_info(link, QEc2DescribeInstancesParser.new(:logger => @logger))
      get_desc_instances(instances)
    rescue Exception
      on_exception
    end