class Kitchen::Terraform::Driver::Destroy

A Test Kitchen instance is destroyed 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}

Selecting or Creating the Test Terraform Workspace

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

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

Destroying the Terraform State

{include:Kitchen::Terraform::Command::Destroy}

Selecting the Default Terraform Workspace

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

Deleting the Test Terraform Workspace

{include:Kitchen::Terraform::Command::WorkspaceDelete}

Attributes

client_version[RW]
command_executor[RW]
complete_config[RW]
destroy[RW]
destroy_options[RW]
init[RW]
logger[RW]
options[RW]
verify_version[RW]
version[RW]
workspace_delete_test[RW]
workspace_name[RW]
workspace_new_test[RW]
workspace_select_default[RW]
workspace_select_test[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. @return [Kitchen::Terraform::Driver::Destroy]

# File lib/kitchen/terraform/driver/destroy.rb, line 80
def initialize(config:, logger:, version_requirement:, workspace_name:)
  self.complete_config = config.to_hash.merge upgrade_during_init: false, 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
  define_options
  self.workspace_name = workspace_name
  self.destroy = ::Kitchen::Terraform::Command::Destroy.new config: complete_config
  self.workspace_delete_test = ::Kitchen::Terraform::Command::WorkspaceDelete.new config: complete_config
  self.workspace_new_test = ::Kitchen::Terraform::Command::WorkspaceNew.new config: complete_config
  self.workspace_select_test = ::Kitchen::Terraform::Command::WorkspaceSelect.new config: complete_config
  self.workspace_select_default = ::Kitchen::Terraform::Command::WorkspaceSelect.new(
    config: complete_config.merge(workspace_name: "default"),
  )
  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/destroy.rb, line 65
def call
  read_client_version
  verify_version.call version: client_version
  execute_workflow

  self
end