kitchen-terraform 0.5.1 → 0.6.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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +2 -2
  4. data/README.md +61 -6
  5. data/lib/kitchen/driver/terraform.rb +37 -22
  6. data/lib/kitchen/provisioner/terraform.rb +14 -18
  7. data/lib/kitchen/verifier/terraform.rb +25 -48
  8. data/lib/terraform/apply_command.rb +11 -20
  9. data/lib/terraform/apply_timeout_config.rb +9 -11
  10. data/lib/terraform/cli_config.rb +29 -0
  11. data/lib/terraform/client.rb +57 -52
  12. data/lib/terraform/color_coercer.rb +35 -0
  13. data/lib/terraform/color_config.rb +9 -11
  14. data/lib/terraform/command.rb +16 -30
  15. data/lib/terraform/command_factory.rb +111 -0
  16. data/lib/terraform/command_option.rb +65 -0
  17. data/lib/terraform/command_options.rb +95 -0
  18. data/lib/terraform/configurable.rb +42 -17
  19. data/lib/terraform/{zero_six_output.rb → debug_logger.rb} +10 -7
  20. data/lib/terraform/deprecated_output_parser.rb +41 -0
  21. data/lib/terraform/deprecated_variables_coercer.rb +35 -0
  22. data/lib/terraform/{command_extender.rb → deprecated_version.rb} +10 -7
  23. data/lib/terraform/destructive_plan_command.rb +35 -0
  24. data/lib/terraform/directory_config.rb +10 -5
  25. data/lib/terraform/file_configs.rb +36 -0
  26. data/lib/terraform/get_command.rb +3 -10
  27. data/lib/terraform/group.rb +29 -29
  28. data/lib/terraform/group_attributes.rb +42 -0
  29. data/lib/terraform/group_hostnames.rb +38 -0
  30. data/lib/terraform/groups_coercer.rb +43 -0
  31. data/lib/terraform/groups_config.rb +8 -54
  32. data/lib/terraform/integer_coercer.rb +37 -0
  33. data/lib/terraform/{plan_config.rb → no_output_parser.rb} +8 -7
  34. data/lib/terraform/output_command.rb +3 -39
  35. data/lib/terraform/output_parser.rb +55 -0
  36. data/lib/terraform/parallelism_config.rb +9 -11
  37. data/lib/terraform/pathname_coercer.rb +40 -0
  38. data/lib/terraform/plan_command.rb +7 -41
  39. data/lib/terraform/prepare_input_file.rb +34 -0
  40. data/lib/terraform/{zero_seven_output.rb → prepare_output_file.rb} +11 -9
  41. data/lib/terraform/project_version.rb +19 -0
  42. data/lib/terraform/shell_out.rb +59 -0
  43. data/lib/terraform/show_command.rb +7 -16
  44. data/lib/terraform/simple_coercer.rb +36 -0
  45. data/lib/terraform/{state_config.rb → simple_config.rb} +7 -6
  46. data/lib/terraform/{color_switch.rb → unsupported_version.rb} +6 -8
  47. data/lib/terraform/validate_command.rb +3 -10
  48. data/lib/terraform/variable_files_coercer.rb +40 -0
  49. data/lib/terraform/variable_files_config.rb +9 -10
  50. data/lib/terraform/variables_coercer.rb +49 -0
  51. data/lib/terraform/variables_config.rb +9 -24
  52. data/lib/terraform/version.rb +55 -1
  53. data/lib/terraform/version_command.rb +3 -10
  54. metadata +58 -9
  55. metadata.gz.sig +0 -0
  56. data/lib/terraform/command_executor.rb +0 -41
@@ -14,6 +14,60 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
 
17
+ require 'rubygems/version'
18
+ require 'terraform/deprecated_version'
19
+ require 'terraform/unsupported_version'
20
+
17
21
  module Terraform
