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 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