hako 1.5.2 → 1.6.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: 1407a0536a7ceb26b385676d75b54acbc88f01c6
4
- data.tar.gz: 5a66b42284d1e620a07217f9f5d6d6cd3313f788
3
+ metadata.gz: b4b66507d80228e05ee0fdd78429ff9898f8ed5c
4
+ data.tar.gz: af54939a042cfcaa1a17a36a9c33a1ea822749a4
5
5
  SHA512:
6
- metadata.gz: f3d0e37907893a6b21ce3440936d54c7737e3ffd2949253681a86013c338a453811ec12e467e4d833f7b34b068cc0de9f1d67d18ff56d0e15db2e4981ba4b43e
7
- data.tar.gz: a319f40f7638445fe2f8e0b95857b9262317db80a6dcc4fa9e7bdcba1b799a1075566b78d539fe1de32c41fc68c666afb966e0874c169732f675108d87474f28
6
+ metadata.gz: a96ceada37a687ffeba40a6fd27c6133bc542ca18b959c531f823e0669147fd2be945c1bc5e7ccc8dd64a86026ef4e1ebd5fc822044ab66be2fc6896b20a8566
7
+ data.tar.gz: 6d3a66534d013a1f306f1ab1fcf9426be5cfc6f2d383b0b4bbb55a59f1793fee1414ed9697ee1fb9b99479d427915d02d08bfdec6e91fa55533e2737c1cb03e9
@@ -1,3 +1,9 @@
1
+ # 1.6.0 (2017-06-23)
2
+ ## New features
3
+ - Add experimental option `--no-wait` to oneshot
4
+ - `hako oneshot --no-wait` runs Docker container in background and return an identifier depending on scheduler.
5
+ - In ECS scheduler, it will output the task's ARN.
6
+
1
7
  # 1.5.2 (2017-06-08)
2
8
  ## Bug fixes
3
9
  - Retry RegisterTaskDefinition when "too many concurrent attempts" error occurs
@@ -144,7 +144,7 @@ module Hako
144
144
  Hako.logger.level = Logger::DEBUG
145
145
  end
146
146
 
147
- Commander.new(Application.new(@yaml_path)).oneshot(@argv, tag: @tag, containers: @containers, env: @env, dry_run: @dry_run)
147
+ Commander.new(Application.new(@yaml_path)).oneshot(@argv, tag: @tag, containers: @containers, env: @env, dry_run: @dry_run, no_wait: @no_wait)
148
148
  end
149
149
 
150
150
  def parse!(argv)
@@ -153,6 +153,7 @@ module Hako
153
153
  @containers = []
154
154
  @env = {}
155
155
  @verbose = false
156
+ @no_wait = false
156
157
  parser.parse!(argv)
157
158
  @yaml_path = argv.shift
158
159
  @argv = argv
@@ -171,6 +172,7 @@ module Hako
171
172
  opts.on('-n', '--dry-run', 'Enable dry-run mode') { @dry_run = true }
172
173
  opts.on('-c', '--container=NAME', 'Additional container name to start with the app container') { |v| @containers << v }
173
174
  opts.on('-v', '--verbose', 'Enable verbose logging') { @verbose = true }
175
+ opts.on('--no-wait', 'Run Docker container in background and return an identifier depending on scheduler (experimental)') { @no_wait = true }
174
176
  opts.on('-e', '--env=NAME=VAL', 'Add environment variable') do |arg|
175
177
  k, v = arg.split('=', 2)
176
178
  @env[k] = v
@@ -45,8 +45,9 @@ module Hako
45
45
  # @param [String] tag
46
46
  # @param [Hash<String, String>] env
47
47
  # @param [Boolean] dry_run
48
+ # @param [Boolean] no_wait
48
49
  # @return [nil]
49
- def oneshot(commands, tag:, containers:, env: {}, dry_run: false)
50
+ def oneshot(commands, tag:, containers:, env: {}, dry_run: false, no_wait: false)
50
51
  containers = load_containers(tag, dry_run: dry_run, with: containers)
51
52
  scripts = @app.yaml.fetch('scripts', []).map { |config| load_script(config, dry_run: dry_run) }
52
53
  volumes = @app.yaml.fetch('volumes', {})
@@ -54,7 +55,7 @@ module Hako
54
55
 
55
56
  scripts.each { |script| script.oneshot_starting(containers) }
56
57
  exit_code = with_oneshot_signal_handlers(scheduler) do
57
- scheduler.oneshot(containers, commands, env)
58
+ scheduler.oneshot(containers, commands, env, no_wait: no_wait)
58
59
  end
59
60
  scripts.each { |script| script.oneshot_finished(containers) }
60
61
  exit exit_code
@@ -136,8 +136,9 @@ module Hako
136
136
  # @param [Hash<String, Container>] containers
137
137
  # @param [Array<String>] commands
138
138
  # @param [Hash<String, String>] env
139
- # @return [nil]
140
- def oneshot(containers, commands, env)
139
+ # @param [Boolean] no_wait
140
+ # @return [Integer] Returns exit code
141
+ def oneshot(containers, commands, env, no_wait: false)
141
142
  definitions = create_definitions(containers)
142
143
  definitions.each do |definition|
143
144
  definition.delete(:essential)
@@ -161,7 +162,12 @@ module Hako
161
162
  @task = run_task(task_definition, commands, env)
162
163
  Hako.logger.info "Started task: #{@task.task_arn}"
163
164
  @scripts.each { |script| script.oneshot_started(self) }
164
- wait_for_oneshot_finish
165
+ if no_wait
166
+ puts @task.task_arn
167
+ 0
168
+ else
169
+ wait_for_oneshot_finish
170
+ end
165
171
  end
166
172
  end
167
173
 
@@ -858,6 +864,7 @@ module Hako
858
864
 
859
865
  autoscaling = Aws::AutoScaling::Client.new
860
866
  interval = MIN_ASG_INTERVAL
867
+ Hako.logger.info("Unable to start tasks. Start trying scaling out '#{@autoscaling_group_for_oneshot}'")
861
868
  loop do
862
869
  begin
863
870
  asg = autoscaling.describe_auto_scaling_groups(auto_scaling_group_names: [@autoscaling_group_for_oneshot]).auto_scaling_groups[0]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Hako
4
- VERSION = '1.5.2'
4
+ VERSION = '1.6.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hako
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.2
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kohei Suzuki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-08 00:00:00.000000000 Z
11
+ date: 2017-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk