class LogStash::Outputs::Keystone::Token

Attributes

expires_at[RW]
id[RW]
keystone_client[RW]

Public Class Methods

new() click to toggle source
# File lib/logstash/outputs/keystone/token.rb, line 63
def initialize
  @logger = Cabin::Channel.get(LogStash)
end

Public Instance Methods

get_sleep_time(attempt) click to toggle source
# File lib/logstash/outputs/keystone/token.rb, line 48
def get_sleep_time(attempt)
  sleep_for = attempt**2
  sleep_for <= 60 ? sleep_for : 60
end
request_new_token(username, user_domain_name, password, project_name, project_domain_name) click to toggle source
# File lib/logstash/outputs/keystone/token.rb, line 27
def request_new_token(username, user_domain_name, password, project_name, project_domain_name)
  attempt = 0
  begin
    @logger.info("Connecting to keystone, attempt no. #{attempt}")
    token = @keystone_client
                .authenticate(username, user_domain_name, password, project_name, project_domain_name)
    set_token(token[:token], token[:expires_at])
  rescue => e
    attempt += 1
    sleep_for = get_sleep_time(attempt)
    @logger.error("Sending event to keystone threw exception, "\
                  "will sleep for #{sleep_for} seconds.",
                  :exceptionew => e)

    Stud.stoppable_sleep(sleep_for)
    retry
  end
  @logger.info('New token requested')
  @logger.debug("token=#{@id}, expire_at=#{@expires_at}")
end
set_keystone_client(keystone_api, insecure) click to toggle source
# File lib/logstash/outputs/keystone/token.rb, line 58
def set_keystone_client(keystone_api, insecure)
  @keystone_client = LogStash::Outputs::Keystone::KeystoneClient
    .new(keystone_api, insecure)
end
set_token(id, expires_at) click to toggle source
# File lib/logstash/outputs/keystone/token.rb, line 53
def set_token(id, expires_at)
  @id = id
  @expires_at = expires_at
end
valid?() click to toggle source
# File lib/logstash/outputs/keystone/token.rb, line 67
def valid?
  token_valid = true
  now = DateTime.now + Rational(1, 1440)
  if @id.nil? || now >= @expires_at
    token_valid = false
  end
  token_valid
end