barbeque 0.7.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
1
  module Barbeque
2
- VERSION = '0.7.0'
2
+ VERSION = '1.0.0'
3
3
  end
@@ -1,14 +1,12 @@
1
- require 'barbeque/exception_handler'
2
- require 'barbeque/message_handler'
3
- require 'barbeque/message_queue'
1
+ require 'barbeque/execution_poller'
2
+ require 'barbeque/retry_poller'
3
+ require 'barbeque/runner'
4
4
  require 'serverengine'
5
5
 
6
6
  module Barbeque
7
7
  module Worker
8
8
  class UnexpectedMessageType < StandardError; end
9
9
 
10
- DEFAULT_QUEUE = 'default'
11
-
12
10
  def self.run(
13
11
  worker_type: 'process',
14
12
  workers: 4,
@@ -33,34 +31,35 @@ module Barbeque
33
31
  end
34
32
 
35
33
  def initialize
36
- @queue_name = ENV['BARBEQUE_QUEUE'] || DEFAULT_QUEUE
34
+ @command =
35
+ case worker_id
36
+ when 0
37
+ ExecutionPoller.new
38
+ when 1
39
+ RetryPoller.new
40
+ else
41
+ Runner.new
42
+ end
37
43
  end
38
44
 
39
45
  def run
46
+ $0 = "barbeque-worker (worker_id=#{worker_id} command=#{@command.class.name})"
40
47
  until @stop
41
- execute_job
48
+ begin
49
+ execute_command
50
+ rescue => e
51
+ Barbeque::ExceptionHandler.handle_exception(e)
52
+ end
42
53
  end
43
54
  end
44
55
 
45
56
  def stop
46
57
  @stop = true
47
- message_queue.stop!
58
+ @command.stop
48
59
  end
49
60
 
50
- def execute_job
51
- message = message_queue.dequeue
52
- return unless message
53
-
54
- handler = MessageHandler.const_get(message.type, false)
55
- handler.new(message: message, job_queue: message_queue.job_queue).run
56
- rescue => e
57
- Barbeque::ExceptionHandler.handle_exception(e)
58
- end
59
-
60
- private
61
-
62
- def message_queue
63
- @message_queue ||= MessageQueue.new(@queue_name)
61
+ def execute_command
62
+ @command.run
64
63
  end
65
64
  end
66
65
  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.7.0
4
+ version: 1.0.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-12 00:00:00.000000000 Z
11
+ date: 2017-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: adminlte2-rails
@@ -301,6 +301,8 @@ files:
301
301
  - app/models/barbeque/api/revision_lock_resource.rb
302
302
  - app/models/barbeque/app.rb
303
303
  - app/models/barbeque/application_record.rb
304
+ - app/models/barbeque/docker_container.rb
305
+ - app/models/barbeque/ecs_hako_task.rb
304
306
  - app/models/barbeque/job_definition.rb
305
307
  - app/models/barbeque/job_execution.rb
306
308
  - app/models/barbeque/job_queue.rb
@@ -356,12 +358,19 @@ files:
356
358
  - db/migrate/20160516041710_create_job_retries.rb
357
359
  - db/migrate/20160829023237_prefix_barbeque_to_tables.rb
358
360
  - db/migrate/20170420030157_create_barbeque_sns_subscriptions.rb
361
+ - db/migrate/20170711085157_create_barbeque_docker_containers.rb
362
+ - db/migrate/20170712075449_create_barbeque_ecs_hako_tasks.rb
363
+ - db/migrate/20170724025542_add_index_to_job_execution_status.rb
359
364
  - lib/barbeque.rb
360
365
  - lib/barbeque/config.rb
361
366
  - lib/barbeque/docker_image.rb
362
367
  - lib/barbeque/engine.rb
363
368
  - lib/barbeque/exception_handler.rb
364
369
  - lib/barbeque/execution_log.rb
370
+ - lib/barbeque/execution_poller.rb
371
+ - lib/barbeque/executor.rb
372
+ - lib/barbeque/executor/docker.rb
373
+ - lib/barbeque/executor/hako.rb
365
374
  - lib/barbeque/message.rb
366
375
  - lib/barbeque/message/base.rb
367
376
  - lib/barbeque/message/invalid_message.rb
@@ -373,10 +382,10 @@ files:
373
382
  - lib/barbeque/message_handler/job_retry.rb
374
383
  - lib/barbeque/message_handler/notification.rb
375
384
  - lib/barbeque/message_queue.rb
385
+ - lib/barbeque/retry_poller.rb
376
386
  - lib/barbeque/runner.rb
377
- - lib/barbeque/runner/docker.rb
378
- - lib/barbeque/runner/hako.rb
379
387
  - lib/barbeque/slack_client.rb
388
+ - lib/barbeque/slack_notifier.rb
380
389
  - lib/barbeque/version.rb
381
390
  - lib/barbeque/worker.rb
382
391
  - lib/tasks/barbeque_tasks.rake
@@ -1,34 +0,0 @@
1
- require 'open3'
2
-
3
- module Barbeque
4
- module Runner
5
- class Docker
6
- # @param [Barbeque::DockerImage] docker_image
7
- def initialize(docker_image:)
8
- @docker_image = docker_image.to_s
9
- end
10
-
11
- # @param [Array<String>] command
12
- # @param [Hash] envs
13
- # @return [String] stdout
14
- # @return [String] stderr
15
- # @return [Process::Status] status
16
- def run(command, envs)
17
- cmd = build_docker_run_command(command, envs)
18
- Bundler.with_clean_env { Open3.capture3(*cmd) }
19
- end
20
-
21
- private
22
-
23
- def build_docker_run_command(command, envs)
24
- ['docker', 'run', *env_options(envs), @docker_image, *command]
25
- end
26
-
27
- def env_options(envs)
28
- envs.flat_map do |key, value|
29
- ['--env', "#{key}=#{value}"]
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,46 +0,0 @@
1
- require 'open3'
2
-
3
- module Barbeque
4
- module Runner
5
- class Hako
6
- # @param [Barbeque::DockerImage] docker_image
7
- # @param [String] hako_dir
8
- # @param [Hash] hako_env
9
- # @param [String] yaml_dir
10
- def initialize(docker_image:, hako_dir:, hako_env: {}, yaml_dir:)
11
- @app_name = docker_image.repository
12
- @tag = docker_image.tag
13
- @hako_dir = hako_dir
14
- @hako_env = hako_env
15
- @yaml_dir = yaml_dir
16
- end
17
-
18
- # @param [Array<String>] command
19
- # @param [Hash] envs
20
- # @return [String] stdout
21
- # @return [String] stderr
22
- # @return [Process::Status] status
23
- def run(command, envs)
24
- cmd = build_hako_oneshot_command(command, envs)
25
- Bundler.with_clean_env do
26
- Open3.capture3(@hako_env, *cmd, chdir: @hako_dir)
27
- end
28
- end
29
-
30
- private
31
-
32
- def build_hako_oneshot_command(command, envs)
33
- [
34
- 'bundle', 'exec', 'hako', 'oneshot', '--tag', @tag,
35
- *env_options(envs), File.join(@yaml_dir, "#{@app_name}.yml"), '--', *command,
36
- ]
37
- end
38
-
39
- def env_options(envs)
40
- envs.map do |key, value|
41
- "--env=#{key}=#{value}"
42
- end
43
- end
44
- end
45
- end
46
- end