class HealthMonitor::Providers::Solr

Public Instance Methods

check!() click to toggle source
# File lib/health_monitor/providers/solr.rb, line 23
def check!
  check_solr_connection!
rescue Exception => e
  raise SolrException.new(e.message)
end

Private Instance Methods

check_solr_collection!() click to toggle source
# File lib/health_monitor/providers/solr.rb, line 43
def check_solr_collection!
  response = solr_response(uri: collection_uri)
  json = JSON.parse(response.body) if response.code == '200'
  return if response.is_a?(Net::HTTPSuccess) && json['status'].casecmp?('OK')

  raise "The Solr collection has an invalid status #{collection_uri}"
end
check_solr_connection!() click to toggle source
# File lib/health_monitor/providers/solr.rb, line 35
def check_solr_connection!
  if configuration.collection
    check_solr_collection!
  else
    check_solr_uri!
  end
end
check_solr_uri!() click to toggle source
# File lib/health_monitor/providers/solr.rb, line 51
def check_solr_uri!
  json = JSON.parse(solr_response.body)
  raise "The solr has an invalid status #{status_uri}" if json['responseHeader']['status'] != 0
end
collection_uri() click to toggle source
# File lib/health_monitor/providers/solr.rb, line 65
def collection_uri
  @collection_uri ||= begin
    uri = URI(configuration.url)
    uri.path = "/solr/#{configuration.collection}/admin/ping"
    uri
  end
end
configuration_class() click to toggle source
# File lib/health_monitor/providers/solr.rb, line 31
def configuration_class
  ::HealthMonitor::Providers::Solr::Configuration
end
solr_request(uri: status_uri) click to toggle source
# File lib/health_monitor/providers/solr.rb, line 73
def solr_request(uri: status_uri)
  @solr_request ||= begin
    req = Net::HTTP::Get.new(uri)
    req.basic_auth(uri.user, uri.password) if uri.user && uri.password
    req
  end
end
solr_response(uri: status_uri) click to toggle source
# File lib/health_monitor/providers/solr.rb, line 81
def solr_response(uri: status_uri)
  Net::HTTP.start(status_uri.hostname, status_uri.port) { |http| http.request(solr_request(uri: uri)) }
end
status_uri() click to toggle source
# File lib/health_monitor/providers/solr.rb, line 56
def status_uri
  @status_uri ||= begin
    uri = URI(configuration.url)
    uri.path = '/solr/admin/cores'
    uri.query = 'action=STATUS'
    uri
  end
end