class LogStash::Inputs::Rackspace

Public Instance Methods

close() click to toggle source
# File lib/logstash/inputs/rackspace.rb, line 85
def close
  @service = nil
end
register() click to toggle source
# File lib/logstash/inputs/rackspace.rb, line 31
def register
  require "fog"
  @service = Fog::Rackspace::Queues.new(
    :rackspace_username  => @username,   # Your Rackspace Username
    :rackspace_api_key   => @api_key,         # Your Rackspace API key
    :rackspace_region    => @region.to_sym,                  # Your desired region
    :connection_options  => {}                     # Optional connection options
  )

  begin
    @rackspace_queue = @service.queues.create :name => @queue
  rescue Fog::Rackspace::Queues::ServiceError => e
    if e.status_code == 204
      @logger.warn("Queue #{@queue} already exists")
    else
      @logger.warn("something bad happened!")
    end # rescue
  end # begin
  @service.queues.each_with_index do |queue, index|
    if queue.name == @queue
      @rackspace_queue = @service.queues[index]
      break
    end
  end
  @logger.info("Opened connection to rackspace cloud queues")
end
run(output_queue) click to toggle source
# File lib/logstash/inputs/rackspace.rb, line 73
def run(output_queue)
  while !finished?
    claim = @rackspace_queue.claims.create :ttl => @ttl, :grace => 100, :limit => @claim
    if claim
      claim.messages.each do |message|
        queue_event message, output_queue
      end
    end # unless
  end # while !finished
end

Private Instance Methods

queue_event(msg, output_queue) click to toggle source
# File lib/logstash/inputs/rackspace.rb, line 59
def queue_event(msg, output_queue)
  begin
    @codec.decode(msg.body.to_s) do |event|
      decorate(event)
      output_queue << event
    end
    msg.destroy
  rescue => e # parse or event creation error
    @logger.error("Failed to create event", :message => msg, :exception => e,
                  :backtrace => e.backtrace);
  end
end