# File lib/fog/aws/models/compute/spot_requests.rb, line 37
        def bootstrap(new_attributes = {})
          spot_request = service.spot_requests.new(new_attributes)

          unless new_attributes[:key_name]
            # first or create fog_#{credential} keypair
            name = Fog.respond_to?(:credential) && Fog.credential || :default
            unless spot_request.key_pair = service.key_pairs.get("fog_#{name}")
              spot_request.key_pair = service.key_pairs.create(
                :name => "fog_#{name}",
                :public_key => spot_request.public_key
              )
            end
          end

          # make sure port 22 is open in the first security group
          security_group = service.security_groups.get(spot_request.groups.first)
          authorized = security_group.ip_permissions.detect do |ip_permission|
            ip_permission['ipRanges'].first && ip_permission['ipRanges'].first['cidrIp'] == '0.0.0.0/0' &&
            ip_permission['fromPort'] == 22 &&
            ip_permission['ipProtocol'] == 'tcp' &&
            ip_permission['toPort'] == 22
          end
          unless authorized
            security_group.authorize_port_range(22..22)
          end

          spot_request.save
          Fog.wait_for { spot_request.reload.ready? rescue nil }
          server = service.servers.get(spot_request.instance_id)
          if spot_request.tags
            for key, value in spot_request.tags
              service.tags.create(
                :key          => key,
                :resource_id  => spot_request.instance_id,
                :value        => value
              )
            end
          end
          server.wait_for { ready? }
          server.setup(:key_data => [spot_request.private_key])
          server
        end