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