logstash-output-elasticsearch 1.0.2-java → 1.0.3-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 606597e1ab355ae55f2e3a001d8b49d129c56c92
4
- data.tar.gz: 93eefd3c03a06af5d37bc32bc5afa3b7636bacb8
3
+ metadata.gz: 7dfe982500b400c2db41641f7c8e272aae50f445
4
+ data.tar.gz: b48ebe308211abe1cd74c829db3f2570c3a98024
5
5
  SHA512:
6
- metadata.gz: 4195eed5510df975b105a7b4d7ae7de0e2be1dd2b5f1a1a14e5ed6587ce5c8ccd20b2b50596d7cb525e9c8446c898859ae6c13646d1e58a960ad34383ef621f1
7
- data.tar.gz: 49320ab0592c7a6ca9906cfd3de38cdd8b74bc8620ca90e9fb136d7bf1ff807a4bf65a2c02b9e39825f572540971e6d908607dc8a1f9fce59278136727129d2e
6
+ metadata.gz: b72b8cd4364ad893b2739dca89836d304bd7a532839271665217ce9efec07bd56ffe34a692cf279586ea9403eef608894084922abd72cf31ad5cfefb2b7f58b7
7
+ data.tar.gz: b3417490d91c9540c5f6aaf7763fbb4473cf14d89fff4fbfc39d95ee6ed245e2e2ac120475be282d686b73de0334fed54318fd39080c66faef01160460f9b0a1
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 1.0.3
2
+ - Add HTTP proxy support
3
+
1
4
  ## 1.0.2
2
5
  - Upgrade Manticore HTTP Client
3
6
 
@@ -309,6 +309,12 @@ class LogStash::Outputs::ElasticSearch < LogStash::Outputs::Base
309
309
  # Set max interval between bulk retries
310
310
  config :retry_max_interval, :validate => :number, :default => 5
311
311
 
312
+ # Set the address of a forward HTTP proxy. Must be used with the 'http' protocol
313
+ # Can be either a string, such as 'http://localhost:123' or a hash in the form
314
+ # {host: 'proxy.org' port: 80 scheme: 'http'}
315
+ # Note, this is NOT a SOCKS proxy, but a plain HTTP proxy
316
+ config :proxy
317
+
312
318
  public
313
319
  def register
314
320
  @submit_mutex = Mutex.new
@@ -372,6 +378,7 @@ class LogStash::Outputs::ElasticSearch < LogStash::Outputs::Base
372
378
  end
373
379
 
374
380
  client_settings.merge! setup_ssl()
381
+ client_settings.merge! setup_proxy()
375
382
 
376
383
  common_options = {
377
384
  :protocol => @protocol,
@@ -593,6 +600,26 @@ class LogStash::Outputs::ElasticSearch < LogStash::Outputs::Base
593
600
  @logger.debug? and @logger.debug("Switched current elasticsearch client to ##{@client_idx} at #{@host[@client_idx]}")
594
601
  end
595
602
 
603
+ private
604
+ def setup_proxy
605
+ return {} unless @proxy
606
+
607
+ if @protocol != "http"
608
+ raise(LogStash::ConfigurationError, "Proxy is not supported for '#{@protocol}'. Change the protocol to 'http' if you need HTTP proxy.")
609
+ end
610
+
611
+ # Symbolize keys
612
+ proxy = if @proxy.is_a?(Hash)
613
+ Hash[@proxy.map {|k,v| [k.to_sym, v]}]
614
+ elsif @proxy.is_a?(String)
615
+ @proxy
616
+ else
617
+ raise LogStash::ConfigurationError, "Expected 'proxy' to be a string or hash, not '#{@proxy}''!"
618
+ end
619
+
620
+ return {:proxy => proxy}
621
+ end
622
+
596
623
  private
597
624
  def setup_ssl
598
625
  return {} unless @ssl
@@ -68,7 +68,8 @@ module LogStash::Outputs::Elasticsearch
68
68
  :ssl => options[:client_settings][:ssl],
69
69
  :transport_options => { # manticore settings so we
70
70
  :socket_timeout => 0, # do not timeout socket reads
71
- :request_timeout => 0 # and requests
71
+ :request_timeout => 0, # and requests
72
+ :proxy => options[:client_settings][:proxy]
72
73
  },
73
74
  :transport_class => ::Elasticsearch::Transport::Transport::HTTP::Manticore
74
75
  }
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-output-elasticsearch'
4
- s.version = '1.0.2'
4
+ s.version = '1.0.3'
5
5
  s.licenses = ['apache-2.0']
