gitlab-org--gitlab-foss/lib/gitlab/gitaly_client/server_service.rb

50 lines
1.5 KiB
Ruby

# frozen_string_literal: true
module Gitlab
module GitalyClient
# Meant for extraction of server data, and later maybe to perform misc task
#
# Not meant for connection logic, look in Gitlab::GitalyClient
class ServerService
def initialize(storage)
@storage = storage
end
def info
GitalyClient.call(@storage, :server_service, :server_info, Gitaly::ServerInfoRequest.new, timeout: GitalyClient.fast_timeout)
end
def disk_statistics
GitalyClient.call(@storage, :server_service, :disk_statistics, Gitaly::DiskStatisticsRequest.new, timeout: GitalyClient.fast_timeout)
end
def storage_info
storage_specific(info)
end
def storage_disk_statistics
storage_specific(disk_statistics)
end
def readiness_check
request = Gitaly::ReadinessCheckRequest.new(timeout: GitalyClient.medium_timeout)
response = GitalyClient.call(@storage, :server_service, :readiness_check, request, timeout: GitalyClient.default_timeout)
return { success: true } if response.ok_response
failed_checks = response.failure_response.failed_checks.map do |failed_check|
["#{failed_check.name}: #{failed_check.error_message}"]
end
{ success: false, message: failed_checks.join("\n") }
end
private
def storage_specific(response)
response.storage_statuses.find { |status| status.storage_name == @storage }
end
end
end
end