Class: ProxyAPI::Openbolt

Inherits:
Resource
  • Object
show all
Defined in:
lib/proxy_api/openbolt.rb

Instance Method Summary collapse

Constructor Details

#initialize(args) ⇒ Openbolt

Returns a new instance of Openbolt.



7
8
9
10
# File 'lib/proxy_api/openbolt.rb', line 7

def initialize(args)
  @url = args[:url]
  super
end

Instance Method Details

#delete_job_artifacts(job_id:) ⇒ Object



50
51
52
# File 'lib/proxy_api/openbolt.rb', line 50

def delete_job_artifacts(job_id:)
  parse_response(delete("/openbolt/job/#{job_id}/artifacts"), 'delete_job_artifacts')
end

#fetch_tasksObject



12
13
14
# File 'lib/proxy_api/openbolt.rb', line 12

def fetch_tasks
  @tasks = parse_response(get('/openbolt/tasks'), 'fetch_tasks')
end

#job_result(job_id:) ⇒ Object



46
47
48
# File 'lib/proxy_api/openbolt.rb', line 46

def job_result(job_id:)
  parse_response(get("/openbolt/job/#{job_id}/result"), 'job_result')
end

#job_status(job_id:) ⇒ Object



42
43
44
# File 'lib/proxy_api/openbolt.rb', line 42

def job_status(job_id:)
  parse_response(get("/openbolt/job/#{job_id}/status"), 'job_status')
end

#launch_task(name:, targets:, parameters: {}, options: {}) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'lib/proxy_api/openbolt.rb', line 32

def launch_task(name:, targets:, parameters: {}, options: {})
  response = post({
    name: name,
    targets: targets,
    parameters: parameters,
    options: options,
  }.to_json, '/openbolt/launch/task')
  parse_response(response, 'launch_task')
end

#openbolt_optionsObject



28
29
30
# File 'lib/proxy_api/openbolt.rb', line 28

def openbolt_options
  @openbolt_options ||= parse_response(get('/openbolt/tasks/options'), 'openbolt_options')
end

#parse_response(response, operation) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/proxy_api/openbolt.rb', line 54

def parse_response(response, operation)
  raise ProxyException.new(@url, nil, "No response from Smart Proxy during #{operation}") unless response

  body = response.body
  raise ProxyException.new(@url, nil, "Empty response body from Smart Proxy during #{operation}") if body.nil?

  JSON.parse(body)
rescue JSON::ParserError => e
  raise ProxyException.new(
    @url, nil,
    "Invalid JSON from Smart Proxy during #{operation}: #{e.message}. " \
    "Response body (first 500 chars): #{body.to_s[0..500]}"
  )
end

#reload_tasksObject



20
21
22
# File 'lib/proxy_api/openbolt.rb', line 20

def reload_tasks
  @tasks = parse_response(get('/openbolt/tasks/reload'), 'reload_tasks')
end

#task_namesObject



24
25
26
# File 'lib/proxy_api/openbolt.rb', line 24

def task_names
  tasks.keys
end

#tasksObject



16
17
18
# File 'lib/proxy_api/openbolt.rb', line 16

def tasks
  @tasks ||= fetch_tasks
end