Class: Legion::CLI::CostData::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/legion/cli/cost/data_client.rb

Instance Method Summary collapse

Constructor Details

#initialize(base_url: 'http://localhost:4567') ⇒ Client

Returns a new instance of Client.



9
10
11
# File 'lib/legion/cli/cost/data_client.rb', line 9

def initialize(base_url: 'http://localhost:4567')
  @base_url = base_url
end

Instance Method Details

#summary(period: 'month') ⇒ Object



13
14
15
# File 'lib/legion/cli/cost/data_client.rb', line 13

def summary(period: 'month')
  fetch("/api/costs/summary?period=#{period}") || default_summary
end

#top_consumers(limit: 10) ⇒ Object



21
22
23
24
25
26
27
28
29
30
# File 'lib/legion/cli/cost/data_client.rb', line 21

def top_consumers(limit: 10)
  workers = fetch('/api/workers') || []
  workers = workers[:data] if workers.is_a?(Hash) && workers.key?(:data)
  results = Array(workers).map do |w|
    id = w[:worker_id] || w[:id]
    cost = worker_cost(id)
    { worker_id: id, cost: cost }
  end
  results.sort_by { |w| -(w.dig(:cost, :total_cost_usd) || 0) }.first(limit)
end

#worker_cost(worker_id) ⇒ Object



17
18
19
# File 'lib/legion/cli/cost/data_client.rb', line 17

def worker_cost(worker_id)
  fetch("/api/workers/#{worker_id}/value") || {}
end