Class: Puma::Kubernetes::App

Inherits:
Object
  • Object
show all
Defined in:
lib/puma/kubernetes/app.rb

Instance Method Summary collapse

Constructor Details

#initialize(launcher) ⇒ App

Returns a new instance of App.



9
10
11
12
13
# File 'lib/puma/kubernetes/app.rb', line 9

def initialize(launcher)
  @launcher = launcher
  clustered = (@launcher.options[:workers] || 0) > 0
  @parser = Parser.new clustered
end

Instance Method Details

#call(_env) ⇒ Object



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
# File 'lib/puma/kubernetes/app.rb', line 15

def call(_env)
  begin
    req = ::Rack::Request.new(_env)
    type = {}
    content = []
    type = { 'Content-Type' => 'text/plain' }
    case req.path_info
    when ::Kubernetes::Health::Config.route_liveness
      i_am_live = ::Kubernetes::Health::Config.live_if.arity == 0 ? ::Kubernetes::Health::Config.live_if.call : ::Kubernetes::Health::Config.live_if.call(req.params)
      http_code = i_am_live ? 200 : 503
    when ::Kubernetes::Health::Config.route_readiness
      i_am_ready = ::Kubernetes::Health::Config.ready_if.arity == 0 ? ::Kubernetes::Health::Config.ready_if.call : ::Kubernetes::Health::Config.ready_if.call(req.params)
      http_code = i_am_ready ? 200 : 503
    when ::Kubernetes::Health::Config.route_metrics
      http_code = 200
      @parser.parse JSON.parse(@launcher.stats)
      content = [Prometheus::Client::Formats::Text.marshal(Prometheus::Client.registry)]
    else
      http_code = 404
    end
  rescue
    http_code = 500
    content = []
  end
  ::Kubernetes::Health::Config.request_log_callback.call(req, http_code)
  [http_code, type, content]
end