hako 1.3.3 → 1.4.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/.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
|