18
- VERSION = '0.5.1'
22
+ # Version of Terraform
23
+ class Version
24
+ def self.create(value:)
25
+ new(value: value).tap do |version|
26
+ supported.find(&version.method(:==)) or
27
+ return ::Terraform::UnsupportedVersion.new version
28
+ deprecated.find(&version.method(:==)) and
29
+ return ::Terraform::DeprecatedVersion.new version
30
+ end
31
+ end
32
+
33
+ def self.deprecated
34
+ [new(value: '0.6')]
35
+ end
36
+
37
+ def self.latest
38
+ new value: '0.8'
39
+ end
40
+
41
+ def self.supported
42
+ [latest, new(value: '0.7'), *deprecated]
43
+ end
44
+
45
+ def ==(other)
46
+ major_minor == other.major_minor
47
+ end
48
+
49
+ alias eql? ==
50
+
51
+ def if_deprecated; end
52
+
53
+ def if_json_not_supported; end
54
+
55
+ def if_not_supported; end
56
+
57
+ def major_minor
58
+ value.approximate_recommendation
59
+ end
60
+
61
+ def to_s
62
+ "Terraform v#{value}"
63
+ end
64
+
65
+ private
66
+
67
+ attr_accessor :value, :version
68
+
69
+ def initialize(value:)
70
+ self.value = ::Gem::Version.create value.slice(/v?(\d+(\.\d+)*)/, 1)
71
+ end
72
+ end
19
73
  end
@@ -14,17 +14,10 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
 
17
- require_relative 'command'
17
+ require 'terraform/command'
18
18
 
19
19
  module Terraform
20
- # Command to obtain the version
21
- class VersionCommand < Command
22
- def name
23
- 'version'
24
- end
25
-
26
- def options
27
- ''
28
- end
20
+ # A command to obtain the version
21
+ class VersionCommand < ::Terraform::Command
29
22
  end
30
23
  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: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Lane
@@ -10,6 +10,7 @@ authors:
10
10
  - Ewa Czechowska
11
11
  - Kevin Dickerson
12
12
  - Kyle Sexton
13
+ - Matt Long
13
14
  - Michael Glenney
14
15
  - Nell Shamrell-Harrington
15
16
  - Nick Willever
@@ -40,7 +41,7 @@ cert_chain:
40
41
  KucGZX3OeACVUSpmCOCQyma6sDHYWQZM/IgWi7tbLtG5b2GslkauPm4S3wadHi6W
41
42
  LOU=
42
43
  -----END CERTIFICATE-----
43
- date: 2017-02-18 00:00:00.000000000 Z
44
+ date: 2017-02-22 00:00:00.000000000 Z
44
45
  dependencies:
45
46
  - !ruby/object:Gem::Dependency
46
47
  name: bundler-audit
@@ -278,6 +279,20 @@ dependencies:
278
279
  - - "~>"
279
280
  - !ruby/object:Gem::Version
280
281
  version: '1.8'
282
+ - !ruby/object:Gem::Dependency
283
+ name: hashie
284
+ requirement: !ruby/object:Gem::Requirement
285
+ requirements:
286
+ - - "~>"
287
+ - !ruby/object:Gem::Version
288
+ version: '3.5'
289
+ type: :runtime
290
+ prerelease: false
291
+ version_requirements: !ruby/object:Gem::Requirement
292
+ requirements:
293
+ - - "~>"
294
+ - !ruby/object:Gem::Version
295
+ version: '3.5'
281
296
  - !ruby/object:Gem::Dependency
282
297
  name: inspec
283
298
  requirement: !ruby/object:Gem::Requirement
@@ -332,6 +347,20 @@ dependencies:
332
347
  - - ">="
333
348
  - !ruby/object:Gem::Version
334
349
  version: 2.2.6
350
+ - !ruby/object:Gem::Dependency
351
+ name: ptools
352
+ requirement: !ruby/object:Gem::Requirement
353
+ requirements:
354
+ - - "~>"
355
+ - !ruby/object:Gem::Version
356
+ version: '1.3'
357
+ type: :runtime
358
+ prerelease: false
359
+ version_requirements: !ruby/object:Gem::Requirement
360
+ requirements:
361
+ - - "~>"
362
+ - !ruby/object:Gem::Version
363
+ version: '1.3'
335
364
  - !ruby/object:Gem::Dependency
336
365
  name: test-kitchen
