hako 0.5.1 → 0.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: 75892b3b69615c52673725212b96726f9fea58e7
4
- data.tar.gz: d7a251bac15bccd07635017584b9a86bdb172598
3
+ metadata.gz: 1e64f878fa8086ac6bbf25618270783b624a0c3d
4
+ data.tar.gz: 3bd05c5d3570b3df3683bf96089ba27601e23eab
5
5
  SHA512:
6
- metadata.gz: 163e6241ce9816ed44c1125e0499248ba2721bfd10666e3e065ca3806252a45a5aa1a3af503fef13b23066dffbd455a36fbb91e1965263b6c1aa7ede47d68f88
7
- data.tar.gz: 8e35712fb370b7a7f1ff1bea881b20556a85ad00944c6fa8901e6ec2ac8dd552baff607a7a49ac991b02434dece2c9f2729fbc821b6d86a0bd1aed838b5f92af
6
+ metadata.gz: 668a80d0f435cdd3ee046af0d3795567f32074fc68bcd8fb6afaec5cbd0023642414771a76c8441b7a7b0acc0d662e00e3cbd229137d068bb2e72a2d15ef8b75
7
+ data.tar.gz: 88df5fc4b0c681f4fbce9422979f9d50cbde3742760940a9351380bffba3a2a30beae92326da39db808dc5fa58e067c0322acc9b2d1ee9f30b27c52a4b6c695d
@@ -15,8 +15,8 @@ scheduler:
15
15
  - sg-ZZZZZZZZ
16
16
  app:
17
17
  image: ryotarai/hello-sinatra
18
- memory: 100
19
- cpu: 100
18
+ memory: 128
19
+ cpu: 256
20
20
  port: 3000
21
21
  env:
22
22
  $providers:
@@ -27,8 +27,8 @@ app:
27
27
  front:
28
28
  type: nginx
29
29
  image_tag: hako-nginx
30
- memory: 100
31
- cpu: 100
30
+ memory: 32
31
+ cpu: 32
32
32
  s3:
33
33
  region: ap-northeast-1
34
34
  bucket: nanika
data/examples/hello.yml CHANGED
@@ -5,9 +5,11 @@ scheduler:
5
5
  desired_count: 2
6
6
  app:
7
7
  image: ryotarai/hello-sinatra
8
- memory: 100
9
- cpu: 100
8
+ memory: 128
9
+ cpu: 256
10
10
  port: 3000
11
+ links:
12
+ - redis:redis
11
13
  env:
12
14
  $providers:
13
15
  - type: file
@@ -17,9 +19,14 @@ app:
17
19
  front:
18
20
  type: nginx
19
21
  image_tag: hako-nginx
20
- memory: 100
21
- cpu: 100
22
+ memory: 32
23
+ cpu: 32
22
24
  s3:
23
25
  region: ap-northeast-1
24
26
  bucket: nanika
25
27
  prefix: hako/front_config
28
+ additional_containers:
29
+ redis:
30
+ image_tag: redis:3.0
31
+ cpu: 64
32
+ memory: 512
@@ -1,4 +1,5 @@
1
1
  require 'hako/app_container'
2
+ require 'hako/container'
2
3
  require 'hako/env_expander'
3
4
  require 'hako/error'
4
5
  require 'hako/fronts'
@@ -19,6 +20,9 @@ module Hako
19
20
  scripts = @app.yaml.fetch('scripts', []).map { |config| load_script(config) }
20
21
 
21
22
  containers = { 'app' => app, 'front' => front }
23
+ @app.yaml.fetch('additional_containers', {}).each do |name, container|
24
+ containers[name] = Container.new(@app, container)
25
+ end
22
26
  scripts.each { |script| script.before_deploy(containers) }
23
27
  scheduler.deploy(containers, force: force)
24
28
  scripts.each { |script| script.after_deploy(containers) }
@@ -2,11 +2,12 @@ module Hako
2
2
  class Container
3
3
  DEFAULT_CONFIG = {
4
4
  'docker_labels' => {},
5
+ 'links' => [],
5
6
  }.freeze
