hako 1.3.3 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/.travis.yml +2 -2
- data/CHANGELOG.md +4 -0
- data/hako.gemspec +2 -0
- data/lib/hako/container.rb +14 -0
- data/lib/hako/schedulers/ecs.rb +2 -1
- data/lib/hako/schedulers/ecs_definition_comparator.rb +13 -0
- data/lib/hako/schedulers/ecs_elb_v2.rb +18 -12
- data/lib/hako/version.rb +1 -1
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df6d36f3dcad17f7d794bb91775db9f74fb96c70
|
4
|
+
data.tar.gz: 3eaaf846fbb6306ef95235f5092c27f33bd94dcf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2fb9a1d911b4c3a02693f6204bfeb1a66e0ed4655ff6aff36aafb08e0c69a9cf21e8343306faa6ff0952b313e37abc28aaf000678309ad20e16fd5c1f863538a
|
7
|
+
data.tar.gz: 32fb06237271a486c2d41fbdd5a2de64128418833ff6c6d82dab560a8f8ae8f273661687bd82552ee922ed0c35bf7b5ba0c1a9ec4bd4b635a4437c58ab1f21d9
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/hako.gemspec
CHANGED
@@ -23,8 +23,10 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_dependency 'aws-sdk', '>= 2.6.43'
|
24
24
|
|
25
25
|
spec.add_development_dependency 'bundler'
|
26
|
+
spec.add_development_dependency 'coveralls'
|
26
27
|
spec.add_development_dependency 'rake'
|
27
28
|
spec.add_development_dependency 'rspec'
|
28
29
|
spec.add_development_dependency 'rubocop', '>= 0.36.0'
|
30
|
+
spec.add_development_dependency 'simplecov'
|
29
31
|
spec.add_development_dependency 'yard'
|
30
32
|
end
|
data/lib/hako/container.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'hako/env_expander'
|
3
4
|
require 'hako/version'
|
4
5
|
|
5
6
|
module Hako
|
@@ -86,6 +87,19 @@ module Hako
|
|
86
87
|
end
|
87
88
|
end
|
88
89
|
|
90
|
+
# @return [Array<Hash>, nil]
|
91
|
+
def ulimits
|
92
|
+
if @definition.key?('ulimits')
|
93
|
+
@definition['ulimits'].map do |ulimit|
|
94
|
+
{
|
95
|
+
name: ulimit.fetch('name'),
|
96
|
+
soft_limit: ulimit.fetch('soft_limit'),
|
97
|
+
hard_limit: ulimit.fetch('hard_limit'),
|
98
|
+
}
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
89
103
|
private
|
90
104
|
|
91
105
|
PROVIDERS_KEY = '$providers'
|
data/lib/hako/schedulers/ecs.rb
CHANGED
@@ -357,7 +357,7 @@ module Hako
|
|
357
357
|
if @force
|
358
358
|
return true
|
359
359
|
end
|
360
|
-
|
360
|
+
unless actual_definition
|
361
361
|
# Initial deployment
|
362
362
|
return true
|
363
363
|
end
|
@@ -486,6 +486,7 @@ module Hako
|
|
486
486
|
volumes_from: container.volumes_from,
|
487
487
|
user: container.user,
|
488
488
|
log_configuration: container.log_configuration,
|
489
|
+
ulimits: container.ulimits,
|
489
490
|
}
|
490
491
|
end
|
491
492
|
|
@@ -35,6 +35,7 @@ module Hako
|
|
35
35
|
struct.member(:user, Schema::Nullable.new(Schema::String.new))
|
36
36
|
struct.member(:privileged, Schema::Boolean.new)
|
37
37
|
struct.member(:log_configuration, Schema::Nullable.new(log_configuration_schema))
|
38
|
+
struct.member(:ulimits, Schema::Nullable.new(ulimits_chema))
|
38
39
|
end
|
39
40
|
end
|
40
41
|
|
@@ -74,6 +75,18 @@ module Hako
|
|
74
75
|
struct.member(:options, Schema::Table.new(Schema::String.new, Schema::String.new))
|
75
76
|
end
|
76
77
|
end
|
78
|
+
|
79
|
+
def ulimits_chema
|
80
|
+
Schema::UnorderedArray.new(ulimit_schema)
|
81
|
+
end
|
82
|
+
|
83
|
+
def ulimit_schema
|
84
|
+
Schema::Structure.new.tap do |struct|
|
85
|
+
struct.member(:name, Schema::String.new)
|
86
|
+
struct.member(:hard_limit, Schema::Integer.new)
|
87
|
+
struct.member(:soft_limit, Schema::Integer.new)
|
88
|
+
end
|
89
|
+
end
|
77
90
|
end
|
78
91
|
end
|
79
92
|
end
|
@@ -12,7 +12,7 @@ module Hako
|
|
12
12
|
# @param [Boolean] dry_run
|
13
13
|
def initialize(app_id, region, elb_v2_config, dry_run:)
|
14
14
|
@app_id = app_id
|
15
|
-
@
|
15
|
+
@region = region
|
16
16
|
@elb_v2_config = elb_v2_config
|
17
17
|
@dry_run = dry_run
|
18
18
|
end
|
@@ -21,7 +21,7 @@ module Hako
|
|
21
21
|
# @return [nil]
|
22
22
|
def show_status(ecs_lb)
|
23
23
|
lb = describe_load_balancer
|
24
|
-
|
24
|
+
elb_client.describe_listeners(load_balancer_arn: lb.load_balancer_arn).each do |page|
|
25
25
|
page.listeners.each do |listener|
|
26
26
|
puts " #{lb.dns_name}:#{listener.port} -> #{ecs_lb.container_name}:#{ecs_lb.container_port}"
|
27
27
|
end
|
@@ -30,14 +30,14 @@ module Hako
|
|
30
30
|
|
31
31
|
# @return [Aws::ElasticLoadBalancingV2::Types::LoadBalancer]
|
32
32
|
def describe_load_balancer
|
33
|
-
|
33
|
+
elb_client.describe_load_balancers(names: [name]).load_balancers[0]
|
34
34
|
rescue Aws::ElasticLoadBalancingV2::Errors::LoadBalancerNotFound
|
35
35
|
nil
|
36
36
|
end
|
37
37
|
|
38
38
|
# @return [Aws::ElasticLoadBalancingV2::Types::TargetGroup]
|
39
39
|
def describe_target_group
|
40
|
-
|
40
|
+
elb_client.describe_target_groups(names: [name]).target_groups[0]
|
41
41
|
rescue Aws::ElasticLoadBalancingV2::Errors::TargetGroupNotFound
|
42
42
|
nil
|
43
43
|
end
|
@@ -52,7 +52,7 @@ module Hako
|
|
52
52
|
load_balancer = describe_load_balancer
|
53
53
|
unless load_balancer
|
54
54
|
tags = @elb_v2_config.fetch('tags', {}).map { |k, v| { key: k, value: v.to_s } }
|
55
|
-
load_balancer =
|
55
|
+
load_balancer = elb_client.create_load_balancer(
|
56
56
|
name: name,
|
57
57
|
subnets: @elb_v2_config.fetch('subnets'),
|
58
58
|
security_groups: @elb_v2_config.fetch('security_groups'),
|
@@ -64,7 +64,7 @@ module Hako
|
|
64
64
|
|
65
65
|
target_group = describe_target_group
|
66
66
|
unless target_group
|
67
|
-
target_group =
|
67
|
+
target_group = elb_client.create_target_group(
|
68
68
|
name: name,
|
69
69
|
port: 80,
|
70
70
|
protocol: 'HTTP',
|
@@ -74,7 +74,7 @@ module Hako
|
|
74
74
|
Hako.logger.info "Created target group #{target_group.target_group_arn}"
|
75
75
|
end
|
76
76
|
|
77
|
-
listener_ports =
|
77
|
+
listener_ports = elb_client.describe_listeners(load_balancer_arn: load_balancer.load_balancer_arn).flat_map { |page| page.listeners.map(&:port) }
|
78
78
|
@elb_v2_config.fetch('listeners').each do |l|
|
79
79
|
params = {
|
80
80
|
load_balancer_arn: load_balancer.load_balancer_arn,
|
@@ -88,7 +88,7 @@ module Hako
|
|
88
88
|
end
|
89
89
|
|
90
90
|
unless listener_ports.include?(params[:port])
|
91
|
-
listener =
|
91
|
+
listener = elb_client.create_listener(params).listeners[0]
|
92
92
|
Hako.logger.info("Created listener #{listener.listener_arn}")
|
93
93
|
end
|
94
94
|
end
|
@@ -110,9 +110,9 @@ module Hako
|
|
110
110
|
load_balancer = describe_load_balancer
|
111
111
|
if load_balancer
|
112
112
|
if @dry_run
|
113
|
-
Hako.logger.info("
|
113
|
+
Hako.logger.info("elb_client.delete_load_balancer(load_balancer_arn: #{load_balancer.load_balancer_arn})")
|
114
114
|
else
|
115
|
-
|
115
|
+
elb_client.delete_load_balancer(load_balancer_arn: load_balancer.load_balancer_arn)
|
116
116
|
Hako.logger.info "Deleted ELBv2 #{load_balancer.load_balancer_arn}"
|
117
117
|
end
|
118
118
|
else
|
@@ -122,9 +122,9 @@ module Hako
|
|
122
122
|
target_group = describe_target_group
|
123
123
|
if target_group
|
124
124
|
if @dry_run
|
125
|
-
Hako.logger.info("
|
125
|
+
Hako.logger.info("elb_client.delete_target_group(target_group_arn: #{target_group.target_group_arn})")
|
126
126
|
else
|
127
|
-
|
127
|
+
elb_client.delete_target_group(target_group_arn: target_group.target_group_arn)
|
128
128
|
Hako.logger.info "Deleted target group #{target_group.target_group_arn}"
|
129
129
|
end
|
130
130
|
end
|
@@ -139,6 +139,12 @@ module Hako
|
|
139
139
|
def load_balancer_params_for_service
|
140
140
|
{ target_group_arn: describe_target_group.target_group_arn }
|
141
141
|
end
|
142
|
+
|
143
|
+
private
|
144
|
+
|
145
|
+
def elb_client
|
146
|
+
@elb_v2 ||= Aws::ElasticLoadBalancingV2::Client.new(region: @region)
|
147
|
+
end
|
142
148
|
end
|
143
149
|
end
|
144
150
|
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: 1.
|
4
|
+
version: 1.4.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-05-
|
11
|
+
date: 2017-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: coveralls
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +94,20 @@ dependencies:
|
|
80
94
|
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: 0.36.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: simplecov
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: yard
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|