Class: Inferno::CLI::Session::CancelRun

Inherits:
Object
  • Object
show all
Includes:
Connection, Errors
Defined in:
lib/inferno/apps/cli/session/cancel_run.rb

Constant Summary collapse

CANCELLABLE_STATUSES =
%w[queued running waiting].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Errors

#handle_web_api_error, #not_found_error_message, #parse_error_response, #test_run_not_found_message, #text_error_message

Methods included from Connection

#base_url, #check_session_exists, #connection, #delete, #get, #handle_connection_error, #post

Constructor Details

#initialize(session_id, options) ⇒ CancelRun

Returns a new instance of CancelRun.



17
18
19
20
# File 'lib/inferno/apps/cli/session/cancel_run.rb', line 17

def initialize(session_id, options)
  self.session_id = session_id
  self.options = options
end

Instance Attribute Details

#optionsObject

Returns the value of attribute options.



13
14
15
# File 'lib/inferno/apps/cli/session/cancel_run.rb', line 13

def options
  @options
end

#session_idObject

Returns the value of attribute session_id.



13
14
15
# File 'lib/inferno/apps/cli/session/cancel_run.rb', line 13

def session_id
  @session_id
end

Instance Method Details

#cancel_run(current_run) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/inferno/apps/cli/session/cancel_run.rb', line 27

def cancel_run(current_run)
  run_id = current_run['id']

  unless CANCELLABLE_STATUSES.include?(current_run['status'])
    error = { errors: "Run '#{run_id}' cannot be cancelled: status is '#{current_run['status']}'" }
    puts JSON.pretty_generate(error)
    exit(3)
  end

  response = delete("api/test_runs/#{run_id}")
  handle_web_api_error(response, :cancel_run) if response.status != 204
  { run_id: run_id, cancelled: true }
end

#last_test_runObject



41
42
43
# File 'lib/inferno/apps/cli/session/cancel_run.rb', line 41

def last_test_run
  SessionStatus.new(session_id, options).last_test_run
end

#runObject



22
23
24
25
# File 'lib/inferno/apps/cli/session/cancel_run.rb', line 22

def run
  puts JSON.pretty_generate(cancel_run(last_test_run))
  exit(0)
end