30 lines
934 B
Ruby
30 lines
934 B
Ruby
class Mrsk::Cli::Healthcheck < Mrsk::Cli::Base
|
|
desc "perform", "Health check the current version of the app"
|
|
def perform
|
|
on(MRSK.primary_host) do
|
|
begin
|
|
execute *MRSK.healthcheck.run
|
|
|
|
target = "Health check against #{MRSK.config.healthcheck["path"]}"
|
|
|
|
if capture_with_info(*MRSK.healthcheck.curl) == "200"
|
|
info "#{target} succeeded with 200 OK!"
|
|
else
|
|
# Catches 1xx, 2xx, 3xx
|
|
raise SSHKit::Command::Failed, "#{target} failed to return 200 OK!"
|
|
end
|
|
rescue SSHKit::Command::Failed => e
|
|
if e.message =~ /curl/
|
|
# Catches 4xx, 5xx
|
|
raise SSHKit::Command::Failed, "#{target} failed to return 200 OK!"
|
|
else
|
|
raise
|
|
end
|
|
ensure
|
|
execute *MRSK.healthcheck.stop, raise_on_non_zero_exit: false
|
|
execute *MRSK.healthcheck.remove, raise_on_non_zero_exit: false
|
|
end
|
|
end
|
|
end
|
|
end
|