kitchen-terraform 1.0.2 → 2.0.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +3 -3
- data/lib/kitchen/driver/terraform.rb +363 -221
- data/lib/kitchen/provisioner/terraform.rb +2 -3
- data/lib/kitchen/terraform.rb +3 -1
- data/lib/kitchen/terraform/clear_directory.rb +38 -0
- data/lib/kitchen/terraform/client/command.rb +168 -0
- data/lib/kitchen/terraform/client/options.rb +275 -0
- data/lib/kitchen/terraform/client_version_verifier.rb +57 -0
- data/lib/{terraform/debug_logger.rb → kitchen/terraform/config_attribute.rb} +7 -13
- data/lib/kitchen/terraform/config_attribute/backend_configurations.rb +53 -0
- data/lib/kitchen/terraform/config_attribute/color.rb +56 -0
- data/lib/kitchen/terraform/config_attribute/command_timeout.rb +52 -0
- data/lib/kitchen/terraform/config_attribute/directory.rb +54 -0
- data/lib/kitchen/terraform/config_attribute/groups.rb +96 -0
- data/lib/kitchen/terraform/config_attribute/lock_timeout.rb +52 -0
- data/lib/kitchen/terraform/config_attribute/parallelism.rb +53 -0
- data/lib/kitchen/terraform/config_attribute/plugin_directory.rb +55 -0
- data/lib/kitchen/terraform/config_attribute/state.rb +55 -0
- data/lib/kitchen/terraform/config_attribute/variable_files.rb +51 -0
- data/lib/kitchen/terraform/config_attribute/variables.rb +53 -0
- data/lib/kitchen/terraform/config_attribute/verify_plugins.rb +52 -0
- data/lib/kitchen/terraform/config_attribute_cacher.rb +44 -0
- data/lib/kitchen/terraform/config_attribute_definer.rb +66 -0
- data/lib/kitchen/terraform/config_predicates.rb +21 -0
- data/lib/kitchen/terraform/config_predicates/hash_of_symbols_and_strings.rb +72 -0
- data/lib/{terraform.rb → kitchen/terraform/config_schemas.rb} +4 -2
- data/lib/kitchen/terraform/config_schemas/array_of_hashes_of_symbols_and_strings.rb +47 -0
- data/lib/kitchen/terraform/config_schemas/array_of_strings.rb +31 -0
- data/lib/kitchen/terraform/config_schemas/boolean.rb +27 -0
- data/lib/kitchen/terraform/config_schemas/hash_of_symbols_and_strings.rb +32 -0
- data/lib/kitchen/terraform/config_schemas/integer.rb +27 -0
- data/lib/kitchen/terraform/config_schemas/optional_string.rb +31 -0
- data/lib/kitchen/terraform/config_schemas/string.rb +26 -0
- data/lib/kitchen/terraform/configurable.rb +75 -0
- data/lib/kitchen/terraform/file_path_config_attribute_definer.rb +48 -0
- data/lib/{terraform/project_version.rb → kitchen/terraform/version.rb} +3 -3
- data/lib/kitchen/verifier/terraform.rb +40 -129
- data/lib/kitchen/verifier/terraform/configure_inspec_runner_attributes.rb +7 -4
- data/lib/kitchen/verifier/terraform/enumerate_groups_and_hostnames.rb +2 -2
- metadata +69 -43
- metadata.gz.sig +0 -0
- data/lib/kitchen/driver/terraform/verify_client_version.rb +0 -44
- data/lib/kitchen/driver/terraform/workflow.rb +0 -90
- data/lib/kitchen/terraform/client/apply.rb +0 -38
- data/lib/kitchen/terraform/client/execute_command.rb +0 -56
- data/lib/kitchen/terraform/client/get.rb +0 -35
- data/lib/kitchen/terraform/client/output.rb +0 -50
- data/lib/kitchen/terraform/client/plan.rb +0 -42
- data/lib/kitchen/terraform/client/process_options.rb +0 -87
- data/lib/kitchen/terraform/client/validate.rb +0 -35
- data/lib/kitchen/terraform/client/version.rb +0 -48
- data/lib/kitchen/terraform/define_config_attribute.rb +0 -39
- data/lib/kitchen/terraform/define_integer_config_attribute.rb +0 -43
- data/lib/kitchen/terraform/define_string_config_attribute.rb +0 -43
- data/lib/terraform/configurable.rb +0 -42
@@ -1,39 +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 "dry-validation"
|
18
|
-
require "kitchen"
|
19
|
-
require "kitchen/terraform"
|
20
|
-
|
21
|
-
# Defines a configuration attribute for a plugin class.
|
22
|
-
#
|
23
|
-
# @see http://dry-rb.org/gems/dry-validation/ DRY Validation
|
24
|
-
module ::Kitchen::Terraform::DefineConfigAttribute
|
25
|
-
# Invokes the function.
|
26
|
-
#
|
27
|
-
# @param attribute [::Symbol] the name of the attribute.
|
28
|
-
# @param initialize_default_value [::Proc] a proc to lazily provide a default value.
|
29
|
-
# @param plugin_class [::Class] the plugin class on which the attribute will be defined.
|
30
|
-
# @param schema [::Proc] a proc to define the validation schema of the attribute.
|
31
|
-
def self.call(attribute:, initialize_default_value:, plugin_class:, schema:)
|
32
|
-
plugin_class.required_config attribute do |_attribute, value, plugin|
|
33
|
-
::Dry::Validation.Schema(&schema).call(value: value).messages.tap do |messages|
|
34
|
-
raise ::Kitchen::UserError, "#{plugin.class} configuration: #{attribute} #{messages}" if not messages.empty?
|
35
|
-
end
|
36
|
-
end
|
37
|
-
plugin_class.default_config attribute, &initialize_default_value
|
38
|
-
end
|
39
|
-
end
|
@@ -1,43 +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 "dry-validation"
|
18
|
-
require "kitchen"
|
19
|
-
require "kitchen/terraform"
|
20
|
-
require "kitchen/terraform/define_config_attribute"
|
21
|
-
|
22
|
-
# Defines an integer configuration attribute for a plugin class.
|
23
|
-
#
|
24
|
-
# @see http://dry-rb.org/gems/dry-validation/ DRY Validation
|
25
|
-
module ::Kitchen::Terraform::DefineIntegerConfigAttribute
|
26
|
-
# Invokes the function.
|
27
|
-
#
|
28
|
-
# @param attribute [::Symbol] the name of the attribute.
|
29
|
-
# @param plugin_class [::Class] the plugin class on which the attribute will be defined.
|
30
|
-
# @yieldparam plugin [::Kitchen::Driver::Terraform, ::Kitchen::Provisioner::Terraform, ::Kitchen::Verifier::Terraform]
|
31
|
-
# an instance of the plugin class.
|
32
|
-
# @yieldreturn [::Object] the default value of the attribute.
|
33
|
-
def self.call(attribute:, plugin_class:, &initialize_default_value)
|
34
|
-
::Kitchen::Terraform::DefineConfigAttribute.call(
|
35
|
-
attribute: attribute,
|
36
|
-
initialize_default_value: initialize_default_value,
|
37
|
-
plugin_class: plugin_class,
|
38
|
-
schema: lambda do
|
39
|
-
required(:value).filled :int?
|
40
|
-
end
|
41
|
-
)
|
42
|
-
end
|
43
|
-
end
|
@@ -1,43 +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 "dry-validation"
|
18
|
-
require "kitchen"
|
19
|
-
require "kitchen/terraform"
|
20
|
-
require "kitchen/terraform/define_config_attribute"
|
21
|
-
|
22
|
-
# Defines a string configuration attribute for a plugin class.
|
23
|
-
#
|
24
|
-
# @see http://dry-rb.org/gems/dry-validation/ DRY Validation
|
25
|
-
module ::Kitchen::Terraform::DefineStringConfigAttribute
|
26
|
-
# Invokes the function.
|
27
|
-
#
|
28
|
-
# @param attribute [::Symbol] the name of the attribute.
|
29
|
-
# @param plugin_class [::Class] the plugin class on which the attribute will be defined.
|
30
|
-
# @yieldparam plugin [::Kitchen::Driver::Terraform, ::Kitchen::Provisioner::Terraform, ::Kitchen::Verifier::Terraform]
|
31
|
-
# an instance of the plugin class.
|
32
|
-
# @yieldreturn [::Object] the default value of the attribute.
|
33
|
-
def self.call(attribute:, plugin_class:, &initialize_default_value)
|
34
|
-
::Kitchen::Terraform::DefineConfigAttribute.call(
|
35
|
-
attribute: attribute,
|
36
|
-
initialize_default_value: initialize_default_value,
|
37
|
-
plugin_class: plugin_class,
|
38
|
-
schema: lambda do
|
39
|
-
required(:value).filled :str?
|
40
|
-
end
|
41
|
-
)
|
42
|
-
end
|
43
|
-
end
|
@@ -1,42 +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 "forwardable"
|
18
|
-
require "kitchen"
|
19
|
-
require "terraform"
|
20
|
-
require "terraform/debug_logger"
|
21
|
-
require "terraform/project_version"
|
22
|
-
|
23
|
-
# Miscellaneous behaviour for objects that extend ::Kitchen::Configurable.
|
24
|
-
module ::Terraform::Configurable
|
25
|
-
extend ::Forwardable
|
26
|
-
|
27
|
-
def_delegator :config, :[]=
|
28
|
-
|
29
|
-
def_delegators :instance, :driver, :provisioner, :transport
|
30
|
-
|
31
|
-
def self.included(configurable_class)
|
32
|
-
configurable_class.plugin_version ::Terraform::PROJECT_VERSION
|
33
|
-
end
|
34
|
-
|
35
|
-
def debug_logger
|
36
|
-
@debug_logger ||= ::Terraform::DebugLogger.new logger: logger
|
37
|
-
end
|
38
|
-
|
39
|
-
def instance_pathname(filename:)
|
40
|
-
::File.join config.fetch(:kitchen_root), ".kitchen", "kitchen-terraform", instance.name, filename
|
41
|
-
end
|
42
|
-
end
|