class LogStash::Outputs::Swift::WriteContainerPermissionValidator

Attributes

logger[R]

Public Class Methods

new(logger) click to toggle source
# File lib/logstash/outputs/swift/write_container_permission_validator.rb, line 12
def initialize(logger)
  @logger = logger
end

Public Instance Methods

valid?(container_resource) click to toggle source
# File lib/logstash/outputs/swift/write_container_permission_validator.rb, line 16
def valid?(container_resource)
  begin
    upload_test_file(container_resource)
    true
  rescue StandardError => e
    logger.error("Error validating bucket write permissions!",
      :message => e.message,
      :class => e.class.name,
      :backtrace => e.backtrace
      )
    false
  end
end

Private Instance Methods

upload_test_file(container_resource) click to toggle source
# File lib/logstash/outputs/swift/write_container_permission_validator.rb, line 31
def upload_test_file(container_resource)
  generated_at = Time.now

  key = "logstash-programmatic-access-test-object-#{generated_at}"
  content = "Logstash permission check on #{generated_at}, by #{Socket.gethostname}"

  begin
    obj = container_resource.files.create(key: key, body: content)

    begin
      obj.destroy
    rescue
      # Try to remove the files on the remote bucket,
      # but don't raise any errors if that doesn't work.
      # since we only really need `putobject`.
    end
  end
end