class Barbeque::ExecutionLog

Constants

DEFAULT_S3_BUCKET_NAME

Public Class Methods

s3_client() click to toggle source
# File lib/barbeque/execution_log.rb, line 13
def s3_client
  @s3_client ||= Aws::S3::Client.new
end

Public Instance Methods

load(execution:) click to toggle source

@param [Barbeque::JobExecution,Barbeque::JobRetry] execution @return [Hash] log

# File lib/barbeque/execution_log.rb, line 43
def load(execution:)
  return {} if execution.pending?

  message = get(execution, 'message.json')
  stdout = get(execution, 'stdout.txt')
  stderr = get(execution, 'stderr.txt')
  if message || stdout || stderr
    {
      'message' => message,
      'stdout' => stdout,
      'stderr' => stderr,
    }
  else
    nil
  end
end
save_message(execution, message) click to toggle source

@param [Barbeque::JobExecution] execution @param [Barbeque::Message::JobExecution] message

# File lib/barbeque/execution_log.rb, line 20
def save_message(execution, message)
  put(execution, 'message.json', message.body.to_json)
end
save_stdout_and_stderr(execution, stdout, stderr) click to toggle source

@param [Barbeque::JobExecution,Barbeque::JobRetry] execution @param [String] stdout @param [String] stderr

# File lib/barbeque/execution_log.rb, line 27
def save_stdout_and_stderr(execution, stdout, stderr)
  put(execution, 'stdout.txt', stdout)
  put(execution, 'stderr.txt', stderr)
end
try_save_stdout_and_stderr(execution, stdout, stderr) click to toggle source

@param [Barbeque::JobExecution,Barbeque::JobRetry] execution @param [String] stdout @param [String] stderr

# File lib/barbeque/execution_log.rb, line 35
def try_save_stdout_and_stderr(execution, stdout, stderr)
  save_stdout_and_stderr(execution, stdout, stderr)
rescue Aws::S3::Errors::ServiceError => e
  ExceptionHandler.handle_exception(e)
end

Private Instance Methods

get(execution, filename) click to toggle source

@param [Barbeque::JobExecution,Barbeque::JobRetry] execution @param [String] filename @return [String]

# File lib/barbeque/execution_log.rb, line 75
def get(execution, filename)
  s3_object = ExecutionLog.s3_client.get_object(
    bucket: s3_bucket_name,
    key: s3_key_for(execution, filename),
  )
  s3_object.body.read
rescue Aws::S3::Errors::NoSuchKey
  nil
end
put(execution, filename, content) click to toggle source

@param [Barbeque::JobExecution,Barbeque::JobRetry] execution @param [String] filename @param [String] content

# File lib/barbeque/execution_log.rb, line 88
def put(execution, filename, content)
  ExecutionLog.s3_client.put_object(
    bucket: s3_bucket_name,
    key: s3_key_for(execution, filename),
    body: content,
  )
end
s3_bucket_name() click to toggle source
# File lib/barbeque/execution_log.rb, line 62
def s3_bucket_name
  @s3_bucket_name ||= ENV['BARBEQUE_S3_BUCKET_NAME'] || DEFAULT_S3_BUCKET_NAME
end
s3_key_for(execution, filename) click to toggle source

@param [Barbeque::JobExecution,Barbeque::JobRetry] execution @param [String] filename

# File lib/barbeque/execution_log.rb, line 68
def s3_key_for(execution, filename)
  "#{execution.app.name}/#{execution.job_definition.job}/#{execution.message_id}/#{filename}"
end