terrafying 1.7.5 → 1.7.10

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
  SHA256:
3
- metadata.gz: 72da5ae85bf0ba5022d413cb84c630beb572baed66c81713cb3c7d1d8d7cf146
4
- data.tar.gz: d2a92ce8fc0eb4724df5436aef1ce09880881cca0db4f6eb56556386b8b2fed1
3
+ metadata.gz: 86368229c02629676027388525b74e13ea2b7fe9dff7e0da17629c2e45f109d9
4
+ data.tar.gz: 88f521a8c94969e0f1d18ed50ed35fc1c152a4c091f124d2b2cb58e29b0f6145
5
5
  SHA512:
6
- metadata.gz: 8983f67957a2b05e62231afc959f9e5c8e9acecf73551b4b97d7fcbef0764e2db5200d0a25fef69835106982836ea58ac21a20a324b2757bc55e3e4cb24bfe67
7
- data.tar.gz: 0ea60981c01d8f9c71017b64a39990b19e915b77a96297738ce667407ce4e66ddc8db266a5472847f2f6c6454cac2ddb49af5a46467b5cd74fb7948e7abe5a19
6
+ metadata.gz: b29c4f8c6677c89211e11bf839d13845d3e542a4bb6b4edc5218874dc090d66f49e45fba954e576113ef91dc3950b6c2bf1b83ee716fe8c3aa412561fbaa09a1
7
+ data.tar.gz: fac26af997b1d309071cfd4ce4e1e8980a9c0433aa975754d2e0d05cc701d2ed77574e4360407eb0f82d57b034d48635992d9c1c8f70039733042dd5f4d90e6a
@@ -7,6 +7,7 @@ require 'aws-sdk-route53'
7
7
  require 'aws-sdk-s3'
8
8
  require 'aws-sdk-sts'
9
9
  require 'aws-sdk-pricing'
10
+ require 'aws-sdk-kafka'
10
11
  require 'json'
11
12
 
12
13
  Aws.use_bundled_cert!
@@ -36,7 +37,7 @@ module Terrafying
36
37
  @s3_client = ::Aws::S3::Client.new
37
38
  @sts_client = ::Aws::STS::Client.new
38
39
  @pricing_client = ::Aws::Pricing::Client.new(region: 'us-east-1') # no AWS Pricing endpoint in Europe
39
-
40
+ @msk_client = ::Aws::Kafka::Client.new
40
41
  @region = region
41
42
  end
42
43
 
@@ -166,6 +167,26 @@ module Terrafying
166
167
  end
167
168
  end
168
169
 
170
+ def nat_gateways_for_vpc(vpc_id)
171
+ @nat_gateways_for_vpc ||= {}
172
+ @nat_gateways_for_vpc[vpc_id] ||=
173
+ begin
174
+ resp = @ec2_client.describe_nat_gateways(
175
+ filter: [
176
+ { name: 'vpc-id', values: [vpc_id] }
177
+ ]
178
+ )
179
+
180
+ nat_gateways = resp.nat_gateways
181
+
182
+ if nat_gateways.count >= 1
183
+ nat_gateways
184
+ elsif nat_gateways.count < 1
185
+ raise "No nat-gateways for vpc #{vpc_id} were found"
186
+ end
187
+ end
188
+ end
189
+
169
190
  def security_groups(*names)
170
191
  names.map { |n| security_group(n) }
171
192
  end
@@ -523,6 +544,18 @@ module Terrafying
523
544
  return vcpu.to_i if vcpu
524
545
  end
525
546
  end
547
+
548
+ def msk_brokers(cluster_arn)
549
+ @brokers ||= {}
550
+ @brokers[cluster_arn] ||= begin
551
+ resp = @msk_client.get_bootstrap_brokers(cluster_arn: cluster_arn)
552
+ brokers = resp.bootstrap_broker_string_tls.split(',')
553
+
554
+ raise "No brokers found for cluster with arn: \"#{cluster_arn}\"'" if brokers.empty?
555
+
556
+ brokers
557
+ end
558
+ end
526
559
  end
527
560
  end
528
561
  end
@@ -199,6 +199,21 @@ module Terrafying
199
199
  [name, spec[:alias]].compact.join('.')
200
200
  end
201
201
 
202
+ def required_provider(name, spec)
203
+ @output['terraform'] ||= {}
204
+ @output['terraform']['required_providers'] ||= {}
205
+ raise "Duplicate required_provider configuration detected for #{name}" if @output['terraform']['required_providers'].key? name.to_s
206
+
207
+ @output['terraform']['required_providers'][name.to_s] = spec
208
+ end
209
+
210
+ def required_version(version)
211
+ @output['terraform'] ||= {}
212
+ raise "required_version already configure" if @output['terraform']['required_version']
213
+
214
+ @output['terraform']['required_version'] = "#{version}"
215
+ end
216
+
202
217
  def key_exists_spec_differs(key, name, spec)
203
218
  @providers.key?(key) && spec != @providers[key][name.to_s]
204
219
  end
@@ -240,6 +255,16 @@ module Terrafying
240
255
  RootRef.new(kind: :resource, type: type, name: name)
241
256
  end
242
257
 
258
+ def tf_module(name, spec)
259
+ @output['module'] ||= {}
260
+
261
+ raise "Module already exists #{name}" if @output['module'].key? name.to_s
262
+
263
+ @output['module'][name.to_s] = spec
264
+
265
+ RootRef.new(kind: :module, name: name)
266
+ end
267
+
243
268
  def template(relative_path, params = {})
244
269
  dir = caller_locations[0].path
245
270
  filename = File.join(File.dirname(dir), relative_path)
@@ -292,7 +317,7 @@ module Terrafying
292
317
  end
293
318
 
294
319
  def tf_safe(str)
295
- str.gsub(%r{[\.\s/\?]}, '-')
320
+ str.gsub(%r{[\.\s/\?]}, '-').gsub(%r{\*}, "star")
296
321
  end
297
322
  end
298
323
 
@@ -341,6 +366,7 @@ module Terrafying
341
366
  provider
342
367
  resource
343
368
  data
369
+ tf_module
344
370
  template
345
371
  tf_safe
346
372
  id_of
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Terrafying
4
- VERSION = '1.7.5' # will be inserted by Drone
4
+ VERSION = '1.7.10' # will be inserted by Drone
5
5
  CLI_VERSION = '0.11.7'
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terrafying
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.5
4
+ version: 1.7.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - uSwitch Limited
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-20 00:00:00.000000000 Z
11
+ date: 2021-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -150,6 +150,20 @@ dependencies:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
152
  version: '1'
153
+ - !ruby/object:Gem::Dependency
154
+ name: aws-sdk-kafka
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1'
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: aws-sdk-pricing
155
169
  requirement: !ruby/object:Gem::Requirement