hako 0.15.3 → 0.16.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.
- checksums.yaml +4 -4
- data/examples/hello.yml +1 -0
- data/hako.gemspec +1 -1
- data/lib/hako/cli.rb +4 -2
- data/lib/hako/commander.rb +5 -4
- data/lib/hako/schedulers/ecs.rb +15 -3
- data/lib/hako/schedulers/ecs_elb.rb +9 -3
- data/lib/hako/script.rb +3 -0
- data/lib/hako/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c78bf9739661a4f8020dadce5cd49efd68092f0
|
4
|
+
data.tar.gz: 731b2f7faec9a00225048cbbcfa3c3223326d15b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7725a47c69273f2604a0039ec74a0a5d4d4a2c785642287689b6cec0ba58dc9ab790d1c659372de27fd1e34f18a878486b1abd5adb37e70ba4ec954683f893e
|
7
|
+
data.tar.gz: 511a77047f7c97c91114ab1dfad3b90828c1cdaf991c3476cf92eafc344197767b4109873b34ef8913e0e43c6c92e54d2657fcf85db4f978fa5af3ded2563a05
|
data/examples/hello.yml
CHANGED
data/hako.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_dependency 'aws-sdk', '>= 2.
|
21
|
+
spec.add_dependency 'aws-sdk', '>= 2.3.22'
|
22
22
|
|
23
23
|
spec.add_development_dependency 'bundler'
|
24
24
|
spec.add_development_dependency 'rake'
|
data/lib/hako/cli.rb
CHANGED
@@ -224,14 +224,15 @@ module Hako
|
|
224
224
|
end
|
225
225
|
|
226
226
|
class Remove
|
227
|
-
def run
|
227
|
+
def run(argv)
|
228
228
|
parse!(argv)
|
229
229
|
require 'hako/application'
|
230
230
|
require 'hako/commander'
|
231
|
-
Commander.new(Application.new(@yaml_path)).remove
|
231
|
+
Commander.new(Application.new(@yaml_path)).remove(dry_run: @dry_run)
|
232
232
|
end
|
233
233
|
|
234
234
|
def parse!(argv)
|
235
|
+
@dry_run = false
|
235
236
|
parser.parse!(argv)
|
236
237
|
@yaml_path = argv.first
|
237
238
|
|
@@ -245,6 +246,7 @@ module Hako
|
|
245
246
|
@parser ||= OptionParser.new do |opts|
|
246
247
|
opts.banner = 'hako remove FILE'
|
247
248
|
opts.version = VERSION
|
249
|
+
opts.on('-n', '--dry-run', 'Enable dry-run mode') { @dry_run = true }
|
248
250
|
end
|
249
251
|
end
|
250
252
|
end
|
data/lib/hako/commander.rb
CHANGED
@@ -59,13 +59,14 @@ module Hako
|
|
59
59
|
|
60
60
|
# @return [nil]
|
61
61
|
def status
|
62
|
-
load_scheduler(@app.yaml['scheduler'], []).status
|
62
|
+
load_scheduler(@app.yaml['scheduler'], [], dry_run: false).status
|
63
63
|
end
|
64
64
|
|
65
|
+
# @param [Boolean] dry_run
|
65
66
|
# @return [nil]
|
66
|
-
def remove
|
67
|
+
def remove(dry_run:)
|
67
68
|
scripts = @app.yaml.fetch('scripts', []).map { |config| load_script(config, dry_run: dry_run) }
|
68
|
-
load_scheduler(@app.yaml['scheduler'], scripts).remove
|
69
|
+
load_scheduler(@app.yaml['scheduler'], scripts, dry_run: dry_run).remove
|
69
70
|
scripts.each(&:after_remove)
|
70
71
|
end
|
71
72
|
|
@@ -114,7 +115,7 @@ module Hako
|
|
114
115
|
# @param [Boolean] force
|
115
116
|
# @param [Boolean] dry_run
|
116
117
|
# @return [Scheduler]
|
117
|
-
def load_scheduler(yaml, scripts, volumes: [], force: false, dry_run:
|
118
|
+
def load_scheduler(yaml, scripts, volumes: [], force: false, dry_run:)
|
118
119
|
Loader.new(Hako::Schedulers, 'hako/schedulers').load(yaml.fetch('type')).new(@app.id, yaml, volumes: volumes, scripts: scripts, force: force, dry_run: dry_run)
|
119
120
|
end
|
120
121
|
|
data/lib/hako/schedulers/ecs.rb
CHANGED
@@ -19,6 +19,7 @@ module Hako
|
|
19
19
|
@desired_count = options.fetch('desired_count', nil)
|
20
20
|
@region = options.fetch('region') { validation_error!('region must be set') }
|
21
21
|
@role = options.fetch('role', nil)
|
22
|
+
@task_role_arn = options.fetch('task_role_arn', nil)
|
22
23
|
@ecs_elb_options = options.fetch('elb', nil)
|
23
24
|
@started_at = nil
|
24
25
|
@container_instance_arn = nil
|
@@ -189,8 +190,14 @@ module Hako
|
|
189
190
|
def remove
|
190
191
|
service = describe_service
|
191
192
|
if service
|
192
|
-
|
193
|
-
|
193
|
+
if @dry_run
|
194
|
+
Hako.logger.info "ecs_client.update_service(cluster: #{@cluster}, service: #{@app_id}, desired_count: 0)"
|
195
|
+
Hako.logger.info "ecs_client.delete_service(cluster: #{@cluster}, service: #{@app_id})"
|
196
|
+
else
|
197
|
+
ecs_client.update_service(cluster: @cluster, service: @app_id, desired_count: 0)
|
198
|
+
ecs_client.delete_service(cluster: @cluster, service: @app_id)
|
199
|
+
Hako.logger.info "#{service.service_arn} is deleted"
|
200
|
+
end
|
194
201
|
else
|
195
202
|
puts "Service #{@app_id} doesn't exist"
|
196
203
|
end
|
@@ -212,7 +219,7 @@ module Hako
|
|
212
219
|
|
213
220
|
# @return [EcsElb]
|
214
221
|
def ecs_elb_client
|
215
|
-
@ecs_elb_client ||= EcsElb.new(@app_id, Aws::ElasticLoadBalancing::Client.new(region: @region), @ecs_elb_options)
|
222
|
+
@ecs_elb_client ||= EcsElb.new(@app_id, Aws::ElasticLoadBalancing::Client.new(region: @region), @ecs_elb_options, dry_run: @dry_run)
|
216
223
|
end
|
217
224
|
|
218
225
|
# @return [Aws::ECS::Types::Service, nil]
|
@@ -284,6 +291,9 @@ module Hako
|
|
284
291
|
container_definitions[c.name] = c
|
285
292
|
end
|
286
293
|
|
294
|
+
if task_definition.task_role_arn != @task_role_arn
|
295
|
+
return true
|
296
|
+
end
|
287
297
|
if different_volumes?(task_definition.volumes)
|
288
298
|
return true
|
289
299
|
end
|
@@ -328,6 +338,7 @@ module Hako
|
|
328
338
|
if task_definition_changed?(@app_id, definitions)
|
329
339
|
ecs_client.register_task_definition(
|
330
340
|
family: @app_id,
|
341
|
+
task_role_arn: @task_role_arn,
|
331
342
|
container_definitions: definitions,
|
332
343
|
volumes: volumes_definition,
|
333
344
|
).task_definition
|
@@ -351,6 +362,7 @@ module Hako
|
|
351
362
|
if task_definition_changed?(family, definitions)
|
352
363
|
ecs_client.register_task_definition(
|
353
364
|
family: "#{@app_id}-oneshot",
|
365
|
+
task_role_arn: @task_role_arn,
|
354
366
|
container_definitions: definitions,
|
355
367
|
volumes: volumes_definition,
|
356
368
|
).task_definition
|
@@ -8,10 +8,12 @@ module Hako
|
|
8
8
|
# @param [String] app_id
|
9
9
|
# @param [Aws::ElasticLoadBalancing::Client] elb
|
10
10
|
# @param [Hash] elb_config
|
11
|
-
|
11
|
+
# @param [Boolean] dry_run
|
12
|
+
def initialize(app_id, elb, elb_config, dry_run:)
|
12
13
|
@app_id = app_id
|
13
14
|
@elb = elb
|
14
15
|
@elb_config = elb_config
|
16
|
+
@dry_run = dry_run
|
15
17
|
end
|
16
18
|
|
17
19
|
# @return [Aws::ElasticLoadBalancing::Types::LoadBalancerDescription]
|
@@ -49,8 +51,12 @@ module Hako
|
|
49
51
|
# @return [nil]
|
50
52
|
def destroy
|
51
53
|
if exist?
|
52
|
-
@
|
53
|
-
|
54
|
+
if @dry_run
|
55
|
+
Hako.logger.info("@elb.delete_load_balancer(load_balancer_name: #{name})")
|
56
|
+
else
|
57
|
+
@elb.delete_load_balancer(load_balancer_name: name)
|
58
|
+
Hako.logger.info "Deleted ELB #{name}"
|
59
|
+
end
|
54
60
|
else
|
55
61
|
Hako.logger.info "ELB #{name} doesn't exist"
|
56
62
|
end
|
data/lib/hako/script.rb
CHANGED
data/lib/hako/version.rb
CHANGED
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: 0.
|
4
|
+
version: 0.16.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: 2016-
|
11
|
+
date: 2016-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.3.22
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
26
|
+
version: 2.3.22
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|