class TerraformEnterprise::CommandLine::Commands::RunsCommand

Constants

ATTR_STR
CMD_STR

Public Instance Methods

apply(id) click to toggle source
# File lib/terraform_enterprise/command_line/commands/runs.rb, line 32
def apply(id)
  params = { id: id, action: :apply }
  params[:comment] = options[:comment] if options[:comment]
  render client.runs.action(params)
end
create() click to toggle source
# File lib/terraform_enterprise/command_line/commands/runs.rb, line 21
def create
  render client.runs.create(options), except: [:permissions]
end
discard(id) click to toggle source
# File lib/terraform_enterprise/command_line/commands/runs.rb, line 40
def discard(id)
  params = { id: id, action: :discard }
  params[:comment] = options[:comment] if options[:comment]
  render client.runs.action(params)
end
get(id) click to toggle source
# File lib/terraform_enterprise/command_line/commands/runs.rb, line 26
def get(id)
  render client.runs.get(id: id), except: [:permissions]
end
list() click to toggle source
# File lib/terraform_enterprise/command_line/commands/runs.rb, line 13
def list
  render client.runs.list(id: options[:workspace_id]), except: [:permissions]
end
logs(id) click to toggle source
# File lib/terraform_enterprise/command_line/commands/runs.rb, line 49
def logs(id)
  following       = options[:follow]
  finished        = false
  exit_requested  = false
  finished_states = %w[errored canceled finished]

  # Listens for "control-c" to exit
  Kernel.trap('INT') { exit_requested = true }

  loop do
    event    = get_event_resource(id, options[:event])
    url      = event.attributes['log-read-url']
    finished = finished_states.include?(event.attributes['status'].to_s)
    logs     = RestClient.get(url).body
    
    # errase screen and go to (0,0)
    print "\033[2J" if following
    print logs

    break if !following || exit_requested || finished
    
    sleep 2
  end 
end

Private Instance Methods

get_event_resource(id, event) click to toggle source
# File lib/terraform_enterprise/command_line/commands/runs.rb, line 76
def get_event_resource(id, event)
  event_type    = event == 'plan' ? 'plans' : 'applies'
  error_message = "#{options[:event].to_s.capitalize} not started yet"
  run_response  = client.runs.get(id: id, include: [event.to_sym])
  render run_response unless run_response.success?
  event_resource = run_response.resource.included.find do |er|
    er.type.to_s == event_type
  end
  error! error_message unless event_resource
  event_resource
end