mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 10:08:40 -05:00
Restart API endpoint
Redis configuration added to backend method Manager instance now restarts Logger included in metrics Spec test added API doc updated
This commit is contained in:
parent
56f5945565
commit
9a745ae9ab
4 changed files with 102 additions and 1 deletions
|
|
@ -3,7 +3,7 @@
|
|||
module Vmpooler
|
||||
class API < Sinatra::Base
|
||||
# Load API components
|
||||
%w[helpers dashboard reroute v1 request_logger healthcheck].each do |lib|
|
||||
%w[helpers dashboard reroute v1 request_logger healthcheck restart].each do |lib|
|
||||
require "vmpooler/api/#{lib}"
|
||||
end
|
||||
# Load dashboard components
|
||||
|
|
@ -44,6 +44,7 @@ module Vmpooler
|
|||
# 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
|
||||
use Vmpooler::API::Restart, logger: logger
|
||||
end
|
||||
|
||||
if torun.include? :api
|
||||
|
|
@ -54,6 +55,7 @@ module Vmpooler
|
|||
use Vmpooler::API::Dashboard
|
||||
use Vmpooler::API::Reroute
|
||||
use Vmpooler::API::V1
|
||||
use Vmpooler::API::Restart, logger: logger
|
||||
end
|
||||
|
||||
# Get thee started O WebServer
|
||||
|
|
|
|||
49
lib/vmpooler/api/restart.rb
Normal file
49
lib/vmpooler/api/restart.rb
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
require 'json'
|
||||
|
||||
module Vmpooler
|
||||
class API
|
||||
class Restart < Sinatra::Base
|
||||
helpers do
|
||||
include Vmpooler::API::Helpers
|
||||
end
|
||||
|
||||
# rubocop:disable Lint/MissingSuper
|
||||
def initialize(app, options = {})
|
||||
@app = app
|
||||
@logger = options[:logger]
|
||||
end
|
||||
|
||||
def backend
|
||||
config = Vmpooler.config
|
||||
redis_host = config[:redis]['server']
|
||||
redis_port = config[:redis]['port']
|
||||
redis_password = config[:redis]['password']
|
||||
Vmpooler.new_redis(redis_host, redis_port, redis_password)
|
||||
end
|
||||
|
||||
def need_token!
|
||||
validate_token(backend)
|
||||
end
|
||||
|
||||
def exit_process
|
||||
Thread.new do
|
||||
at_exit do
|
||||
@logger.log('ignored', 'Restarting VMPooler')
|
||||
end
|
||||
sleep(5)
|
||||
exit!
|
||||
end
|
||||
end
|
||||
|
||||
get '/restart/?' do
|
||||
# token authentication
|
||||
need_token!
|
||||
|
||||
# restart operation
|
||||
exit_process
|
||||
status 200
|
||||
JSON.pretty_generate({ 'ok' => true, 'message' => 'Restarting ...' })
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue