Skip to content

Commit 285f9d2

Browse files
authored
Merge pull request #1377 from travis-ci/sc-implement-storage-executions-usage
Implement storage executions usage endpoint
2 parents 9ee23d6 + c98cd80 commit 285f9d2

File tree

6 files changed

+41
-0
lines changed

6 files changed

+41
-0
lines changed

lib/travis/api/v3/billing_client.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,13 @@ def storage_usage(owner_type, owner_id, from, to)
5454
end
5555
end
5656

57+
def storage_executions_usage(owner_type, owner_id)
58+
response = connection.get("/usage/#{owner_type.downcase}s/#{owner_id}/storage_executions")
59+
body(response).map do |usage_data|
60+
usage_data
61+
end
62+
end
63+
5764
def calculate_credits(users, executions)
5865
response = connection.post("/usage/credits_calculator", users: users, executions: executions)
5966
body(response).map do |calculator_data|

lib/travis/api/v3/queries/custom_images.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ def current_storage(owner, user_id)
1818
Models::CustomImageStorage.where(owner_type: owner_type(owner), owner_id: owner.id).order('id desc').limit(1).first
1919
end
2020

21+
def storage_executions_usage(owner, user_id)
22+
BillingClient.new(user_id).storage_executions_usage(owner_type(owner), owner.id)
23+
end
24+
2125
private
2226

2327
def owner_type(owner)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module Travis::API::V3
2+
class Renderer::StorageExecutionsUsage < ModelRenderer
3+
representation :minimal, :estimated_usage
4+
representation :standard, *representations[:minimal]
5+
end
6+
end
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module Travis::API::V3
2+
class Renderer::StorageExecutionsUsages < CollectionRenderer
3+
type :storage_executions_usages
4+
collection_key :storage_executions_usages
5+
end
6+
end

lib/travis/api/v3/routes.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ module Routes
176176
delete :delete
177177
get :usage, '/usage'
178178
get :current_storage, '/current_storage'
179+
get :storage_executions_usage, '/storage_executions_usage'
179180
end
180181
end
181182

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
module Travis::API::V3
2+
class Services::CustomImages::StorageExecutionsUsage < Service
3+
result_type :storage_executions_usages
4+
5+
def run!
6+
raise MethodNotAllowed if Travis.config.org?
7+
raise LoginRequired unless access_control.logged_in?
8+
9+
owner = query(:owner).find
10+
11+
raise NotFound unless owner
12+
raise InsufficientAccess unless access_control.visible?(owner)
13+
14+
result query(:custom_images).storage_executions_usage(owner, access_control.user.id)
15+
end
16+
end
17+
end

0 commit comments

Comments
 (0)