barbeque 0.6.3 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c926b3660782c169804dc6f07c16757ed051c9df
4
- data.tar.gz: fc2df2f86cb3c6cf4192ce810a47024b8483fb06
3
+ metadata.gz: e23cea0a69664e6f2351d1651daaf0b42355a71f
4
+ data.tar.gz: 4c76a4e57cbb43baa302841f7eb565a1f3602fb6
5
5
  SHA512:
6
- metadata.gz: 50f25fbd8525e4ce581cf92212565170ce1256666be8e917a9dc114fe8bfe0e499e20add7da02cb5647acafa924fac744cd78df85dade310cb9f745bb644efc1
7
- data.tar.gz: d4389a130d4e0939bacdafdeec7e623851a6ea01414bdc19fef82cf29a46f64d8201a2ee1328157885235fd4534421242f90d6f2bfdb591b6f6c0b73db715180
6
+ metadata.gz: 1021988ef2880d1bb8009d5c2fb397803a0e9a02577ff66cd961638f415dd877012340bb86564b6855efa1c65d44751b1bffc16aea1bce98697465f3c4a1b940
7
+ data.tar.gz: 0e48ddda04e6ebb25e5cff2bcc7c21f440848b2a5588286eb9e89289d70d5b6863bdb00ebe9c7d6dc70424bba37bbc143795e7cc055fcc089518a57a3375f8c7
@@ -7,21 +7,25 @@ module Barbeque
7
7
  DEFAULT_S3_BUCKET_NAME = 'barbeque'
8
8
 
9
9
  class << self
10
- delegate :save, :load, to: :new
10
+ delegate :save_message, :save_stdout_and_stderr, :load, to: :new
11
11
 
12
12
  def s3_client
13
13
  @s3_client ||= Aws::S3::Client.new
14
14
  end
15
15
  end
16
16
 
17
+ # @param [Barbeque::JobExecution] execution
18
+ # @param [Barbeque::Message::JobExecution] message
19
+ def save_message(execution, message)
20
+ put(execution, 'message.json', message.body.to_json)
21
+ end
22
+
17
23
  # @param [Barbeque::JobExecution,Barbeque::JobRetry] execution
18
- # @param [Hash] log
19
- def save(execution:, log:)
20
- ExecutionLog.s3_client.put_object(
21
- bucket: s3_bucket_name,
22
- key: s3_key_for(execution: execution),
23
- body: log.to_json,
24
- )
24
+ # @param [String] stdout
25
+ # @param [String] stderr
26
+ def save_stdout_and_stderr(execution, stdout, stderr)
27
+ put(execution, 'stdout.txt', stdout)
28
+ put(execution, 'stderr.txt', stderr)
25
29
  end
26
30
 
27
31
  # @param [Barbeque::JobExecution,Barbeque::JobRetry] execution
@@ -29,13 +33,27 @@ module Barbeque
29
33
  def load(execution:)
30
34
  return {} if execution.pending?
31
35
 
32
- s3_object = ExecutionLog.s3_client.get_object(
33
- bucket: s3_bucket_name,
34
- key: s3_key_for(execution: execution),
35
- )
36
- JSON.load(s3_object.body.read)
37
- rescue Aws::S3::Errors::NoSuchKey
38
- nil
36
+ message = get(execution, 'message.json')
37
+ stdout = get(execution, 'stdout.txt')
38
+ stderr = get(execution, 'stderr.txt')
39
+ if message || stdout || stderr
40
+ {
41
+ 'message' => message,
42
+ 'stdout' => stdout,
43
+ 'stderr' => stderr,
44
+ }
45
+ else
46
+ # Try to load legacy format
47
+ begin
48
+ s3_object = ExecutionLog.s3_client.get_object(
49
+ bucket: s3_bucket_name,
50
+ key: legacy_s3_key_for(execution),
51
+ )
52
+ JSON.parse(s3_object.body.read)
53
+ rescue Aws::S3::Errors::NoSuchKey
54
+ nil
55
+ end
56
+ end
39
57
  end
40
58
 
41
59
  private
@@ -45,9 +63,38 @@ module Barbeque
45
63
  end
46
64
 
47
65
  # @param [Barbeque::JobExecution,Barbeque::JobRetry] execution
48
- # @param [String] message_id
49
- def s3_key_for(execution:)
50
- File.join(execution.app.name, execution.job_definition.job, execution.message_id)
66
+ # @param [String] filename
67
+ def s3_key_for(execution, filename)
68
+ "#{execution.app.name}/#{execution.job_definition.job}/#{execution.message_id}/#{filename}"
69
+ end
70
+
71
+ # @param [Barbeque::JobExecution,Barbeque::JobRetry] execution
72
+ def legacy_s3_key_for(execution)
73
+ "#{execution.app.name}/#{execution.job_definition.job}/#{execution.message_id}"
74
+ end
75
+
76
+ # @param [Barbeque::JobExecution,Barbeque::JobRetry] execution
77
+ # @param [String] filename
78
+ # @return [String]
79
+ def get(execution, filename)
80
+ s3_object = ExecutionLog.s3_client.get_object(
81
+ bucket: s3_bucket_name,
82
+ key: s3_key_for(execution, filename),
83
+ )
84
+ s3_object.body.read
85
+ rescue Aws::S3::Errors::NoSuchKey
86
+ nil
87
+ end
88
+
89
+ # @param [Barbeque::JobExecution,Barbeque::JobRetry] execution
90
+ # @param [String] filename
91
+ # @param [String] content
92
+ def put(execution, filename, content)
93
+ ExecutionLog.s3_client.put_object(
94
+ bucket: s3_bucket_name,
95
+ key: s3_key_for(execution, filename),
96
+ body: content,
97
+ )
51
98
  end
52
99
  end
53
100
  end
@@ -38,8 +38,8 @@ module Barbeque
38
38
  private
39
39
 
40
40
  def log_result(execution, stdout, stderr)
41
- log = { message: @message.body.to_json, stdout: stdout, stderr: stderr }
42
- Barbeque::ExecutionLog.save(execution: execution, log: log)
41
+ Barbeque::ExecutionLog.save_message(execution, @message) # TODO: Should be saved earlier
42
+ Barbeque::ExecutionLog.save_stdout_and_stderr(execution, stdout, stderr)
43
43
  end
44
44
 
45
45
  def notify_slack(job_execution)
@@ -44,8 +44,7 @@ module Barbeque
44
44
  private
45
45
 
46
46
  def log_result(job_retry, stdout, stderr)
47
- log = { stdout: stdout, stderr: stderr }
48
- Barbeque::ExecutionLog.save(execution: job_retry, log: log)
47
+ Barbeque::ExecutionLog.save_stdout_and_stderr(job_retry, stdout, stderr)
49
48
  end
50
49
 
51
50
  # @param [Barbeque::JobRetry] job_retry
@@ -1,3 +1,3 @@
1
1
  module Barbeque
2
- VERSION = '0.6.3'
2
+ VERSION = '0.7.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: barbeque
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Kokubun
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-10 00:00:00.000000000 Z
11
+ date: 2017-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: adminlte2-rails