Class: LogStash::Config::Source::Local::ConfigRemoteLoader

Inherits:
Object
  • Object
show all
Defined in:
lib/logstash/config/source/local.rb

Class Method Summary collapse

Class Method Details

.read(uri) ⇒ Object



128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/logstash/config/source/local.rb', line 128

def self.read(uri)
  uri = URI.parse(uri)

  Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == "https") do |http|
    request = Net::HTTP::Get.new(uri.path)
    response = http.request(request)

    # since we have fetching config we wont follow any redirection.
    case response.code.to_i
    when 200
      [org.logstash.common.SourceWithMetadata.new(uri.scheme, uri.to_s, 0, 0, response.body)]
    when 302
      raise LogStash::ConfigLoadingError, I18n.t("logstash.runner.configuration.fetch-failed", :path => uri.to_s, :message => "We don't follow redirection for remote configuration")
    when 404
      raise LogStash::ConfigLoadingError, I18n.t("logstash.runner.configuration.fetch-failed", :path => uri.to_s, :message => "File not found")
    when 403
      raise LogStash::ConfigLoadingError, I18n.t("logstash.runner.configuration.fetch-failed", :path => uri.to_s, :message => "Permission denied")
    when 500
      raise LogStash::ConfigLoadingError, I18n.t("logstash.runner.configuration.fetch-failed", :path => uri.to_s, :message => "500 error on remote host")
    else
      raise LogStash::ConfigLoadingError, I18n.t("logstash.runner.configuration.fetch-failed", :path => uri.to_s, :message => "code: #{response.code}, message: #{response.class.to_s}")
    end
  end
end