6
6
  s.summary = "Logstash Output to Elasticsearch"
7
7
  s.description = "Output events to elasticsearch"
@@ -0,0 +1,59 @@
1
+ require_relative "../../../spec/es_spec_helper"
2
+ require 'stud/temporary'
3
+ require 'elasticsearch'
4
+ require "logstash/outputs/elasticsearch"
5
+
6
+ describe "Proxy option" do
7
+ let(:settings) {
8
+ {
9
+ "protocol" => "http",
10
+ "host" => "node01",
11
+ "proxy" => proxy
12
+ }
13
+ }
14
+ subject {
15
+ LogStash::Outputs::ElasticSearch.new(settings)
16
+ }
17
+
18
+ before do
19
+ allow(::Elasticsearch::Client).to receive(:new).with(any_args)
20
+ end
21
+
22
+ describe "valid configs" do
23
+ before do
24
+ subject.register
25
+ end
26
+
27
+ context "when specified as a string" do
28
+ let(:proxy) { "http://127.0.0.1:1234" }
29
+
30
+ it "should set the proxy to the exact value" do
31
+ expect(::Elasticsearch::Client).to have_received(:new) do |options|
32
+ expect(options[:transport_options][:proxy]).to eql(proxy)
33
+ end
34
+ end
35
+ end
36
+
37
+ context "when specified as a hash" do
38
+ let(:proxy) { {"host" => "127.0.0.1", "protocol" => "http"} }
39
+
40
+ it "should pass through the proxy values as symbols" do
41
+ expected = {:host => proxy["host"], :protocol => proxy["protocol"]}
42
+ expect(::Elasticsearch::Client).to have_received(:new) do |options|
43
+ expect(options[:transport_options][:proxy]).to eql(expected)
44
+ end
45
+ end
46
+ end
47
+ end
48
+
49
+ describe "invalid configs" do
50
+ let(:proxy) { ["bad", "stuff"] }
51
+
52
+ it "should have raised an exception" do
53
+ expect {
54
+ subject.register
55
+ }.to raise_error(LogStash::ConfigurationError)
56
+ end
57
+ end
58
+
59
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-output-elasticsearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: java
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-10 00:00:00.000000000 Z
11
+ date: 2015-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -196,6 +196,7 @@ files:
196
196
  - spec/integration/outputs/templates_spec.rb
197
197
  - spec/integration/outputs/transport_create_spec.rb
198
198
  - spec/unit/outputs/elasticsearch/protocol_spec.rb
199
+ - spec/unit/outputs/elasticsearch_proxy_spec.rb
199
200
  - spec/unit/outputs/elasticsearch_spec.rb
200
201
  - spec/unit/outputs/elasticsearch_ssl_spec.rb
201
202
  - vendor/jar-dependencies/runtime-jars/antlr-runtime-3.5.jar
@@ -251,5 +252,6 @@ test_files:
251
252
  - spec/integration/outputs/templates_spec.rb
252
253
  - spec/integration/outputs/transport_create_spec.rb
253
254
  - spec/unit/outputs/elasticsearch/protocol_spec.rb
255
+ - spec/unit/outputs/elasticsearch_proxy_spec.rb
254
256
  - spec/unit/outputs/elasticsearch_spec.rb
255
257
  - spec/unit/outputs/elasticsearch_ssl_spec.rb