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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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