terrafying-components 1.9.0 → 1.9.1

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
  SHA256:
3
- metadata.gz: '08a95565a526f4e5d5a331389ca7ef561a18a152019ea348d8d6a785e88da46e'
4
- data.tar.gz: b27f3550689d39722e6e1c16704b72e62e65a66077ab42f64a39e955e24a0ed6
3
+ metadata.gz: e17ae473ab3bb13ee3c9e59a9a21ca52e7fa475ac82fa10dfba999df184a936c
4
+ data.tar.gz: 94e1251f7f41160c1585ac0a90557df41a43ee51180372893158a72da16d9084
5
5
  SHA512:
6
- metadata.gz: 8f2261b8735c540fae6963fea825c6d1997ec34cd7173224feb9f13af5e25ccb4b11619ec8f3bd230c45da567c986cd8bbbfcd55eba70e844f08b69565d3b396
7
- data.tar.gz: 2069b0d8198803f7a4b010d67f391372d6b303031b00cba90664467ba08ca18015a0c44c7a75bf1541faa035284faccb72fc841d8b48af3eaf80bc97f280c5d0
6
+ metadata.gz: 65061c32d01671493933b6186ecaf598ad3d259eed7e21438e61080c7af9a30537f3eff6f4f3f10f1502aa4a54b9726de78056d67078f138f154b93ae17c0a07
7
+ data.tar.gz: f273e1ce10eb6e6b0b45d524b83ff640f6c1f00d8425ecf22f2dd20d1ee8e3af91854ca1925cc2bfe099ad17129d7d99a0ae5db8326dfbda2285b80bc230ca17
@@ -142,6 +142,29 @@ module Terrafying
142
142
  self.used_by(load_balancer) if load_balancer.type == "application"
143
143
  end
144
144
 
145
+ def autoscale_on_load_balancer(load_balancer, target_value:, disable_scale_in:)
146
+ load_balancer.target_groups.each.with_index { |target_group, i|
147
+ policy_name = "#{load_balancer.name}-#{@name}-#{i}"
148
+ lb_arn = load_balancer.id.to_s.gsub(/id/, 'arn_suffix')
149
+ tg_arn = target_group.to_s.gsub(/id/, 'arn_suffix')
150
+
151
+ resource :aws_autoscaling_policy, policy_name, {
152
+ name: policy_name,
153
+ autoscaling_group_name: @asg,
154
+ adjustment_type: 'ChangeInCapacity',
155
+ policy_type: 'TargetTrackingScaling',
156
+ target_tracking_configuration: {
157
+ predefined_metric_specification: {
158
+ predefined_metric_type: 'ALBRequestCountPerTarget',
159
+ resource_label: "#{lb_arn}/#{tg_arn}"
160
+ },
161
+ target_value: target_value,
162
+ disable_scale_in: disable_scale_in
163
+ }
164
+ }
165
+ }
166
+ end
167
+
145
168
  def generate_template(health_check, instances, launch_config, subnets,tags, rolling_update)
146
169
  template = {
147
170
  Resources: {
@@ -152,7 +175,6 @@ module Terrafying
152
175
  HealthCheckType: "#{health_check[:type]}",
153
176
  HealthCheckGracePeriod: health_check[:grace_period],
154
177
  LaunchConfigurationName: "#{launch_config}",
155
- MaxSize: "#{instances[:max]}",
156
178
  MetricsCollection: [
157
179
  {
158
180
  Granularity: "1Minute",
@@ -168,14 +190,15 @@ module Terrafying
168
190
  ]
169
191
  },
170
192
  ],
171
- MinSize: "#{instances[:min]}",
172
- DesiredCapacity: "#{instances[:desired]}",
193
+ MaxSize: instances[:max].to_s,
194
+ MinSize: instances[:min].to_s,
195
+ DesiredCapacity: instances[:desired] ? instances[:desired].to_s : nil,
173
196
  Tags: tags,
174
197
  TerminationPolicies: [
175
198
  "Default"
176
199
  ],
177
200
  VPCZoneIdentifier: subnets
178
- }
201
+ }.compact
179
202
  }
180
203
  },
181
204
  Outputs: {
@@ -185,6 +185,11 @@ module Terrafying
185
185
  @security_group = set.ingress_security_group if network?
186
186
  end
187
187
 
188
+ def autoscale(set, target_value:, disable_scale_in:)
189
+ raise "Dont' know how to attach object to LB" unless set.respond_to?(:autoscale_on_load_balancer)
190
+ set.autoscale_on_load_balancer(self, target_value: target_value, disable_scale_in: disable_scale_in)
191
+ end
192
+
188
193
  def make_identifier(type, vpc_name, name)
189
194
  gen_id = "#{type}-#{tf_safe(vpc_name)}-#{name}"
190
195
  return Digest::SHA2.hexdigest(gen_id)[0..24] if @hex_ident || gen_id.size > 26
@@ -1,5 +1,5 @@
1
1
  module Terrafying
2
2
  module Components
3
- VERSION = "1.9.0"
3
+ VERSION = "1.9.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terrafying-components
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.0
4
+ version: 1.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - uSwitch Limited
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-06 00:00:00.000000000 Z
11
+ date: 2018-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler