Module: Legion::API::Routes::Tenants

Defined in:
lib/legion/api/tenants.rb

Class Method Summary collapse

Class Method Details

.registered(app) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/legion/api/tenants.rb', line 9

def self.registered(app)
  app.get '/api/tenants' do
    tenants = Legion::Tenants.list
    json_response(data: tenants)
  end

  app.post '/api/tenants' do
    body = parse_request_body
    result = Legion::Tenants.create(
      tenant_id:   body[:tenant_id],
      name:        body[:name],
      max_workers: body[:max_workers] || 10
    )
    json_response(result, status_code: result[:error] ? 409 : 201)
  end

  app.get '/api/tenants/:tenant_id' do
    tenant = Legion::Tenants.find(params[:tenant_id])
    halt 404, json_response(error: 'not_found') unless tenant
    json_response(data: tenant)
  end

  app.post '/api/tenants/:tenant_id/suspend' do
    result = Legion::Tenants.suspend(tenant_id: params[:tenant_id])
    json_response(data: result)
  end

  app.get '/api/tenants/:tenant_id/quota/:resource' do
    result = Legion::Tenants.check_quota(
      tenant_id: params[:tenant_id],
      resource:  params[:resource].to_sym
    )
    json_response(data: result)
  end
end