6
7
 
7
8
  def initialize(app, definition)
8
9
  @app = app
9
- @definition = definition.merge(DEFAULT_CONFIG)
10
+ @definition = DEFAULT_CONFIG.merge(definition)
10
11
  end
11
12
 
12
13
  %w[
@@ -14,6 +15,7 @@ module Hako
14
15
  docker_labels
15
16
  cpu
16
17
  memory
18
+ links
17
19
  ].each do |name|
18
20
  define_method(name) do
19
21
  @definition[name]
data/lib/hako/front.rb CHANGED
@@ -33,6 +33,12 @@ module Hako
33
33
  )
34
34
  end
35
35
 
36
+ DEFAULT_LINK = ['app:app'].freeze
37
+
38
+ def links
39
+ DEFAULT_LINK + super
40
+ end
41
+
36
42
  def extra
37
43
  @definition.fetch('extra', {})
38
44
  end
@@ -166,12 +166,12 @@ module Hako
166
166
  task_definition.container_definitions.each do |c|
167
167
  container_definitions[c.name] = c
168
168
  end
169
- if container_definitions.size == 2 && container_definitions['front'] && container_definitions['app']
169
+ if container_definitions['front']
170
170
  container_definitions['front'].port_mappings[0].host_port
171
171
  end
172
172
  end
173
173
 
174
- def task_definition_changed?(front, app)
174
+ def task_definition_changed?(definitions)
175
175
  if @force_mode
176
176
  return true
177
177
  end
@@ -180,7 +180,10 @@ module Hako
180
180
  task_definition.container_definitions.each do |c|
181
181
  container_definitions[c.name] = c
182
182
  end
183
- different_definition?(front, container_definitions['front']) || different_definition?(app, container_definitions['app'])
183
+ if definitions.any? { |definition| different_definition?(definition, container_definitions.delete(definition[:name])) }
184
+ return true
185
+ end
186
+ !container_definitions.empty?
184
187
  rescue Aws::ECS::Errors::ClientException
185
188
  # Task definition does not exist
186
189
  true
@@ -191,12 +194,18 @@ module Hako
191
194
  end
192
195
 
193
196
  def register_task_definition(containers, front_port)
194
- front_def = front_container(containers.fetch('front'), front_port)
195
- app_def = app_container(containers.fetch('app'))
196
- if task_definition_changed?(front_def, app_def)
197
+ definitions = containers.map do |name, container|
198
+ case name
199
+ when 'front'
200
+ front_container(container, front_port)
201
+ else
202
+ app_container(name, container)
203
+ end
204
+ end
205
+ if task_definition_changed?(definitions)
197
206
  @ecs.register_task_definition(
198
207
  family: @app_id,
199
- container_definitions: [front_def, app_def],
208
+ container_definitions: definitions,
200
209
  ).task_definition
201
210
  else
202
211
  :noop
@@ -227,7 +236,7 @@ module Hako
227
236
  image: front.image_tag,
228
237
  cpu: front.cpu,
229
238
  memory: front.memory,
230
- links: ['app:app'],
239
+ links: front.links,
231
240
  port_mappings: [{ container_port: 80, host_port: front_port, protocol: 'tcp' }],
232
241
  essential: true,
233
242
  environment: environment,
@@ -235,14 +244,14 @@ module Hako
235
244
  }
236
245
  end
237
246
 
238
- def app_container(app)
247
+ def app_container(name, app)
239
248
  environment = app.env.map { |k, v| { name: k, value: v } }
240
249
  {
241
- name: 'app',
250
+ name: name,
242
251
  image: app.image_tag,
243
252
  cpu: app.cpu,
244
253
  memory: app.memory,
245
- links: [],
254
+ links: app.links,
246
255
  port_mappings: [],
247
256
  essential: true,
248
257
  environment: environment,
data/lib/hako/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Hako
2
- VERSION = '0.5.1'.freeze
2
+ VERSION = '0.6.0'.freeze
3
3
  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: 0.5.1
4
+ version: 0.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: 2016-02-18 00:00:00.000000000 Z
11
+ date: 2016-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk