logstash-input-elasticsearch 4.11.0 → 4.12.0
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
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c8dcf80b30079fa7b38d9c8cb0a11127bc896af3c5efe9e10b92023a74d0034
|
4
|
+
data.tar.gz: b6f40095bd604f4770529c621397c86a569494a973aa32dc13d978f68d49ac44
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ff54e3056fedf78f80fa77d11ccb16f267675ff091d0c8f09262368272ec9d063064459acfc5645764f08a066692215d2713e0b0e100c502ad5488873ba549a
|
7
|
+
data.tar.gz: 7d315f02bdce91ce2f74fa27c85f9962bcdf3548a97a1018d577c480777e370f503301d4482aa28a2a8b68d932f8c2fdde9a6e7f576b6210ded7e43cad692dce
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
## 4.12.0
|
2
|
+
- Feat: Update Elasticsearch client to 7.14.0 [#157](https://github.com/logstash-plugins/logstash-filter-elasticsearch/pull/157)
|
3
|
+
|
1
4
|
## 4.11.0
|
2
5
|
- Feat: add user-agent header passed to the Elasticsearch HTTP connection [#158](https://github.com/logstash-plugins/logstash-input-elasticsearch/pull/158)
|
3
6
|
|
@@ -240,6 +240,8 @@ class LogStash::Inputs::Elasticsearch < LogStash::Inputs::Base
|
|
240
240
|
:transport_class => ::Elasticsearch::Transport::Transport::HTTP::Manticore,
|
241
241
|
:ssl => ssl_options
|
242
242
|
)
|
243
|
+
test_connection!
|
244
|
+
@client
|
243
245
|
end
|
244
246
|
|
245
247
|
|
@@ -473,6 +475,12 @@ class LogStash::Inputs::Elasticsearch < LogStash::Inputs::Base
|
|
473
475
|
# @private used by unit specs
|
474
476
|
attr_reader :client
|
475
477
|
|
478
|
+
def test_connection!
|
479
|
+
@client.ping
|
480
|
+
rescue Elasticsearch::UnsupportedProductError
|
481
|
+
raise LogStash::ConfigurationError, "Could not connect to a compatible version of Elasticsearch"
|
482
|
+
end
|
483
|
+
|
476
484
|
module URIOrEmptyValidator
|
477
485
|
##
|
478
486
|
# @override to provide :uri_or_empty validator
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-input-elasticsearch'
|
4
|
-
s.version = '4.
|
4
|
+
s.version = '4.12.0'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
6
|
s.summary = "Reads query results from an Elasticsearch cluster"
|
7
7
|
s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
|
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.add_runtime_dependency 'logstash-mixin-event_support', '~> 1.0'
|
26
26
|
s.add_runtime_dependency "logstash-mixin-validator_support", '~> 1.0'
|
27
27
|
|
28
|
-
s.add_runtime_dependency 'elasticsearch', '>=
|
28
|
+
s.add_runtime_dependency 'elasticsearch', '>= 7.14.0' # LS >= 6.7 and < 7.14 all used version 5.0.5
|
29
29
|
|
30
30
|
s.add_runtime_dependency 'tzinfo'
|
31
31
|
s.add_runtime_dependency 'tzinfo-data'
|
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
|
|
33
33
|
s.add_runtime_dependency 'manticore', ">= 0.7.1"
|
34
34
|
|
35
35
|
s.add_development_dependency 'logstash-codec-plain'
|
36
|
-
s.add_development_dependency 'faraday', "~>
|
36
|
+
s.add_development_dependency 'faraday', "~> 1"
|
37
37
|
s.add_development_dependency 'logstash-devutils'
|
38
38
|
s.add_development_dependency 'timecop'
|
39
39
|
s.add_development_dependency 'cabin', ['~> 0.6']
|
@@ -18,6 +18,34 @@ describe LogStash::Inputs::Elasticsearch, :ecs_compatibility_support do
|
|
18
18
|
let(:plugin) { described_class.new(config) }
|
19
19
|
let(:queue) { Queue.new }
|
20
20
|
|
21
|
+
before(:each) do
|
22
|
+
Elasticsearch::Client.send(:define_method, :ping) { } # define no-action ping method
|
23
|
+
end
|
24
|
+
|
25
|
+
context "register" do
|
26
|
+
let(:config) do
|
27
|
+
{
|
28
|
+
"schedule" => "* * * * * UTC"
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
context "against authentic Elasticsearch" do
|
33
|
+
it "should not raise an exception" do
|
34
|
+
expect { plugin.register }.to_not raise_error
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context "against not authentic Elasticsearch" do
|
39
|
+
before(:each) do
|
40
|
+
Elasticsearch::Client.send(:define_method, :ping) { raise Elasticsearch::UnsupportedProductError.new("Fake error") } # define error ping method
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should raise ConfigurationError" do
|
44
|
+
expect { plugin.register }.to raise_error(LogStash::ConfigurationError)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
21
49
|
it_behaves_like "an interruptible input plugin" do
|
22
50
|
let(:esclient) { double("elasticsearch-client") }
|
23
51
|
let(:config) do
|
@@ -38,6 +66,7 @@ describe LogStash::Inputs::Elasticsearch, :ecs_compatibility_support do
|
|
38
66
|
allow(esclient).to receive(:search) { { "hits" => { "hits" => [hit] } } }
|
39
67
|
allow(esclient).to receive(:scroll) { { "hits" => { "hits" => [hit] } } }
|
40
68
|
allow(esclient).to receive(:clear_scroll).and_return(nil)
|
69
|
+
allow(esclient).to receive(:ping)
|
41
70
|
end
|
42
71
|
end
|
43
72
|
|
@@ -96,6 +125,7 @@ describe LogStash::Inputs::Elasticsearch, :ecs_compatibility_support do
|
|
96
125
|
expect(client).to receive(:search).with(any_args).and_return(mock_response)
|
97
126
|
expect(client).to receive(:scroll).with({ :body => { :scroll_id => "cXVlcnlUaGVuRmV0Y2g" }, :scroll=> "1m" }).and_return(mock_scroll_response)
|
98
127
|
expect(client).to receive(:clear_scroll).and_return(nil)
|
128
|
+
expect(client).to receive(:ping)
|
99
129
|
end
|
100
130
|
|
101
131
|
it 'creates the events from the hits' do
|
@@ -311,6 +341,7 @@ describe LogStash::Inputs::Elasticsearch, :ecs_compatibility_support do
|
|
311
341
|
expect(client).to receive(:search).with(hash_including(:body => slice0_query)).and_return(slice0_response0)
|
312
342
|
expect(client).to receive(:scroll).with(hash_including(:body => { :scroll_id => slice0_scroll1 })).and_return(slice0_response1)
|
313
343
|
expect(client).to receive(:scroll).with(hash_including(:body => { :scroll_id => slice0_scroll2 })).and_return(slice0_response2)
|
344
|
+
allow(client).to receive(:ping)
|
314
345
|
|
315
346
|
# SLICE1 is a two-page scroll in which the last page has no next scroll id
|
316
347
|
slice1_query = LogStash::Json.dump(query.merge('slice' => { 'id' => 1, 'max' => 2}))
|
@@ -410,6 +441,7 @@ describe LogStash::Inputs::Elasticsearch, :ecs_compatibility_support do
|
|
410
441
|
expect(client).to receive(:search).with(any_args).and_return(response)
|
411
442
|
allow(client).to receive(:scroll).with({ :body => {:scroll_id => "cXVlcnlUaGVuRmV0Y2g"}, :scroll => "1m" }).and_return(scroll_reponse)
|
412
443
|
allow(client).to receive(:clear_scroll).and_return(nil)
|
444
|
+
allow(client).to receive(:ping).and_return(nil)
|
413
445
|
end
|
414
446
|
|
415
447
|
ecs_compatibility_matrix(:disabled, :v1, :v8) do |ecs_select|
|
@@ -586,13 +618,14 @@ describe LogStash::Inputs::Elasticsearch, :ecs_compatibility_support do
|
|
586
618
|
it "should set host(s)" do
|
587
619
|
plugin.register
|
588
620
|
client = plugin.send(:client)
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
621
|
+
|
622
|
+
expect( client.transport.instance_variable_get(:@seeds) ).to eql [{
|
623
|
+
:scheme => "https",
|
624
|
+
:host => "ac31ebb90241773157043c34fd26fd46.us-central1.gcp.cloud.es.io",
|
625
|
+
:port => 9243,
|
626
|
+
:path => "",
|
627
|
+
:protocol => "https"
|
628
|
+
}]
|
596
629
|
end
|
597
630
|
|
598
631
|
context 'invalid' do
|
@@ -843,7 +876,7 @@ describe LogStash::Inputs::Elasticsearch, :ecs_compatibility_support do
|
|
843
876
|
end
|
844
877
|
end
|
845
878
|
|
846
|
-
shared_examples'configurable timeout' do |config_name, manticore_transport_option|
|
879
|
+
shared_examples 'configurable timeout' do |config_name, manticore_transport_option|
|
847
880
|
let(:config_value) { fail NotImplementedError }
|
848
881
|
let(:config) { super().merge(config_name => config_value) }
|
849
882
|
{
|
@@ -874,6 +907,9 @@ describe LogStash::Inputs::Elasticsearch, :ecs_compatibility_support do
|
|
874
907
|
transport_options = new_elasticsearch_client_params[:transport_options]
|
875
908
|
expect(transport_options).to include(manticore_transport_option)
|
876
909
|
expect(transport_options[manticore_transport_option]).to eq(config_value.to_i)
|
910
|
+
mock_client = double("fake_client")
|
911
|
+
allow(mock_client).to receive(:ping)
|
912
|
+
mock_client
|
877
913
|
end
|
878
914
|
|
879
915
|
plugin.register
|
@@ -24,7 +24,6 @@ describe LogStash::Inputs::Elasticsearch do
|
|
24
24
|
ESHelper.index_doc(@es, :index => 'logs', :body => { :response => 404, :message=> 'Not Found'})
|
25
25
|
end
|
26
26
|
@es.indices.refresh
|
27
|
-
plugin.register
|
28
27
|
end
|
29
28
|
|
30
29
|
after(:each) do
|
@@ -33,6 +32,10 @@ describe LogStash::Inputs::Elasticsearch do
|
|
33
32
|
end
|
34
33
|
|
35
34
|
shared_examples 'an elasticsearch index plugin' do
|
35
|
+
before(:each) do
|
36
|
+
plugin.register
|
37
|
+
end
|
38
|
+
|
36
39
|
it 'should retrieve json event from elasticsearch' do
|
37
40
|
queue = []
|
38
41
|
plugin.run(queue)
|
@@ -43,6 +46,10 @@ describe LogStash::Inputs::Elasticsearch do
|
|
43
46
|
end
|
44
47
|
|
45
48
|
describe 'against an unsecured elasticsearch', :integration => true do
|
49
|
+
before(:each) do
|
50
|
+
plugin.register
|
51
|
+
end
|
52
|
+
|
46
53
|
it_behaves_like 'an elasticsearch index plugin'
|
47
54
|
end
|
48
55
|
|
@@ -66,8 +73,7 @@ describe LogStash::Inputs::Elasticsearch do
|
|
66
73
|
let(:queue) { [] }
|
67
74
|
|
68
75
|
it "fails to run the plugin" do
|
69
|
-
plugin.register
|
70
|
-
expect { plugin.run queue }.to raise_error Elasticsearch::Transport::Transport::Errors::Unauthorized
|
76
|
+
expect { plugin.register }.to raise_error Elasticsearch::Transport::Transport::Errors::Unauthorized
|
71
77
|
end
|
72
78
|
end
|
73
79
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-elasticsearch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -77,7 +77,7 @@ dependencies:
|
|
77
77
|
requirements:
|
78
78
|
- - ">="
|
79
79
|
- !ruby/object:Gem::Version
|
80
|
-
version:
|
80
|
+
version: 7.14.0
|
81
81
|
name: elasticsearch
|
82
82
|
prerelease: false
|
83
83
|
type: :runtime
|
@@ -85,7 +85,7 @@ dependencies:
|
|
85
85
|
requirements:
|
86
86
|
- - ">="
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
88
|
+
version: 7.14.0
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
requirement: !ruby/object:Gem::Requirement
|
91
91
|
requirements:
|
@@ -161,7 +161,7 @@ dependencies:
|
|
161
161
|
requirements:
|
162
162
|
- - "~>"
|
163
163
|
- !ruby/object:Gem::Version
|
164
|
-
version:
|
164
|
+
version: '1'
|
165
165
|
name: faraday
|
166
166
|
prerelease: false
|
167
167
|
type: :development
|
@@ -169,7 +169,7 @@ dependencies:
|
|
169
169
|
requirements:
|
170
170
|
- - "~>"
|
171
171
|
- !ruby/object:Gem::Version
|
172
|
-
version:
|
172
|
+
version: '1'
|
173
173
|
- !ruby/object:Gem::Dependency
|
174
174
|
requirement: !ruby/object:Gem::Requirement
|
175
175
|
requirements:
|