class Kitchen::Terraform::VerifyVersion

VerifyVersion is the class of objects which verify the version of the Terraform client against a version requirement.

Attributes

finish_message[RW]
logger[RW]
rescue_strategy[RW]
start_message[RW]
version_verifier[RW]

Public Class Methods

new(config:, logger:, version_requirement:) click to toggle source

initialize prepares a new instance of the class.

@param config [Hash] the configuration of the driver. @param logger [Kitchen::Logger] a logger for logging messages. @param version_requirement [Gem::VersionRequirement] the required version of the Terraform client. @option config [Boolean] :verify_version a toggle of strict or permissive verification of support for the

version of the Terraform client.

@return [Kitchen::Terraform::VerifyVersion]

# File lib/kitchen/terraform/verify_version.rb, line 51
def initialize(config:, logger:, version_requirement:)
  self.finish_message = "Finished verifying the Terraform client version."
  self.logger = logger
  self.rescue_strategy = ::Kitchen::Terraform::VerifyVersionRescueStrategyFactory.new(
    verify_version: config.fetch(:verify_version),
  ).build logger: logger
  self.start_message = "Verifying the Terraform client version is in the supported interval of " \
                       "#{version_requirement}..."
  self.version_verifier = ::Kitchen::Terraform::VersionVerifier.new version_requirement: version_requirement
end

Public Instance Methods

call(version:) click to toggle source

call invokes the verification.

@param version [Gem::Version] the Terraform client version. @raise [Kitchen::ActionFailed] if the verification fails. @return [self]

# File lib/kitchen/terraform/verify_version.rb, line 33
def call(version:)
  logger.warn start_message
  version_verifier.verify version: version
  logger.warn finish_message
rescue ::Kitchen::Terraform::UnsupportedClientVersionError
  rescue_strategy.call

  self
end