class HealthMonitor::Providers::Solr
Public Instance Methods
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
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
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
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
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
Source
# File lib/health_monitor/providers/solr.rb, line 31 def configuration_class ::HealthMonitor::Providers::Solr::Configuration end
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
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
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