kitchen-terraform 4.1.1 → 4.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/kitchen/driver/terraform.rb +44 -36
- data/lib/kitchen/provisioner/terraform.rb +0 -5
- data/lib/kitchen/terraform/command/version.rb +66 -0
- data/lib/kitchen/terraform/config_attribute/verify_version.rb +35 -0
- data/lib/kitchen/terraform/config_schemas/system.rb +1 -1
- data/lib/kitchen/terraform/verify_version.rb +39 -0
- data/lib/kitchen/terraform/version.rb +1 -1
- metadata +55 -36
- metadata.gz.sig +0 -0
- data/lib/kitchen/terraform/client_version_verifier.rb +0 -64
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4440d061c4d94bbeac36416efd164b94edff6ca5347409a754a3b41c3893a8b4
|
4
|
+
data.tar.gz: d8dea88d831c64d1c72711aa1a1d400a0d3b6c3474453a53c46ecf8c19f767b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 73dfd7d60e26d4d79c5ea0d5212e5069b87cd171bb3480abd955b6fd66580ba5cad6bbf4ec483c3069d4b51a4a4eea3f712aa452dbc97c791a902ac4454f937e
|
7
|
+
data.tar.gz: dc37c54cdc9f4f465444ee9dadd8ef3c4da7328e0d8b8b3a7e2fa9ccc28aaa02ae07a4b923479892542630fde0c9e7d6bce8c874b91cd1e0b93a053b43d6e4ea
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
@@ -15,8 +15,8 @@
|
|
15
15
|
# limitations under the License.
|
16
16
|
|
17
17
|
require "kitchen"
|
18
|
-
require "kitchen/terraform/client_version_verifier"
|
19
18
|
require "kitchen/terraform/command/output"
|
19
|
+
require "kitchen/terraform/command/version"
|
20
20
|
require "kitchen/terraform/config_attribute/backend_configurations"
|
21
21
|
require "kitchen/terraform/config_attribute/color"
|
22
22
|
require "kitchen/terraform/config_attribute/command_timeout"
|
@@ -27,9 +27,12 @@ require "kitchen/terraform/config_attribute/plugin_directory"
|
|
27
27
|
require "kitchen/terraform/config_attribute/root_module_directory"
|
28
28
|
require "kitchen/terraform/config_attribute/variable_files"
|
29
29
|
require "kitchen/terraform/config_attribute/variables"
|
30
|
+
require "kitchen/terraform/config_attribute/verify_version"
|
30
31
|
require "kitchen/terraform/configurable"
|
31
32
|
require "kitchen/terraform/shell_out"
|
33
|
+
require "kitchen/terraform/verify_version"
|
32
34
|
require "shellwords"
|
35
|
+
require "tty/which"
|
33
36
|
|
34
37
|
# This namespace is defined by Kitchen.
|
35
38
|
#
|
@@ -170,6 +173,10 @@ end
|
|
170
173
|
#
|
171
174
|
# {include:Kitchen::Terraform::ConfigAttribute::Variables}
|
172
175
|
#
|
176
|
+
# ==== verify_version
|
177
|
+
#
|
178
|
+
# {include:Kitchen::Terraform::ConfigAttribute::VerifyVersion}
|
179
|
+
#
|
173
180
|
# @example Describe the create command
|
174
181
|
# kitchen help create
|
175
182
|
# @example Create a Test Kitchen instance
|
@@ -209,18 +216,21 @@ class ::Kitchen::Driver::Terraform < ::Kitchen::Driver::Base
|
|
209
216
|
|
210
217
|
include ::Kitchen::Terraform::ConfigAttribute::Variables
|
211
218
|
|
219
|
+
include ::Kitchen::Terraform::ConfigAttribute::VerifyVersion
|
220
|
+
|
212
221
|
include ::Kitchen::Terraform::Configurable
|
213
222
|
|
214
223
|
# Applies changes to the state by selecting the test workspace, updating the dependency modules, validating the root
|
215
224
|
# module, and applying the state changes.
|
216
225
|
#
|
217
|
-
# @raise [::Kitchen::
|
226
|
+
# @raise [::Kitchen::ActionFailed] if the result of the action is a failure.
|
218
227
|
# @return [void]
|
219
228
|
def apply(&block)
|
229
|
+
verify_version
|
220
230
|
run_workspace_select_instance
|
221
|
-
|
222
|
-
|
223
|
-
|
231
|
+
apply_run
|
232
|
+
rescue ::Kitchen::Terraform::Error => error
|
233
|
+
raise ::Kitchen::ActionFailed, error.message
|
224
234
|
end
|
225
235
|
|
226
236
|
# Creates a Test Kitchen instance by initializing the working directory and creating a test workspace.
|
@@ -229,13 +239,11 @@ class ::Kitchen::Driver::Terraform < ::Kitchen::Driver::Base
|
|
229
239
|
# @raise [::Kitchen::ActionFailed] if the result of the action is a failure.
|
230
240
|
# @return [void]
|
231
241
|
def create(_state)
|
242
|
+
verify_version
|
232
243
|
create_run_init
|
233
244
|
run_workspace_select_instance
|
234
245
|
rescue ::Kitchen::Terraform::Error => error
|
235
|
-
raise
|
236
|
-
::Kitchen::ActionFailed,
|
237
|
-
error.message
|
238
|
-
)
|
246
|
+
raise ::Kitchen::ActionFailed, error.message
|
239
247
|
end
|
240
248
|
|
241
249
|
# Destroys a Test Kitchen instance by initializing the working directory, selecting the test workspace,
|
@@ -245,22 +253,20 @@ class ::Kitchen::Driver::Terraform < ::Kitchen::Driver::Base
|
|
245
253
|
# @raise [::Kitchen::ActionFailed] if the result of the action is a failure.
|
246
254
|
# @return [void]
|
247
255
|
def destroy(_state)
|
256
|
+
verify_version
|
248
257
|
destroy_run_init
|
249
258
|
run_workspace_select_instance
|
250
259
|
destroy_run_destroy
|
251
260
|
destroy_run_workspace_select_default
|
252
261
|
destroy_run_workspace_delete_instance
|
253
262
|
rescue ::Kitchen::Terraform::Error => error
|
254
|
-
raise
|
255
|
-
::Kitchen::ActionFailed,
|
256
|
-
error.message
|
257
|
-
)
|
263
|
+
raise ::Kitchen::ActionFailed, error.message
|
258
264
|
end
|
259
265
|
|
260
266
|
# Retrieves the Terraform state outputs for a Kitchen instance by selecting the test workspace and fetching the
|
261
267
|
# outputs.
|
262
268
|
#
|
263
|
-
# @raise [::Kitchen::
|
269
|
+
# @raise [::Kitchen::ActionFailed] if the result of the action is a failure.
|
264
270
|
# @return [void]
|
265
271
|
# @yieldparam output [::Hash] the state output.
|
266
272
|
def retrieve_outputs(&block)
|
@@ -270,29 +276,28 @@ class ::Kitchen::Driver::Terraform < ::Kitchen::Driver::Base
|
|
270
276
|
cwd: config_root_module_directory, live_stream: logger, timeout: config_command_timeout,
|
271
277
|
}, &block
|
272
278
|
)
|
279
|
+
rescue ::Kitchen::Terraform::Error => error
|
280
|
+
raise ::Kitchen::ActionFailed, error.message
|
273
281
|
end
|
274
282
|
|
275
|
-
# Verifies that the Terraform
|
283
|
+
# Verifies that the Terraform CLI is on the PATH.
|
276
284
|
#
|
277
|
-
# @raise [::Kitchen::UserError] if the
|
285
|
+
# @raise [::Kitchen::UserError] if the Terraform CLI is not available.
|
278
286
|
# @return [void]
|
279
287
|
def verify_dependencies
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
options: {
|
284
|
-
cwd: ::Dir.pwd,
|
285
|
-
live_stream: logger,
|
286
|
-
timeout: 600,
|
287
|
-
},
|
288
|
-
),
|
289
|
-
)
|
290
|
-
rescue ::Kitchen::Terraform::Error => error
|
291
|
-
raise ::Kitchen::UserError, error.message
|
288
|
+
if !::TTY::Which.exist? "terraform"
|
289
|
+
raise ::Kitchen::UserError, "The Terraform CLI was not found on the PATH"
|
290
|
+
end
|
292
291
|
end
|
293
292
|
|
294
293
|
private
|
295
294
|
|
295
|
+
def apply_run
|
296
|
+
apply_run_get
|
297
|
+
apply_run_validate
|
298
|
+
apply_run_apply
|
299
|
+
end
|
300
|
+
|
296
301
|
# @api private
|
297
302
|
def apply_run_apply
|
298
303
|
::Kitchen::Terraform::ShellOut.run(
|
@@ -368,7 +373,7 @@ class ::Kitchen::Driver::Terraform < ::Kitchen::Driver::Base
|
|
368
373
|
"#{backend_configurations_flags} " \
|
369
374
|
"-get=true " \
|
370
375
|
"-get-plugins=true " \
|
371
|
-
"#{plugin_directory_flag}
|
376
|
+
"#{plugin_directory_flag}" \
|
372
377
|
"-verify-plugins=true",
|
373
378
|
options: {
|
374
379
|
cwd: config_root_module_directory,
|
@@ -412,7 +417,7 @@ class ::Kitchen::Driver::Terraform < ::Kitchen::Driver::Base
|
|
412
417
|
"#{backend_configurations_flags} " \
|
413
418
|
"-get=true " \
|
414
419
|
"-get-plugins=true " \
|
415
|
-
"#{plugin_directory_flag}
|
420
|
+
"#{plugin_directory_flag}" \
|
416
421
|
"-verify-plugins=true",
|
417
422
|
options: {
|
418
423
|
cwd: config_root_module_directory,
|
@@ -464,17 +469,12 @@ class ::Kitchen::Driver::Terraform < ::Kitchen::Driver::Base
|
|
464
469
|
# @api private
|
465
470
|
def plugin_directory_flag
|
466
471
|
if config_plugin_directory
|
467
|
-
"-plugin-dir=\"#{::Shellwords.shelljoin ::Shellwords.shellsplit config_plugin_directory}\""
|
472
|
+
"-plugin-dir=\"#{::Shellwords.shelljoin ::Shellwords.shellsplit config_plugin_directory}\" "
|
468
473
|
else
|
469
474
|
""
|
470
475
|
end
|
471
476
|
end
|
472
477
|
|
473
|
-
# @api private
|
474
|
-
def root_module_directory
|
475
|
-
::Shellwords.escape config_root_module_directory
|
476
|
-
end
|
477
|
-
|
478
478
|
# @api private
|
479
479
|
def run_workspace_select_instance
|
480
480
|
::Kitchen::Terraform::ShellOut.run(
|
@@ -510,6 +510,14 @@ class ::Kitchen::Driver::Terraform < ::Kitchen::Driver::Base
|
|
510
510
|
end.join " "
|
511
511
|
end
|
512
512
|
|
513
|
+
def verify_version
|
514
|
+
if config_verify_version
|
515
|
+
::Kitchen::Terraform::VerifyVersion.call
|
516
|
+
else
|
517
|
+
logger.warn "Verification of support for the available version of Terraform is disabled"
|
518
|
+
end
|
519
|
+
end
|
520
|
+
|
513
521
|
def workspace_name
|
514
522
|
@workspace_name ||= "kitchen-terraform-#{::Shellwords.escape instance.name}"
|
515
523
|
end
|
@@ -90,10 +90,5 @@ class ::Kitchen::Provisioner::Terraform < ::Kitchen::Provisioner::Base
|
|
90
90
|
# @raise [::Kitchen::ActionFailed] if the result of the action is a failure.
|
91
91
|
def call(_state)
|
92
92
|
instance.driver.apply
|
93
|
-
rescue ::Kitchen::Terraform::Error => error
|
94
|
-
raise(
|
95
|
-
::Kitchen::ActionFailed,
|
96
|
-
error.message
|
97
|
-
)
|
98
93
|
end
|
99
94
|
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright 2016 New Context Services, Inc.
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require "kitchen"
|
18
|
+
require "kitchen/terraform/error"
|
19
|
+
require "rubygems"
|
20
|
+
|
21
|
+
module Kitchen
|
22
|
+
module Terraform
|
23
|
+
module Command
|
24
|
+
# Version is the class of objects which represent the <tt>terraform version</tt> command.
|
25
|
+
class Version < ::Gem::Version
|
26
|
+
extend ::Kitchen::Logging
|
27
|
+
extend ::Kitchen::ShellOut
|
28
|
+
|
29
|
+
class << self
|
30
|
+
# The command is run by shelling out in an environment which is optimized for automating Terraform.
|
31
|
+
#
|
32
|
+
# @raise [::Kitchen::Terraform::Error] if the result of running the command is a failure.
|
33
|
+
# @return [::Kitchen::Terraform::Command::Version] an instance initialized with the output of the command.
|
34
|
+
# @yieldparam version [::Kitchen::Terraform::Command::Version] an instance initialized with the output of the
|
35
|
+
# command.
|
36
|
+
def run
|
37
|
+
new(
|
38
|
+
run_command(
|
39
|
+
"terraform version",
|
40
|
+
environment: {
|
41
|
+
"LC_ALL" => nil,
|
42
|
+
"TF_IN_AUTOMATION" => "true",
|
43
|
+
"TF_WARN_OUTPUT_ERRORS" => "true",
|
44
|
+
},
|
45
|
+
)
|
46
|
+
).tap do |version|
|
47
|
+
yield version: version
|
48
|
+
end
|
49
|
+
rescue ::Kitchen::ShellOut::ShellCommandFailed, ::Kitchen::Error => error
|
50
|
+
raise ::Kitchen::Terraform::Error, error.message
|
51
|
+
end
|
52
|
+
|
53
|
+
def logger
|
54
|
+
::Kitchen.logger
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def initialize(version)
|
61
|
+
super version.slice(/Terraform v(\d+\.\d+\.\d+)/, 1)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright 2016 New Context Services, Inc.
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require "kitchen"
|
18
|
+
require "kitchen/terraform/config_attribute"
|
19
|
+
require "kitchen/terraform/config_schemas/boolean"
|
20
|
+
|
21
|
+
# This attribute toggles verification of support for the available Terraform version.
|
22
|
+
#
|
23
|
+
# Type:: {http://www.yaml.org/spec/1.2/spec.html#id2803629 Boolean}
|
24
|
+
# Required:: False
|
25
|
+
# Default:: +true+
|
26
|
+
# Example:: <tt>lock: false</tt>
|
27
|
+
module ::Kitchen::Terraform::ConfigAttribute::VerifyVersion
|
28
|
+
::Kitchen::Terraform::ConfigAttribute.new(
|
29
|
+
attribute: :verify_version,
|
30
|
+
default_value: lambda do
|
31
|
+
true
|
32
|
+
end,
|
33
|
+
schema: ::Kitchen::Terraform::ConfigSchemas::Boolean,
|
34
|
+
).apply config_attribute: self
|
35
|
+
end
|
@@ -239,7 +239,7 @@ module Kitchen
|
|
239
239
|
# identity files) for {https://linux.die.net/man/1/ssh Secure Shell (SSH) authentication} with hosts in the
|
240
240
|
# Terraform state.
|
241
241
|
#
|
242
|
-
# The +key_files+ key must be used in combination with
|
242
|
+
# The +key_files+ key must be used in combination with <tt>backend: ssh</tt>.
|
243
243
|
#
|
244
244
|
# <em>Example kitchen.yml</em>
|
245
245
|
# verifier:
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright 2016 New Context Services, Inc.
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require "kitchen/terraform"
|
18
|
+
require "kitchen/terraform/command/version"
|
19
|
+
require "kitchen/terraform/error"
|
20
|
+
require "rubygems"
|
21
|
+
|
22
|
+
# Verifies that the output of the Terraform version command indicates a supported version of Terraform.
|
23
|
+
#
|
24
|
+
# Supported:: Terraform version >= 0.11.4, < 0.12.0.
|
25
|
+
module ::Kitchen::Terraform::VerifyVersion
|
26
|
+
class << self
|
27
|
+
# Runs the function.
|
28
|
+
#
|
29
|
+
# @raise [::Kitchen::Terraform::Error] if the version is not supported or `terraform version` fails.
|
30
|
+
# @return [void]
|
31
|
+
def call
|
32
|
+
::Kitchen::Terraform::Command::Version.run do |version:|
|
33
|
+
if !::Gem::Requirement.new(">= 0.11.4", "< 0.12.0").satisfied_by? version
|
34
|
+
raise ::Kitchen::Terraform::Error, "Terraform v#{version} is not supported; install Terraform ~> v0.11.4"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kitchen-terraform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Lane
|
@@ -26,38 +26,42 @@ bindir: bin
|
|
26
26
|
cert_chain:
|
27
27
|
- |
|
28
28
|
-----BEGIN CERTIFICATE-----
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
29
|
+
MIIGRjCCBC6gAwIBAgIJAN/KOTg/B0PKMA0GCSqGSIb3DQEBCwUAMIG3MQswCQYD
|
30
|
+
VQQGEwJVUzELMAkGA1UECAwCQ0ExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xIzAh
|
31
|
+
BgNVBAoMGk5ldyBDb250ZXh0IFNlcnZpY2VzLCBJbmMuMRowGAYDVQQLDBFLaXRj
|
32
|
+
aGVuLVRlcnJhZm9ybTERMA8GA1UEAwwIUnVieUdlbXMxLzAtBgkqhkiG9w0BCQEW
|
33
|
+
IGtpdGNoZW4tdGVycmFmb3JtQG5ld2NvbnRleHQuY29tMB4XDTE4MTIyOTE4MTQz
|
34
|
+
M1oXDTE5MTIyOTE4MTQzM1owgbcxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEW
|
35
|
+
MBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEjMCEGA1UECgwaTmV3IENvbnRleHQgU2Vy
|
36
|
+
dmljZXMsIEluYy4xGjAYBgNVBAsMEUtpdGNoZW4tVGVycmFmb3JtMREwDwYDVQQD
|
37
|
+
DAhSdWJ5R2VtczEvMC0GCSqGSIb3DQEJARYga2l0Y2hlbi10ZXJyYWZvcm1AbmV3
|
38
|
+
Y29udGV4dC5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCv75V5
|
39
|
+
xAhnLBzFECcI17APFWYd6KAGFIlmgkbca1o+tkpWQF4qPoIooXF34tp8M7LKJLYz
|
40
|
+
B8UCAx1iXl7Tkm/FiayZ6VgD65ZSl1BxcWoEgkU2rjp0IgB4YCYmSOGhIByBsKlX
|
41
|
+
mCHN5P+IdfsEIpSZ7CfFhuz5GpLUZPiQW9PaRkeoN84epr6OpP1WmTDLN9XnrMZW
|
42
|
+
cpgGpWppPsOqh1tu4rWR43l26k5YjFillRQPGe0I/snv0aHq0lBlJG1s1h4CBTQR
|
43
|
+
q22p7S43QV89RjuQDnKoiaAdHBF2xNyhuTKdJ0xSMXUF8VCSZo+o+Wr1nDYtsGEy
|
44
|
+
ZUO5/5Vqf+q9yaXwub9bWSoi+ltHiclSh/BuQVuISvvpKpfV6nKRwtEMrgAbYzaa
|
45
|
+
x/91zjGYxzUHc8wPN9HUhk4MidL5t+TROg/GiOX4ub5X5K4X0veSvfsXz5sHmySt
|
46
|
+
SsDVg3ksq/i9l5ERI04jI15bM8DO3CBfQDdbONPtLYQUov4gd+gMA/lZ1h23b730
|
47
|
+
tokcTnE+VvVYEklgA4rDDMmNT9xaPMorvbWOxBlPuETfhAutwspXD9jhiHUxvEcW
|
48
|
+
zXk1sbAwjpIFJD/RTo70sfSVTCC2TZry8VWmvrYOVplKLPNnbxgw/Fs6SpXdAzkx
|
49
|
+
RIXfZA4fK114ktcnTFj6zHtqk2zujmKrMs1qWQIDAQABo1MwUTAdBgNVHQ4EFgQU
|
50
|
+
wbZDGwjRn9wkb7pJVh61w4LZz2wwHwYDVR0jBBgwFoAUwbZDGwjRn9wkb7pJVh61
|
51
|
+
w4LZz2wwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAINgv/Q0x
|
52
|
+
V+sQQ3k9PD0bn8LHxuhHXqg/74VvOe1lRMAo23yyzhxt266YIYUS/gswpUv4sSPq
|
53
|
+
naQb3F4BOS/MuErS8fVPelPqyjb/31aLAri/Ze7BYLJch7rcan+Fj+gDa4X9C6F4
|
54
|
+
uLxOjFLP48ZyHlihVtQ5/eGXbjKrkRKhZsMfq9PX15doNmXR20cCNTuPu0Q6AnCg
|
55
|
+
4vZwuPDupwJ31OQ4RSkFJ4E7131Q1dG7NkY2rZUM4N4rhcilYHbCNF7WSLLje7Zb
|
56
|
+
KJfo3dCd5FCCHNPIcjjDjtdFuPRZT8HLgJejew2tP3LQW/2b0LaLDpGZf+EaaymI
|
57
|
+
mFgszSQ8a4fC7SsHWOfNBn8O79rfyp8u+v2IYxa+6dDimpGesK+FmOmDVG4S2Qeg
|
58
|
+
NJe02o0QRePOOaIXLmp9CjUN0KRRJHTOWPKgkU1TVxVPvX/4R4B421McjlfLuMgo
|
59
|
+
LTJJaKnieViDrlLGkYE0JGxEHXNvwA7JcBBaKFctUOig9RVJtlqZJqU1iu9lj+Wk
|
60
|
+
Tp0eCqWr0dy8uZBSPlRKsiQJsF32Ol2YZuAZF8UuPsgmxP38palsFeZziMd+tAp6
|
61
|
+
XAjP/LERlXAwM+NCUycJw7BZMn7L2wIdnq6Le1rL6VJS17CZt2heuRtsF+3g0egR
|
62
|
+
x97GmUumeM67PGeVodlIV65tdXrdlqKlHcE=
|
59
63
|
-----END CERTIFICATE-----
|
60
|
-
date: 2018-12-
|
64
|
+
date: 2018-12-30 00:00:00.000000000 Z
|
61
65
|
dependencies:
|
62
66
|
- !ruby/object:Gem::Dependency
|
63
67
|
name: guard
|
@@ -353,6 +357,20 @@ dependencies:
|
|
353
357
|
- - "~>"
|
354
358
|
- !ruby/object:Gem::Version
|
355
359
|
version: '1.23'
|
360
|
+
- !ruby/object:Gem::Dependency
|
361
|
+
name: tty-which
|
362
|
+
requirement: !ruby/object:Gem::Requirement
|
363
|
+
requirements:
|
364
|
+
- - "~>"
|
365
|
+
- !ruby/object:Gem::Version
|
366
|
+
version: 0.4.0
|
367
|
+
type: :runtime
|
368
|
+
prerelease: false
|
369
|
+
version_requirements: !ruby/object:Gem::Requirement
|
370
|
+
requirements:
|
371
|
+
- - "~>"
|
372
|
+
- !ruby/object:Gem::Version
|
373
|
+
version: 0.4.0
|
356
374
|
description: kitchen-terraform is a set of Test Kitchen plugins for testing Terraform
|
357
375
|
configuration
|
358
376
|
email: kitchen-terraform@newcontext.com
|
@@ -366,9 +384,9 @@ files:
|
|
366
384
|
- lib/kitchen/provisioner/terraform.rb
|
367
385
|
- lib/kitchen/terraform.rb
|
368
386
|
- lib/kitchen/terraform/breaking.rb
|
369
|
-
- lib/kitchen/terraform/client_version_verifier.rb
|
370
387
|
- lib/kitchen/terraform/command.rb
|
371
388
|
- lib/kitchen/terraform/command/output.rb
|
389
|
+
- lib/kitchen/terraform/command/version.rb
|
372
390
|
- lib/kitchen/terraform/config_attribute.rb
|
373
391
|
- lib/kitchen/terraform/config_attribute/backend_configurations.rb
|
374
392
|
- lib/kitchen/terraform/config_attribute/color.rb
|
@@ -381,6 +399,7 @@ files:
|
|
381
399
|
- lib/kitchen/terraform/config_attribute/systems.rb
|
382
400
|
- lib/kitchen/terraform/config_attribute/variable_files.rb
|
383
401
|
- lib/kitchen/terraform/config_attribute/variables.rb
|
402
|
+
- lib/kitchen/terraform/config_attribute/verify_version.rb
|
384
403
|
- lib/kitchen/terraform/config_attribute_cacher.rb
|
385
404
|
- lib/kitchen/terraform/config_attribute_definer.rb
|
386
405
|
- lib/kitchen/terraform/config_attribute_type.rb
|
@@ -407,6 +426,7 @@ files:
|
|
407
426
|
- lib/kitchen/terraform/system.rb
|
408
427
|
- lib/kitchen/terraform/system_attrs_resolver.rb
|
409
428
|
- lib/kitchen/terraform/system_hosts_resolver.rb
|
429
|
+
- lib/kitchen/terraform/verify_version.rb
|
410
430
|
- lib/kitchen/terraform/version.rb
|
411
431
|
- lib/kitchen/verifier/terraform.rb
|
412
432
|
homepage: https://newcontext-oss.github.io/kitchen-terraform/
|
@@ -424,7 +444,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
424
444
|
version: '2.3'
|
425
445
|
- - "<"
|
426
446
|
- !ruby/object:Gem::Version
|
427
|
-
version: '2.
|
447
|
+
version: '2.7'
|
428
448
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
429
449
|
requirements:
|
430
450
|
- - ">="
|
@@ -432,8 +452,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
432
452
|
version: '0'
|
433
453
|
requirements:
|
434
454
|
- Terraform >= 0.11.4, < 0.12.0
|
435
|
-
|
436
|
-
rubygems_version: 2.7.8
|
455
|
+
rubygems_version: 3.0.1
|
437
456
|
signing_key:
|
438
457
|
specification_version: 4
|
439
458
|
summary: Test Kitchen plugins for testing Terraform configuration
|
metadata.gz.sig
CHANGED
Binary file
|
@@ -1,64 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Copyright 2016 New Context Services, Inc.
|
4
|
-
#
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
# you may not use this file except in compliance with the License.
|
7
|
-
# You may obtain a copy of the License at
|
8
|
-
#
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
#
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
# See the License for the specific language governing permissions and
|
15
|
-
# limitations under the License.
|
16
|
-
|
17
|
-
require "kitchen/terraform"
|
18
|
-
require "kitchen/terraform/error"
|
19
|
-
require "rubygems"
|
20
|
-
|
21
|
-
# Verifies that the output of the Terraform version command indicates a supported version of Terraform.
|
22
|
-
#
|
23
|
-
# Supported:: Terraform version >= 0.11.4, < 0.12.0.
|
24
|
-
class ::Kitchen::Terraform::ClientVersionVerifier
|
25
|
-
# Verifies output from the Terraform version command against the support version.
|
26
|
-
#
|
27
|
-
# @param version_output [::String] the Terraform Client version subcommand output.
|
28
|
-
# @raise [::Kitchen::Terraform::Error] if the version is not supported.
|
29
|
-
# @return [::String] a confirmation that the version is supported.
|
30
|
-
def verify(version_output:)
|
31
|
-
::Gem::Version
|
32
|
-
.new(
|
33
|
-
version_output
|
34
|
-
.slice(
|
35
|
-
/v(\d+\.\d+\.\d+)/,
|
36
|
-
1
|
37
|
-
)
|
38
|
-
)
|
39
|
-
.tap do |version|
|
40
|
-
requirement
|
41
|
-
.satisfied_by? version or
|
42
|
-
raise(
|
43
|
-
::Kitchen::Terraform::Error,
|
44
|
-
"Terraform v#{version} is not supported; install Terraform ~> v0.11.4"
|
45
|
-
)
|
46
|
-
|
47
|
-
return "Terraform v#{version} is supported"
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
private
|
52
|
-
|
53
|
-
attr_reader :requirement
|
54
|
-
|
55
|
-
# @api private
|
56
|
-
def initialize
|
57
|
-
@requirement =
|
58
|
-
::Gem::Requirement
|
59
|
-
.new(
|
60
|
-
">= 0.11.4",
|
61
|
-
"< 0.12.0"
|
62
|
-
)
|
63
|
-
end
|
64
|
-
end
|