terrafying 1.7.5 → 1.7.10

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