Class: Legion::CLI::CostData::Client
- Inherits:
-
Object
- Object
- Legion::CLI::CostData::Client
- Defined in:
- lib/legion/cli/cost/data_client.rb
Instance Method Summary collapse
-
#initialize(base_url: 'http://localhost:4567') ⇒ Client
constructor
A new instance of Client.
- #summary(period: 'month') ⇒ Object
- #top_consumers(limit: 10) ⇒ Object
- #worker_cost(worker_id) ⇒ Object
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 |