class Terraspace::Terraform::Tfc::Workspace

Public Instance Methods

create() click to toggle source
# File lib/terraspace/terraform/tfc/workspace.rb, line 27
def create
  build
  return unless api
  api.workspace.create
end
destroy() click to toggle source
# File lib/terraspace/terraform/tfc/workspace.rb, line 33
def destroy
  build
  return unless api
  workspace = api.workspace(exit_on_fail: false)
  unless workspace
    logger.info "Workspace #{workspace_name} not found for #{@mod.type}: #{@mod.name}"
    exit 0
  end
  sure?
  logger.info "Destroying workspace #{workspace_name}"
  api.workspace.destroy
end
init() click to toggle source
# File lib/terraspace/terraform/tfc/workspace.rb, line 23
def init
  Terraspace::CLI::Init.new(@options).run
end
list() click to toggle source

List will not have @mod set.

# File lib/terraspace/terraform/tfc/workspace.rb, line 9
def list
  @mod = Terraspace::CLI::Build::Placeholder.new(@options).build
  unless remote && remote['organization']
    logger.info "ERROR: There was no organization found. Are you sure you configured backend.tf with it?".color(:red)
    exit 1
  end

  org = remote['organization']
  payload = http.get("/organizations/#{org}/workspaces") # list using api client directly
  names = payload['data'].map { |i| i['attributes']['name'] }.sort
  logger.info "Workspaces for #{org}:"
  logger.info names.join("\n")
end
sure?() click to toggle source
# File lib/terraspace/terraform/tfc/workspace.rb, line 46
    def sure?
      message = <<~EOL.chop + " " # chop to remove newline
        You are about to delete the workspace: #{workspace_name}
        All variables, settings, run history, and state history will be removed.
        This cannot be undone.

        This will NOT remove any infrastructure managed by this workspace.
        If needed, destroy the infrastructure prior to deleting the workspace with:

            terraspace down #{@mod.name}

        This will delete the workspace: #{workspace_name}.
        Are you sure? (y/N)
      EOL

      if @options[:yes]
        sure = 'y'
      else
        print message
        sure = $stdin.gets
      end

      unless sure =~ /^y/
        puts "Whew! Exiting."
        exit 0
      end
    end