kitchen-terraform 0.3.0 → 0.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: fab118f04f2357e74aea7dc6cd9a3d41ce176e86
4
- data.tar.gz: 1184130c5eb929bb545689877cb6b4d86896be7c
3
+ metadata.gz: 1df0e3998d394adc8988feb446bfc1149575e5a0
4
+ data.tar.gz: 0f0915e9ad1c7be1a4c941bf4b0d357a455d6b4e
5
5
  SHA512:
6
- metadata.gz: 2920103244e6bed6c7679692d86a21770f16cad1f6bf8346ef1db3f8f5afc78eba46105c0a7b444cedc227cce550dff0bba56c32f86dbdae23da647dfa1cbe79
7
- data.tar.gz: e4656ec4baaf076ba378ff90db2c6972c5e25ed3de91024f72bd826c0257aac91a47c8438db1e223f68a64af19759c49ae22bacbb202153fdbb3944bac9409d9
6
+ metadata.gz: eca7ed84aaa1026a85260bffca9696d0f5d0af5c3b14a414ae97514fed568ef95b17eacd89bac1e474be491ed4a2a399475b37daafae62e27836854260c83e66
7
+ data.tar.gz: 9db90acbe78ad0f876de61b00af6ec2a490115a4a82ed21be8ec35351e24ba19834d4c7a2e3a6a3c31704e560ba185c6bcf9b78b9a9c8e6a856614341074f032
Binary file
data.tar.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -1,4 +1,10 @@
1
- # kitchen-terraform
1
+ # ![kitchen-terraform logo](assets/logo.png) kitchen-terraform
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/kitchen-terraform.svg)](https://badge.fury.io/rb/kitchen-terraform)
4
+ [![Code Climate](https://codeclimate.com/github/newcontext-oss/kitchen-terraform/badges/gpa.svg)](https://codeclimate.com/github/newcontext-oss/kitchen-terraform)
5
+ [![Issue Count](https://codeclimate.com/github/newcontext-oss/kitchen-terraform/badges/issue_count.svg)](https://codeclimate.com/github/newcontext-oss/kitchen-terraform)
6
+ [![Build Status Master](https://travis-ci.org/newcontext-oss/kitchen-terraform.svg?branch=master)](https://travis-ci.org/newcontext-oss/kitchen-terraform)
7
+ [![Test Coverage](https://codeclimate.com/github/newcontext-oss/kitchen-terraform/badges/coverage.svg)](https://codeclimate.com/github/newcontext-oss/kitchen-terraform/coverage)
2
8
 
3
9
  kitchen-terraform is a set of [Test Kitchen] plugins for testing
4
10
  [Terraform configuration].
@@ -9,7 +15,7 @@ kitchen-terraform is a set of [Test Kitchen] plugins for testing
9
15
 
10
16
  ## Requirements
11
17
 
12
- - [Ruby] **(~> 2.3)**
18
+ - [Ruby] **(~> 2.1)**
13
19
 
14
20
  - [Bundler] **(~> 1.12)**
15
21
 
@@ -31,9 +37,9 @@ which means it can be [installed with Bundler].
31
37
  Once Bundler is installed, add kitchen-terraform to the project's Gemfile:
32
38
 
33
39
  ```rb
34
- source 'https://rubygems.org'
35
-
36
- gem 'kitchen-terraform', '~> 0.1'
40
+ source 'https://rubygems.org/' do
41
+ gem 'kitchen-terraform', '~> 0.4'
42
+ end
37
43
  ```
38
44
 
39
45
  Then, use Bundler to install the gems:
@@ -175,6 +181,23 @@ provisioner:
175
181
 
176
182
  The default `directory` is the current working directory of Test Kitchen.
177
183
 
184
+ ##### parallelism
185
+
186
+ The number of concurrent operations to allow for the Terraform `apply` and
187
+ `plan` commands.
188
+
189
+ ###### Example .kitchen.yml
190
+
191
+ ```yaml
192
+ provisioner:
193
+ name: terraform
194
+ parallelism: 2
195
+ ```
196
+
197
+ ###### Default
198
+
199
+ The default `parallelism` is 10.
200
+
178
201
  ##### variable_files
179
202
 
180
203
  A collection of pathnames of [Terraform variable files] to be evaluated
@@ -262,43 +285,50 @@ configuration defined by that plugin with the exception of the `port` and
262
285
 
263
286
  ##### groups
264
287
 
265
- A collection of group mappings containing [InSpec control] and
266
- connection options for the different server instance groups in the
288
+ A collection of mappings that define how to test different resources in the
267
289
  Terraform configuration.
268
290
 
269
- [InSpec control]: http://inspec.io/docs/reference/dsl_inspec/
270
-
271
291
  Each group consists of:
272
292
 
273
- - a name to use for logging purposes
293
+ - a `name` to use for logging purposes
274
294
 
275
- - a mapping of InSpec attribute names to Terraform output variable
276
- names to define for the suite's InSpec profile
295
+ - an optional `attributes` mapping of InSpec profile attribute names to
296
+ Terraform output variable names to define for the suite's InSpec profile
277
297
 
278
- - a collection of controls to include from the suite's InSpec profile
298
+ - a `controls` collection of [InSpec controls] to include from the suite's
299
+ InSpec profile
279
300
 
280
- - a hostnames output variable name to use for extracting hostnames from
281
- the Terraform state; the output value is assumed to be in CSV format
301
+ - a mapping of InSpec profile attribute names to Terraform output variable
302
+ names; the attributes will be with the resolved output values
282
303
 
283
- - the port to use when connecting to the group's hosts
304
+ - an optional `hostnames` output variable name to use for extracting hostnames
305
+ from the Terraform state; the resolved output value is assumed to be a
306
+ list of strings or a string in CSV format
284
307
 
285
- - the username to use when connecting to the group's hosts
308
+ - an optional `port` to use when connecting to the group's hosts
309
+
310
+ - an optional `username` to use when connecting to the group's hosts
311
+
312
+ If `hostnames` is empty then the group's `controls` will be executed
313
+ locally; this enables testing of a provider's API to verify non-server
314
+ resources.
315
+
316
+ [InSpec controls]: http://inspec.io/docs/reference/dsl_inspec/
286
317
 
287
318
  ###### Example .kitchen.yml
288
319
 
289
320
  ```yaml
290
- ---
291
321
  verifier:
292
322
  name: terraform
293
323
  groups:
294
- - name: arbitrary
295
- attributes:
296
- foo: bar
297
- controls:
298
- - biz
299
- hostnames: hostnames_output
300
- port: 123
301
- username: test-user
324
+ - name: arbitrary
325
+ attributes:
326
+ foo: bar
327
+ controls:
328
+ - biz
329
+ hostnames: hostnames_output
330
+ port: 123
331
+ username: test-user
302
332
  ```
303
333
 
304
334
  ###### Defaults
@@ -307,10 +337,14 @@ The default `groups` collection is empty.
307
337
 
308
338
  For each group:
309
339
 
310
- - the default `attributes` mapping is empty
340
+ - the default `attributes` mapping consists of equivalently named
341
+ attributes for each output variable; additional or overridden
342
+ associations can be added.
311
343
 
312
344
  - the default `controls` collection is empty
313
345
 
346
+ - the default `hostnames` string is empty
347
+
314
348
  - the default `port` is obtained from the transport
315
349
 
316
350
  - the default `username` is obtained from the transport
@@ -48,12 +48,11 @@ module Kitchen
48
48
 
49
49
  def verify_dependencies
50
50
  case version
51
- when /v0\.7/
51
+ when /(v[^0]|v0\.[^67])/
52
+ raise Kitchen::UserError, 'Only Terraform v0.7 and v0.6 are supported'
52
53
  when /v0\.6/
53
54
  log_deprecation aspect: 'v0.6', remediation: 'Update to v0.7',
54
55
  version: '1.0'
55
- else
56
- raise Kitchen::UserError, 'Only Terraform v0.7 and v0.6 are supported'
57
56
  end
58
57
  end
59
58
  end
@@ -19,6 +19,7 @@ require 'terraform/apply_timeout_config'
19
19
  require 'terraform/color_config'
20
20
  require 'terraform/configurable'
21
21
  require 'terraform/directory_config'
22
+ require 'terraform/parallelism_config'
22
23
  require 'terraform/plan_config'
23
24
  require 'terraform/state_config'
24
25
  require 'terraform/variable_files_config'
@@ -36,6 +37,8 @@ module Kitchen
36
37
 
37
38
  include ::Terraform::DirectoryConfig
38
39
 
40
+ include ::Terraform::ParallelismConfig
41
+
39
42
  include ::Terraform::PlanConfig
40
43
 
41
44
  include ::Terraform::StateConfig
@@ -29,48 +29,63 @@ module Kitchen
29
29
 
30
30
  kitchen_verifier_api_version 2
31
31
 
32
+ def call(state)
33
+ verify_groups options: runner_options(transport, state)
34
+ end
35
+
36
+ private
37
+
32
38
  def add_targets(runner:)
33
39
  collect_tests.each { |test| runner.add_target test }
34
40
  end
35
41
 
36
- def call(state)
37
- self.inspec_runner_options = runner_options transport, state
38
- config[:groups].each { |group| group.evaluate verifier: self }
42
+ def execute(group:, options:)
43
+ options.merge! group.options
44
+ ::Inspec::Runner.new(options).tap do |runner|
45
+ add_targets runner: runner
46
+ validate exit_code: runner.run
47
+ end
39
48
  end
40
49
 
41
- def execute
42
- ::Terraform::InspecRunner.new(inspec_runner_options)
43
- .tap do |inspec_runner|
44
- inspec_runner.evaluate verifier: self
45
- end
50
+ def execute_local(group:, options:)
51
+ options[:backend] = 'local'
52
+ info "Verifying group '#{group.name}'"
53
+ execute group: group, options: options
46
54
  end
47
55
 
48
- def merge(options:)
49
- inspec_runner_options.merge! options
56
+ def execute_remote(group:, options:)
57
+ driver.output_value list: true, name: group.hostnames do |hostname|
58
+ options[:host] = hostname
59
+ info "Verifying host '#{hostname}' of group '#{group.name}'"
60
+ execute group: group, options: options
61
+ end
50
62
  end
51
63
 
52
64
  def resolve_attributes(group:)
65
+ driver.each_output_name do |output_name|
66
+ group.store_attribute key: output_name, value: output_name
67
+ end
53
68
  group.each_attribute do |key, output_name|
54
69
  group.store_attribute key: key,
55
70
  value: driver.output_value(name: output_name)
56
71
  end
57
72
  end
58
73
 
59
- def resolve_hostnames(group:, &block)
60
- driver.output_value list: true, name: group.hostnames, &block
61
- end
74
+ def validate(exit_code:)
75
+ return if exit_code.zero?
62
76
 
63
- def verify(exit_code:)
64
- raise InstanceFailure, "Inspec Runner returns #{exit_code}" unless
65
- exit_code.zero?
77
+ raise ::Kitchen::InstanceFailure, "Inspec Runner returns #{exit_code}"
66
78
  end
67
79
 
68
- private
69
-
70
- attr_accessor :inspec_runner_options
80
+ def verify(group:, options:)
81
+ resolve_attributes group: group
82
+ group.if_local { return execute_local group: group, options: options }
83
+ execute_remote group: group, options: options
84
+ end
71
85
 
72
- def load_needed_dependencies!
73
- require 'terraform/inspec_runner'
86
+ def verify_groups(options:)
87
+ config[:groups]
88
+ .each { |group| verify group: group, options: options.dup }
74
89
  end
75
90
  end
76
91
  end
@@ -27,15 +27,16 @@ module Terraform
27
27
  end
28
28
 
29
29
  def options
30
- "-input=false -state=#{state} #{color_switch}"
30
+ "-input=false -parallelism=#{parallelism} -state=#{state} #{color_switch}"
31
31
  end
32
32
 
33
33
  private
34
34
 
35
- attr_accessor :state
35
+ attr_accessor :parallelism, :state
36
36
 
37
- def initialize_attributes(color:, state:)
37
+ def initialize_attributes(color:, parallelism:, state:)
38
38
  self.color = color
39
+ self.parallelism = parallelism
39
40
  self.state = state
40
41
  end
41
42
  end
@@ -30,8 +30,8 @@ module Terraform
30
30
 
31
31
  def apply_execution_plan
32
32
  execute command: ApplyCommand.new(
33
- color: provisioner[:color], state: provisioner[:state],
34
- target: provisioner[:plan]
33
+ color: provisioner[:color], parallelism: provisioner[:parallelism],
34
+ state: provisioner[:state], target: provisioner[:plan]
35
35
  ), timeout: provisioner[:apply_timeout]
36
36
  end
37
37
 
@@ -54,13 +54,17 @@ module Terraform
54
54
  ) { |value| list ? value.each(&block) : (return value) }
55
55
  end
56
56
 
57
+ def each_output_name(&block)
58
+ execute(
59
+ command: OutputCommand.new(
60
+ list: false, state: provisioner[:state], version: version,
61
+ return_raw: true
62
+ )
63
+ ) { |output| JSON.parse(output).each_key(&block) }
64
+ end
65
+
57
66
  def plan_execution(destroy:)
58
- execute command: PlanCommand.new(
59
- color: provisioner[:color], destroy: destroy, out: provisioner[:plan],
60
- state: provisioner[:state], target: provisioner[:directory],
61
- variables: provisioner[:variables],
62
- variable_files: provisioner[:variable_files]
63
- )
67
+ execute command: plan_command(destroy: destroy)
64
68
  end
65
69
 
66
70
  def validate_configuration_files
@@ -72,5 +76,16 @@ module Terraform
72
76
  return value.slice(/v\d+\.\d+\.\d+/)
73
77
  end
74
78
  end
79
+
80
+ private
81
+
82
+ def plan_command(destroy:)
83
+ PlanCommand
84
+ .new color: provisioner[:color], destroy: destroy,
85
+ out: provisioner[:plan], parallelism: provisioner[:parallelism],
86
+ state: provisioner[:state], target: provisioner[:directory],
87
+ variables: provisioner[:variables],
88
+ variable_files: provisioner[:variable_files]
89
+ end
75
90
  end
76
91
  end
@@ -52,8 +52,7 @@ module Terraform
52
52
  .new "terraform #{name} #{options} #{target}", returns: 0
53
53
  end
54
54
 
55
- def initialize_attributes(**_keyword_arguments)
56
- end
55
+ def initialize_attributes(**_keyword_arguments) end
57
56
 
58
57
  def processed_output(raw_output:)
59
58
  raw_output
@@ -14,27 +14,34 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
 
17
+ require 'kitchen/util'
18
+
17
19
  module Terraform
18
20
  # Group of Terraform server instances to be verified
19
21
  class Group
20
22
  def each_attribute(&block)
21
- data[:attributes].each_pair(&block)
22
- end
23
-
24
- def evaluate(verifier:)
25
- verifier.merge options: options
26
- verifier.resolve_attributes group: self
27
- verifier.resolve_hostnames group: self do |hostname|
28
- verifier.info "Verifying host '#{hostname}' of group '#{data[:name]}'"
29
- verifier.merge options: { host: hostname }
30
- verifier.execute
31
- end
23
+ data[:attributes].dup.each_pair(&block)
32
24
  end
33
25
 
34
26
  def hostnames
35
27
  data[:hostnames]
36
28
  end
37
29
 
30
+ def if_local
31
+ yield if hostnames.empty?
32
+ end
33
+
34
+ def name
35
+ data[:name]
36
+ end
37
+
38
+ def options
39
+ {
40
+ attributes: attributes, controls: data[:controls], port: data[:port],
41
+ user: data[:username]
42
+ }
43
+ end
44
+
38
45
  def store_attribute(key:, value:)
39
46
  data[:attributes][key] = value
40
47
  end
@@ -43,15 +50,12 @@ module Terraform
43
50
 
44
51
  attr_accessor :data
45
52
 
46
- def initialize(data:)
47
- self.data = data
53
+ def attributes
54
+ ::Kitchen::Util.stringified_hash data[:attributes]
48
55
  end
49
56
 
50
- def options
51
- {
52
- attributes: data[:attributes], controls: data[:controls],
53
- port: data[:port], user: data[:username]
54
- }
57
+ def initialize(data:)
58
+ self.data = data
55
59
  end
56
60
  end
57
61
  end
@@ -30,12 +30,13 @@ module Terraform
30
30
 
31
31
  private
32
32
 
33
- attr_accessor :list, :state
33
+ attr_accessor :list, :state, :return_raw
34
34
 
35
- def initialize_attributes(list:, version:, state:)
35
+ def initialize_attributes(list:, version:, state:, return_raw: false)
36
36
  extend_behaviour version: version
37
37
  self.list = list
38
38
  self.state = state
39
+ self.return_raw = return_raw
39
40
  end
40
41
 
41
42
  def version_behaviours
@@ -14,25 +14,21 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
 
17
- require 'inspec'
18
- require 'kitchen'
19
-
20
17
  module Terraform
21
- # Inspec::Runner with convenience methods for use by
22
- # Kitchen::Verifier::Terraform
23
- class InspecRunner < Inspec::Runner
24
- attr_reader :conf
25
-
26
- def evaluate(verifier:)
27
- verifier.add_targets runner: self
28
- verifier.verify exit_code: run
18
+ # Behaviour for the [:parallelism] config option
19
+ module ParallelismConfig
20
+ def self.included(configurable_class)
21
+ configurable_class
22
+ .required_config :parallelism do |_, value, configurable|
23
+ configurable.coerce_parallelism value: value
24
+ end
25
+ configurable_class.default_config :parallelism, 10
29
26
  end
30
27
 
31
- private
32
-
33
- def initialize(conf = {})
34
- conf[:attributes] = Kitchen::Util.stringified_hash conf[:attributes]
35
- super
28
+ def coerce_parallelism(value:)
29
+ config[:parallelism] = Integer value
30
+ rescue ::ArgumentError, ::TypeError
31
+ config_error attribute: 'parallelism', expected: 'an integer'
36
32
  end
37
33
  end
38
34
  end
@@ -27,20 +27,23 @@ module Terraform
27
27
  end
28
28
 
29
29
  def options
30
- "-destroy=#{destroy} -input=false -out=#{out} -state=#{state} " \
30
+ "-destroy=#{destroy} -input=false -out=#{out} " \
31
+ "-parallelism=#{parallelism} -state=#{state} " \
31
32
  "#{color_switch}#{processed_variables}#{processed_variable_files}"
32
33
  end
33
34
 
34
35
  private
35
36
 
36
- attr_accessor :destroy, :out, :state, :variables, :variable_files
37
+ attr_accessor :destroy, :out, :parallelism, :state, :variables,
38
+ :variable_files
37
39
 
38
40
  def initialize_attributes(
39
- color:, destroy:, out:, state:, variables:, variable_files:
41
+ color:, destroy:, out:, parallelism:, state:, variables:, variable_files:
40
42
  )
41
43
  self.color = color
42
44
  self.destroy = destroy
43
45
  self.out = out
46
+ self.parallelism = parallelism
44
47
  self.state = state
45
48
  self.variables = variables
46
49
  self.variable_files = variable_files
@@ -15,5 +15,5 @@
15
15
  # limitations under the License.
16
16
 
17
17
  module Terraform
18
- VERSION = '0.3.0'
18
+ VERSION = '0.4.0'
19
19
  end
@@ -26,6 +26,7 @@ module Terraform
26
26
  private
27
27
 
28
28
  def processed_output(raw_output:)
29
+ return raw_output if return_raw
29
30
  JSON.parse(raw_output).fetch('value')
30
31
  .tap { |value| return list ? Array(value) : value }
31
32
  end
@@ -24,6 +24,7 @@ module Terraform
24
24
  private
25
25
 
26
26
  def processed_output(raw_output:)
27
+ return raw_output if return_raw
27
28
  raw_output.chomp.tap { |value| return list ? value.split(',') : value }
28
29
  end
29
30
  end
metadata CHANGED
@@ -1,14 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-terraform
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Lane
8
+ - Clay Thomas
9
+ - Erik R. Rygg
10
+ - Ewa Czechowska
8
11
  - Kevin Dickerson
12
+ - Kyle Sexton
9
13
  - Michael Glenney
10
14
  - Nell Shamrell-Harrington
11
15
  - Nick Willever
16
+ - Walter Dolce
12
17
  autorequire:
13
18
  bindir: bin
14
19
  cert_chain:
@@ -35,7 +40,7 @@ cert_chain:
35
40
  KucGZX3OeACVUSpmCOCQyma6sDHYWQZM/IgWi7tbLtG5b2GslkauPm4S3wadHi6W
36
41
  LOU=
37
42
  -----END CERTIFICATE-----
38
- date: 2016-10-04 00:00:00.000000000 Z
43
+ date: 2016-12-24 00:00:00.000000000 Z
39
44
  dependencies:
40
45
  - !ruby/object:Gem::Dependency
41
46
  name: bundler-audit
@@ -57,6 +62,20 @@ dependencies:
57
62
  - - ">="
58
63
  - !ruby/object:Gem::Version
59
64
  version: 0.5.0
65
+ - !ruby/object:Gem::Dependency
66
+ name: codeclimate-test-reporter
67
+ requirement: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: '1.0'
72
+ type: :development
73
+ prerelease: false
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - "~>"
77
+ - !ruby/object:Gem::Version
78
+ version: '1.0'
60
79
  - !ruby/object:Gem::Dependency
61
80
  name: guard
62
81
  requirement: !ruby/object:Gem::Requirement
@@ -191,6 +210,20 @@ dependencies:
191
210
  - - ">="
192
211
  - !ruby/object:Gem::Version
193
212
  version: 0.10.3
213
+ - !ruby/object:Gem::Dependency
214
+ name: pry-coolline
215
+ requirement: !ruby/object:Gem::Requirement
216
+ requirements:
217
+ - - "~>"
218
+ - !ruby/object:Gem::Version
219
+ version: '0.2'
220
+ type: :development
221
+ prerelease: false
222
+ version_requirements: !ruby/object:Gem::Requirement
223
+ requirements:
224
+ - - "~>"
225
+ - !ruby/object:Gem::Version
226
+ version: '0.2'
194
227
  - !ruby/object:Gem::Dependency
195
228
  name: rspec
196
229
  requirement: !ruby/object:Gem::Requirement
@@ -232,39 +265,19 @@ dependencies:
232
265
  - !ruby/object:Gem::Version
233
266
  version: 0.40.0
234
267
  - !ruby/object:Gem::Dependency
235
- name: rubycritic
236
- requirement: !ruby/object:Gem::Requirement
237
- requirements:
238
- - - "~>"
239
- - !ruby/object:Gem::Version
240
- version: '2.9'
241
- type: :development
242
- prerelease: false
243
- version_requirements: !ruby/object:Gem::Requirement
244
- requirements:
245
- - - "~>"
246
- - !ruby/object:Gem::Version
247
- version: '2.9'
248
- - !ruby/object:Gem::Dependency
249
- name: simplecov
268
+ name: travis
250
269
  requirement: !ruby/object:Gem::Requirement
251
270
  requirements:
252
271
  - - "~>"
253
272
  - !ruby/object:Gem::Version
254
- version: '0.11'
255
- - - ">="
256
- - !ruby/object:Gem::Version
257
- version: 0.11.2
273
+ version: '1.8'
258
274
  type: :development
259
275
  prerelease: false
260
276
  version_requirements: !ruby/object:Gem::Requirement
261
277
  requirements:
262
278
  - - "~>"
263
279
  - !ruby/object:Gem::Version
264
- version: '0.11'
265
- - - ">="
266
- - !ruby/object:Gem::Version
267
- version: 0.11.2
280
+ version: '1.8'
268
281
  - !ruby/object:Gem::Dependency
269
282
  name: inspec
270
283
  requirement: !ruby/object:Gem::Requirement
@@ -363,8 +376,8 @@ files:
363
376
  - lib/terraform/get_command.rb
364
377
  - lib/terraform/group.rb
365
378
  - lib/terraform/groups_config.rb
366
- - lib/terraform/inspec_runner.rb
367
379
  - lib/terraform/output_command.rb
380
+ - lib/terraform/parallelism_config.rb
368
381
  - lib/terraform/plan_command.rb
369
382
  - lib/terraform/plan_config.rb
370
383
  - lib/terraform/show_command.rb
@@ -376,7 +389,7 @@ files:
376
389
  - lib/terraform/version_command.rb
377
390
  - lib/terraform/zero_seven_output.rb
378
391
  - lib/terraform/zero_six_output.rb
379
- homepage: https://github.com/newcontext/kitchen-terraform
392
+ homepage: https://github.com/newcontext-oss/kitchen-terraform
380
393
  licenses:
381
394
  - Apache-2.0
382
395
  metadata: {}
@@ -386,24 +399,21 @@ require_paths:
386
399
  - lib
387
400
  required_ruby_version: !ruby/object:Gem::Requirement
388
401
  requirements:
389
- - - "~>"
390
- - !ruby/object:Gem::Version
391
- version: '2.3'
392
402
  - - ">="
393
403
  - !ruby/object:Gem::Version
394
- version: 2.3.1
404
+ version: '2.1'
405
+ - - "<"
406
+ - !ruby/object:Gem::Version
407
+ version: '2.4'
395
408
  required_rubygems_version: !ruby/object:Gem::Requirement
396
409
  requirements:
397
- - - "~>"
398
- - !ruby/object:Gem::Version
399
- version: '2.6'
400
410
  - - ">="
401
411
  - !ruby/object:Gem::Version
402
- version: 2.6.3
412
+ version: '0'
403
413
  requirements:
404
414
  - Terraform >= 0.6.0, < 0.8.0
405
415
  rubyforge_project:
406
- rubygems_version: 2.6.6
416
+ rubygems_version: 2.5.2
407
417
  signing_key:
408
418
  specification_version: 4
409
419
  summary: Test Kitchen plugins for testing Terraform projects
metadata.gz.sig CHANGED
@@ -1,4 +1,2 @@
1
- 2!P��
2
- ��,�t{E*��C
3
- Uk�����x�+q�x O�񯸜d���)�R�P8��ٌ�f��t��tb� �Oi�v�����.>��f���G�E��mY���{^M��Fr"�-��x��\
4
- �����.�o�S{�X� -JG��P,�`8M�!���*��s��-N��+[�(UÐ}�����~�4�Ap��Ve��H�efyăo
1
+ ���o��6��p�����ZT�B;zH�N��W˔N��p9^^d2�$H������W�U[zy��Ώ������sج��s�U��jRYs����z7�B����h�(;Pn�W�k��ϯ�0;��L`4�1k��HW�ŢP�h}���)5�9Vaeʕi��O{�����Y|
2
+ KP�Y���f>�����1�z��|)�(33t�XS9']�HJS