class Kitchen::Terraform::Driver::Create

A Test Kitchen instance is created through the following steps.

Initializing the Terraform Working Directory
Terraform >= 0.15.0

{include:Kitchen::Terraform::Command::Init::PostZeroFifteenZero}

Terraform < 0.15.0

{include:Kitchen::Terraform::Command::Init::PreZeroFifteenZero}

Creating or Selecting the Test Terraform Workspace

{include:Kitchen::Terraform::Command::WorkspaceNew}

{include:Kitchen::Terraform::Command::WorkspaceSelect}

Attributes

client_version[RW]
command_executor[RW]
complete_config[RW]
logger[RW]
options[RW]
verify_version[RW]
version[RW]
workspace_name[RW]
workspace_new[RW]
workspace_select[RW]

Public Class Methods

new(config:, logger:, version_requirement:, workspace_name:) 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. @param workspace_name [String] the name of the Terraform workspace to select or to create. @option config [String] :client the pathname of the Terraform client. @return [Kitchen::Terraform::Driver::Create]

# File lib/kitchen/terraform/driver/create.rb, line 68
def initialize(config:, logger:, version_requirement:, workspace_name:)
  self.complete_config = config.to_hash.merge upgrade_during_init: true, workspace_name: workspace_name
  self.client_version = ::Gem::Version.new "0.0.0"
  self.command_executor = ::Kitchen::Terraform::CommandExecutor.new(
    client: complete_config.fetch(:client),
    logger: logger,
  )
  self.logger = logger
  self.options = {
    cwd: complete_config.fetch(:root_module_directory),
    timeout: complete_config.fetch(:command_timeout),
  }
  self.workspace_name = workspace_name
  self.workspace_new = ::Kitchen::Terraform::Command::WorkspaceNew.new config: complete_config
  self.workspace_select = ::Kitchen::Terraform::Command::WorkspaceSelect.new config: complete_config
  self.verify_version = ::Kitchen::Terraform::VerifyVersion.new(
    config: complete_config,
    logger: logger,
    version_requirement: version_requirement,
  )
  self.version = ::Kitchen::Terraform::Command::Version.new
end

Public Instance Methods

call() click to toggle source

call executes the action.

@raise [Kitchen::TransientFailure] if a command fails. @return [self]

# File lib/kitchen/terraform/driver/create.rb, line 51
def call
  read_client_version
  verify_version.call version: client_version
  initialize_directory
  create_or_select_workspace

  self
end