337
366
  requirement: !ruby/object:Gem::Requirement
@@ -365,30 +394,50 @@ files:
365
394
  - lib/kitchen/verifier/terraform.rb
366
395
  - lib/terraform/apply_command.rb
367
396
  - lib/terraform/apply_timeout_config.rb
397
+ - lib/terraform/cli_config.rb
368
398
  - lib/terraform/client.rb
399
+ - lib/terraform/color_coercer.rb
369
400
  - lib/terraform/color_config.rb
370
- - lib/terraform/color_switch.rb
371
401
  - lib/terraform/command.rb
372
- - lib/terraform/command_executor.rb
373
- - lib/terraform/command_extender.rb
402
+ - lib/terraform/command_factory.rb
403
+ - lib/terraform/command_option.rb
404
+ - lib/terraform/command_options.rb
374
405
  - lib/terraform/configurable.rb
406
+ - lib/terraform/debug_logger.rb
407
+ - lib/terraform/deprecated_output_parser.rb
408
+ - lib/terraform/deprecated_variables_coercer.rb
409
+ - lib/terraform/deprecated_version.rb
410
+ - lib/terraform/destructive_plan_command.rb
375
411
  - lib/terraform/directory_config.rb
412
+ - lib/terraform/file_configs.rb
376
413
  - lib/terraform/get_command.rb
377
414
  - lib/terraform/group.rb
415
+ - lib/terraform/group_attributes.rb
416
+ - lib/terraform/group_hostnames.rb
417
+ - lib/terraform/groups_coercer.rb
378
418
  - lib/terraform/groups_config.rb
419
+ - lib/terraform/integer_coercer.rb
420
+ - lib/terraform/no_output_parser.rb
379
421
  - lib/terraform/output_command.rb
422
+ - lib/terraform/output_parser.rb
380
423
  - lib/terraform/parallelism_config.rb
424
+ - lib/terraform/pathname_coercer.rb
381
425
  - lib/terraform/plan_command.rb
382
- - lib/terraform/plan_config.rb
426
+ - lib/terraform/prepare_input_file.rb
427
+ - lib/terraform/prepare_output_file.rb
428
+ - lib/terraform/project_version.rb
429
+ - lib/terraform/shell_out.rb
383
430
  - lib/terraform/show_command.rb
384
- - lib/terraform/state_config.rb
431
+ - lib/terraform/simple_coercer.rb
432
+ - lib/terraform/simple_config.rb
433
+ - lib/terraform/unsupported_version.rb
385
434
  - lib/terraform/validate_command.rb
435
+ - lib/terraform/variable_files_coercer.rb
386
436
  - lib/terraform/variable_files_config.rb
437
+ - lib/terraform/variables_coercer.rb
387
438
  - lib/terraform/variables_config.rb
388
439
  - lib/terraform/version.rb
389
440
  - lib/terraform/version_command.rb
390
- - lib/terraform/zero_seven_output.rb
391
- - lib/terraform/zero_six_output.rb
392
441
  homepage: https://github.com/newcontext-oss/kitchen-terraform
393
442
  licenses:
394
443
  - Apache-2.0
metadata.gz.sig CHANGED
Binary file
@@ -1,41 +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'
18
- require 'mixlib/shellout'
19
-
20
- module Terraform
21
- # Behaviour for executing commands
22
- module CommandExecutor
23
- def execute(command:, timeout: Mixlib::ShellOut::DEFAULT_READ_TIMEOUT)
24
- command.run logger: logger, timeout: timeout
25
- yield command.output if block_given?
26
- rescue Errno::EACCES, Errno::ENOENT => error
27
- command_error command: command, error: error,
28
- type: Kitchen::InstanceFailure
29
- rescue Mixlib::ShellOut::CommandTimeout,
30
- Mixlib::ShellOut::ShellCommandFailed => error
31
- command_error command: command, error: error,
32
- type: Kitchen::TransientFailure
33
- end
34
-
35
- private
36
-
37
- def command_error(command:, error:, type:)
38
- raise type, %(`#{command}` failed: "#{error}")
39
- end
40
- end
41
- end