Skip to content

Commit 971136d

Browse files
committed
Enhance global /v3/info/usage_summary endpoint
* return the same information as for /v3/organizations/:guid/usage_summary, aggregated over all orgs
1 parent 3b284a1 commit 971136d

File tree

3 files changed

+60
-2
lines changed

3 files changed

+60
-2
lines changed

app/fetchers/global_usage_summary_fetcher.rb

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,39 @@ def summary
2121

2222
summary.memory_in_mb = running_task_memory + started_app_memory
2323

24+
summary.routes = Route.
25+
dataset.
26+
count
27+
28+
summary.service_instances = ServiceInstance.
29+
dataset.
30+
where(is_gateway_service: false).
31+
count
32+
33+
summary.reserved_ports = Route.
34+
join(:domains, id: :domain_id).
35+
where { (Sequel[:domains][:router_group_guid] !~ nil) & (Sequel[:routes][:port] !~ nil) }.
36+
count
37+
38+
summary.domains = Domain.
39+
dataset.
40+
where { Sequel[:owning_organization_id] !~ nil }.
41+
count
42+
43+
summary.per_app_tasks = TaskModel.
44+
dataset.
45+
where(state: [TaskModel::PENDING_STATE, TaskModel::RUNNING_STATE]).
46+
count
47+
48+
summary.service_keys = ServiceKey.
49+
dataset.
50+
count
51+
2452
summary
2553
end
2654

2755
class Summary
28-
attr_accessor :started_instances, :memory_in_mb
56+
attr_accessor :started_instances, :memory_in_mb, :routes, :service_instances, :reserved_ports, :domains, :per_app_tasks, :service_keys
2957
end
3058
end
3159
end

app/presenters/v3/info_usage_summary_presenter.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@ def to_hash
88
{
99
usage_summary: {
1010
started_instances: usage_summary.started_instances,
11-
memory_in_mb: usage_summary.memory_in_mb
11+
memory_in_mb: usage_summary.memory_in_mb,
12+
routes: usage_summary.routes,
13+
service_instances: usage_summary.service_instances,
14+
reserved_ports: usage_summary.reserved_ports,
15+
domains: usage_summary.domains,
16+
per_app_tasks: usage_summary.per_app_tasks,
17+
service_keys: usage_summary.service_keys
1218
},
1319
links: {
1420
self: { href: build_self }
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
require 'spec_helper'
2+
require 'presenters/v3/info_usage_summary_presenter'
3+
require 'fetchers/global_usage_summary_fetcher'
4+
5+
module VCAP::CloudController::Presenters::V3
6+
RSpec.describe InfoUsageSummaryPresenter do
7+
describe '#to_hash' do
8+
let(:result) { InfoUsageSummaryPresenter.new(VCAP::CloudController::GlobalUsageSummaryFetcher.summary).to_hash }
9+
10+
it 'presents the global usage summary as json' do
11+
expect(result[:usage_summary][:started_instances]).to eq(0)
12+
expect(result[:usage_summary][:memory_in_mb]).to eq(0)
13+
expect(result[:usage_summary][:routes]).to eq(0)
14+
expect(result[:usage_summary][:service_instances]).to eq(0)
15+
expect(result[:usage_summary][:reserved_ports]).to eq(0)
16+
expect(result[:usage_summary][:domains]).to eq(1)
17+
expect(result[:usage_summary][:per_app_tasks]).to eq(0)
18+
expect(result[:usage_summary][:service_keys]).to eq(0)
19+
20+
expect(result[:links][:self][:href]).to match(%r{/v3/info/usage_summary$})
21+
end
22+
end
23+
end
24+
end

0 commit comments

Comments
 (0)