hako 0.8.5 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/hello-lb.yml +1 -1
- data/lib/hako/commander.rb +9 -7
- data/lib/hako/scheduler.rb +9 -1
- data/lib/hako/schedulers/echo.rb +6 -8
- data/lib/hako/schedulers/ecs.rb +5 -5
- data/lib/hako/script.rb +24 -0
- data/lib/hako/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2ed263f551648e6f8339ae4493a1346edef6ac80
|
4
|
+
data.tar.gz: 4d10d78c93bef27b471759c828d26bb6ad5c896c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b71c6b89b1316596432acbad9b9114fb893210d8810b8583478db132e8e43fa77ad02b98522d4536fe9bcb76e4039d788dd1b3675ffe1f3742eb989cea648d23
|
7
|
+
data.tar.gz: e2de4aa6a1bfc2c7c67887ec472c108cc88a07beed8fd8e22e949024d4c910cba05c5dc8332fb2169df4f9dedd9d81646f53aed11d7665ef2b2e58cff0a96081
|
data/examples/hello-lb.yml
CHANGED
data/lib/hako/commander.rb
CHANGED
@@ -24,21 +24,23 @@ module Hako
|
|
24
24
|
scripts.each { |script| script.after_deploy(containers) }
|
25
25
|
end
|
26
26
|
|
27
|
-
def oneshot(commands, tag:, containers:, env: {})
|
28
|
-
containers = load_containers(tag, dry_run:
|
29
|
-
|
27
|
+
def oneshot(commands, tag:, containers:, env: {}, dry_run: false)
|
28
|
+
containers = load_containers(tag, dry_run: dry_run, with: containers)
|
29
|
+
scripts = @app.yaml.fetch('scripts', []).map { |config| load_script(config, dry_run: dry_run) }
|
30
|
+
scheduler = load_scheduler(@app.yaml['scheduler'], scripts)
|
31
|
+
|
30
32
|
with_oneshot_signal_handlers(scheduler) do
|
31
33
|
exit scheduler.oneshot(containers, commands, env)
|
32
34
|
end
|
33
35
|
end
|
34
36
|
|
35
37
|
def status
|
36
|
-
load_scheduler(@app.yaml['scheduler']).status
|
38
|
+
load_scheduler(@app.yaml['scheduler'], []).status
|
37
39
|
end
|
38
40
|
|
39
41
|
def remove
|
40
42
|
scripts = @app.yaml.fetch('scripts', []).map { |config| load_script(config, dry_run: dry_run) }
|
41
|
-
load_scheduler(@app.yaml['scheduler']).remove
|
43
|
+
load_scheduler(@app.yaml['scheduler'], scripts).remove
|
42
44
|
scripts.each(&:after_remove)
|
43
45
|
end
|
44
46
|
|
@@ -89,8 +91,8 @@ module Hako
|
|
89
91
|
containers
|
90
92
|
end
|
91
93
|
|
92
|
-
def load_scheduler(yaml, force: false, dry_run: false)
|
93
|
-
Loader.new(Hako::Schedulers, 'hako/schedulers').load(yaml.fetch('type')).new(@app.id, yaml, force: force, dry_run: dry_run)
|
94
|
+
def load_scheduler(yaml, scripts, force: false, dry_run: false)
|
95
|
+
Loader.new(Hako::Schedulers, 'hako/schedulers').load(yaml.fetch('type')).new(@app.id, yaml, scripts: scripts, force: force, dry_run: dry_run)
|
94
96
|
end
|
95
97
|
|
96
98
|
def load_front(yaml, dry_run:)
|
data/lib/hako/scheduler.rb
CHANGED
@@ -6,7 +6,15 @@ module Hako
|
|
6
6
|
class ValidationError < Error
|
7
7
|
end
|
8
8
|
|
9
|
-
def initialize(
|
9
|
+
def initialize(app_id, options, scripts:, dry_run:, force:)
|
10
|
+
@app_id = app_id
|
11
|
+
@scripts = scripts
|
12
|
+
@dry_run = dry_run
|
13
|
+
@force = force
|
14
|
+
configure(options)
|
15
|
+
end
|
16
|
+
|
17
|
+
def configure(_options)
|
10
18
|
end
|
11
19
|
|
12
20
|
def deploy(_containers, _options)
|
data/lib/hako/schedulers/echo.rb
CHANGED
@@ -4,19 +4,17 @@ require 'hako/scheduler'
|
|
4
4
|
module Hako
|
5
5
|
module Schedulers
|
6
6
|
class Echo < Scheduler
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
def deploy(containers, env, app_port, force: false)
|
12
|
-
puts "Deploy #{containers.fetch('app').image_tag} with app_port=#{app_port}, force=#{force}"
|
7
|
+
def deploy(containers)
|
8
|
+
app = containers.fetch('app')
|
9
|
+
puts "Deploy #{app.image_tag} with app_port=#{app.port}, force=#{@force}, dry_run=#{@dry_run}"
|
13
10
|
puts 'Environment variables:'
|
14
|
-
env.each do |key, val|
|
11
|
+
app.env.each do |key, val|
|
15
12
|
puts " #{key}=#{val.inspect}"
|
16
13
|
end
|
17
14
|
end
|
18
15
|
|
19
|
-
def oneshot(
|
16
|
+
def oneshot(containers, commands, env)
|
17
|
+
app = containers.fetch('app')
|
20
18
|
puts "Run #{app.image_tag} with oneshot commands=#{commands.inspect}"
|
21
19
|
puts 'Environment variables:'
|
22
20
|
env.each do |key, val|
|
data/lib/hako/schedulers/ecs.rb
CHANGED
@@ -11,17 +11,16 @@ module Hako
|
|
11
11
|
DEFAULT_CLUSTER = 'default'
|
12
12
|
DEFAULT_FRONT_PORT = 10000
|
13
13
|
|
14
|
-
|
15
|
-
|
14
|
+
attr_reader :task
|
15
|
+
|
16
|
+
def configure(options)
|
16
17
|
@cluster = options.fetch('cluster', DEFAULT_CLUSTER)
|
17
18
|
@desired_count = options.fetch('desired_count') { validation_error!('desired_count must be set') }
|
18
19
|
region = options.fetch('region') { validation_error!('region must be set') }
|
19
20
|
@role = options.fetch('role', nil)
|
20
21
|
@ecs = Aws::ECS::Client.new(region: region)
|
21
|
-
@elb = EcsElb.new(app_id, Aws::ElasticLoadBalancing::Client.new(region: region), options.fetch('elb', nil))
|
22
|
+
@elb = EcsElb.new(@app_id, Aws::ElasticLoadBalancing::Client.new(region: region), options.fetch('elb', nil))
|
22
23
|
@ec2 = Aws::EC2::Client.new(region: region)
|
23
|
-
@force = force
|
24
|
-
@dry_run = dry_run
|
25
24
|
@started_at = nil
|
26
25
|
@container_instance_arn = nil
|
27
26
|
end
|
@@ -71,6 +70,7 @@ module Hako
|
|
71
70
|
end
|
72
71
|
@task = run_task(task_definition, commands, env)
|
73
72
|
Hako.logger.info "Started task: #{@task.task_arn}"
|
73
|
+
@scripts.each { |script| script.oneshot_started(self) }
|
74
74
|
wait_for_oneshot_finish
|
75
75
|
end
|
76
76
|
|
data/lib/hako/script.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'hako/scripts'
|
3
|
+
|
4
|
+
module Hako
|
5
|
+
class Script
|
6
|
+
def initialize(app, options, dry_run:)
|
7
|
+
@app = app
|
8
|
+
@dry_run = dry_run
|
9
|
+
configure(options)
|
10
|
+
end
|
11
|
+
|
12
|
+
def configure(_options)
|
13
|
+
end
|
14
|
+
|
15
|
+
def before_deploy(_containers)
|
16
|
+
end
|
17
|
+
|
18
|
+
def after_deploy(_containers)
|
19
|
+
end
|
20
|
+
|
21
|
+
def oneshot_started(_scheduler)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
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.9.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-03-
|
11
|
+
date: 2016-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -125,6 +125,7 @@ files:
|
|
125
125
|
- lib/hako/schedulers/ecs.rb
|
126
126
|
- lib/hako/schedulers/ecs_definition_comparator.rb
|
127
127
|
- lib/hako/schedulers/ecs_elb.rb
|
128
|
+
- lib/hako/script.rb
|
128
129
|
- lib/hako/scripts.rb
|
129
130
|
- lib/hako/templates/nginx.conf.erb
|
130
131
|
- lib/hako/templates/nginx.location.conf.erb
|