class Vmpooler::API
Public Class Methods
execute(torun, config, redis, metrics, logger)
click to toggle source
# File lib/vmpooler/api.rb, line 12 def self.execute(torun, config, redis, metrics, logger) self.settings.set :config, config self.settings.set :redis, redis unless redis.nil? self.settings.set :metrics, metrics self.settings.set :checkoutlock, Mutex.new # Deflating in all situations # https://www.schneems.com/2017/11/08/80-smaller-rails-footprint-with-rack-deflate/ use Rack::Deflater # not_found clause placed here to fix rspec test issue. not_found do content_type :json result = { ok: false } JSON.pretty_generate(result) end if metrics.respond_to?(:setup_prometheus_metrics) # Prometheus metrics are only setup if actually specified # in the config file. metrics.setup_prometheus_metrics(torun) # Using customised collector that filters out hostnames on API paths require 'vmpooler/metrics/promstats/collector_middleware' require 'prometheus/middleware/exporter' use Vmpooler::Metrics::Promstats::CollectorMiddleware, metrics_prefix: "#{metrics.prometheus_prefix}_http" use Prometheus::Middleware::Exporter, path: metrics.prometheus_endpoint # Note that a user may want to use this check without prometheus # However, prometheus setup includes the web server which is required for this check # At this time prometheus is a requirement of using the health check on manager use Vmpooler::API::Healthcheck end if torun.include? :api # Enable API request logging only if required use Vmpooler::API::RequestLogger, logger: logger if config[:config]['request_logger'] use Vmpooler::Dashboard use Vmpooler::API::Dashboard use Vmpooler::API::Reroute use Vmpooler::API::V1 end # Get thee started O WebServer self.run! end