barbeque 0.1.0 → 0.2.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: 4510b6adf348a1bda1e6c35d02826cfa019f0ab3
4
- data.tar.gz: 8718974eaadf54ed119d8ef3b7e107117919bc59
3
+ metadata.gz: 2e9cf425229aa453c69b0b10724cd42f16d3d5a9
4
+ data.tar.gz: d8434e65e0d541f19b5424ffe906fa1519999f83
5
5
  SHA512:
6
- metadata.gz: a9c7801de72f8bd392b19c70adaa9b087638e434b66d75e565a3b7e2db3772545d3e95359d816801dc577e76b771649c1d2bf020648a698cd89a191ed68b8781
7
- data.tar.gz: 49d35f54929f3e5906d7b5e673205cb2bdd3f64b8a3e4017a4cd2f43a74305c0b7874e257c0b745cd124350779a5eac3d2bde7e7f471b9c01024987ae091ad69
6
+ metadata.gz: a751d7a94159f26dab6a2b434af7dc47a4e826657d7c3d7ebb33b67174eddf9104bd7b1f80d6fd5397ce82b7a5905c7c55a4424d3e7e14da63f7fe12aa7d356e
7
+ data.tar.gz: e18f9585c6a98e66c4b0285912c6ad8a7079f39d5a8dc3b4fab066652d29b9a4aecec0a70ee71ccfa2eb8d1372641e01670792feebcffee6ac690bfc873d4d52
@@ -0,0 +1,37 @@
1
+ require 'erb'
2
+ require 'yaml'
3
+
4
+ module Barbeque
5
+ class Config
6
+ attr_accessor :exception_handler, :runner, :runner_options
7
+
8
+ def initialize(options = {})
9
+ options.each do |key, value|
10
+ if respond_to?("#{key}=")
11
+ public_send("#{key}=", value)
12
+ else
13
+ raise KeyError.new("Unexpected option '#{key}' was specified.")
14
+ end
15
+ end
16
+ runner_options.symbolize_keys!
17
+ end
18
+ end
19
+
20
+ module ConfigBuilder
21
+ DEFAULT_CONFIG = {
22
+ 'exception_handler' => 'RailsLogger',
23
+ 'runner' => 'Docker',
24
+ 'runner_options' => {},
25
+ }
26
+
27
+ def config
28
+ @config ||= build_config
29
+ end
30
+
31
+ def build_config(config_name = 'barbeque')
32
+ Config.new(DEFAULT_CONFIG.merge(Rails.application.config_for(config_name)))
33
+ end
34
+ end
35
+
36
+ extend ConfigBuilder
37
+ end
@@ -1,4 +1,4 @@
1
- require 'barbeque/configuration'
1
+ require 'barbeque/config'
2
2
 
3
3
  module Barbeque
4
4
  module ExceptionHandler
@@ -1,12 +1,13 @@
1
- require 'barbeque/configuration'
1
+ require 'barbeque/config'
2
2
  require 'barbeque/runner/docker'
3
+ require 'barbeque/runner/hako'
3
4
 
4
5
  module Barbeque
5
6
  module Runner
6
7
  # @param [Barbeque::DockerImage] docker_image
7
8
  def self.create(docker_image:)
8
9
  klass = const_get(Barbeque.config.runner, false)
9
- klass.new(docker_image: docker_image)
10
+ klass.new(Barbeque.config.runner_options.merge(docker_image: docker_image))
10
11
  end
11
12
  end
12
13
  end
@@ -0,0 +1,46 @@
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
@@ -1,3 +1,3 @@
1
1
  module Barbeque
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.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.1.0
4
+ version: 0.2.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: 2016-10-19 00:00:00.000000000 Z
11
+ date: 2017-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: adminlte2-rails
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: hashie
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: jquery-rails
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -359,7 +345,7 @@ files:
359
345
  - db/migrate/20160516041710_create_job_retries.rb
360
346
  - db/migrate/20160829023237_prefix_barbeque_to_tables.rb
361
347
  - lib/barbeque.rb
362
- - lib/barbeque/configuration.rb
348
+ - lib/barbeque/config.rb
363
349
  - lib/barbeque/docker_image.rb
364
350
  - lib/barbeque/engine.rb
365
351
  - lib/barbeque/exception_handler.rb
@@ -375,6 +361,7 @@ files:
375
361
  - lib/barbeque/message_queue.rb
376
362
  - lib/barbeque/runner.rb
377
363
  - lib/barbeque/runner/docker.rb
364
+ - lib/barbeque/runner/hako.rb
378
365
  - lib/barbeque/slack_client.rb
379
366
  - lib/barbeque/version.rb
380
367
  - lib/barbeque/worker.rb
@@ -400,7 +387,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
400
387
  version: '0'
401
388
  requirements: []
402
389
  rubyforge_project:
403
- rubygems_version: 2.5.1
390
+ rubygems_version: 2.5.2
404
391
  signing_key:
405
392
  specification_version: 4
406
393
  summary: Job queue system to run job with Docker
@@ -1,24 +0,0 @@
1
- require 'erb'
2
- require 'yaml'
3
- require 'hashie'
4
-
5
- module Barbeque
6
- module Configuration
7
- DEFAULT_CONFIG = {
8
- 'exception_handler' => 'RailsLogger',
9
- 'runner' => 'Docker',
10
- }
11
-
12
- def config
13
- @config ||= build_config
14
- end
15
-
16
- def build_config
17
- filename = Rails.root.join('config', 'barbeque.yml').to_s
18
- hash = YAML.load(ERB.new(File.read(filename)).result)
19
- Hashie::Mash.new(DEFAULT_CONFIG.merge(hash[Rails.env]))
20
- end
21
- end
22
-
23
- extend Configuration
24
- end