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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e670cdac7ce5a24b4d82bc026eceaa8068b6422f
4
- data.tar.gz: 6b5a6ca2de09ae0a680e4ff1de903798cb04c78d
3
+ metadata.gz: df6d36f3dcad17f7d794bb91775db9f74fb96c70
4
+ data.tar.gz: 3eaaf846fbb6306ef95235f5092c27f33bd94dcf
5
5
  SHA512:
6
- metadata.gz: 2ca1d9c75bbc08407d04f1dbc510f695c24b84fb45b8ea03bd56562d7049e010f214dbc8514f413350a880892fbad2f6780ae368cff1e7e4491177c763b6d0cd
7
- data.tar.gz: 6871ae244cf85ac56ff6256fbe6799b1f39540f9823a1288e97b9c67bda32301c32829ecd7cb9b06ebbc0b5dca1df0b86d4b5df48abba4f351a2f92c5b078a5a
6
+ metadata.gz: 2fb9a1d911b4c3a02693f6204bfeb1a66e0ed4655ff6aff36aafb08e0c69a9cf21e8343306faa6ff0952b313e37abc28aaf000678309ad20e16fd5c1f863538a
7
+ data.tar.gz: 32fb06237271a486c2d41fbdd5a2de64128418833ff6c6d82dab560a8f8ae8f273661687bd82552ee922ed0c35bf7b5ba0c1a9ec4bd4b635a4437c58ab1f21d9
@@ -7,6 +7,9 @@ AllCops:
7
7
  Style/Alias:
8
8
  EnforcedStyle: prefer_alias_method
9
9
 
10
+ Style/FirstParameterIndentation:
11
+ Enabled: false
12
+
10
13
  Style/GuardClause:
11
14
  Enabled: false
12
15
 
@@ -1,8 +1,8 @@
1
1
  language: ruby
2
2
  sudo: false
3
3
  rvm:
4
- - 2.3.3
5
- - 2.4.0
4
+ - 2.3.4
5
+ - 2.4.1
6
6
  - ruby-head
7
7
  before_install:
8
8
  - gem update --system # https://github.com/rubygems/rubygems/pull/1819
@@ -1,3 +1,7 @@
1
+ # 1.4.0 (2017-05-25)
2
+ ## New features
3
+ - Support `ulimits` option
4
+
1
5
  # 1.3.3 (2017-05-23)
2
6
  ## Bug fixes
3
7
  - Fix error of autoscaling for oneshot when container instances are empty
@@ -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
@@ -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'
@@ -357,7 +357,7 @@ module Hako
357
357
  if @force
358
358
  return true
359
359
  end
360
- if !actual_definition
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
- @elb_v2 = Aws::ElasticLoadBalancingV2::Client.new(region: region)
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
- @elb_v2.describe_listeners(load_balancer_arn: lb.load_balancer_arn).each do |page|
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
- @elb_v2.describe_load_balancers(names: [name]).load_balancers[0]
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
- @elb_v2.describe_target_groups(names: [name]).target_groups[0]
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 = @elb_v2.create_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 = @elb_v2.create_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 = @elb_v2.describe_listeners(load_balancer_arn: load_balancer.load_balancer_arn).flat_map { |page| page.listeners.map(&:port) }
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 = @elb_v2.create_listener(params).listeners[0]
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("@elb_v2.delete_load_balancer(load_balancer_arn: #{load_balancer.load_balancer_arn})")
113
+ Hako.logger.info("elb_client.delete_load_balancer(load_balancer_arn: #{load_balancer.load_balancer_arn})")
114
114
  else
115
- @elb_v2.delete_load_balancer(load_balancer_arn: load_balancer.load_balancer_arn)
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("@elb_v2.delete_target_group(target_group_arn: #{target_group.target_group_arn})")
125
+ Hako.logger.info("elb_client.delete_target_group(target_group_arn: #{target_group.target_group_arn})")
126
126
  else
127
- @elb_v2.delete_target_group(target_group_arn: target_group.target_group_arn)
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Hako
4
- VERSION = '1.3.3'
4
+ VERSION = '1.4.0'
5
5
  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: 1.3.3
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-23 00:00:00.000000000 Z
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