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