logstash-output-opensearch 1.0.0-java → 1.3.0-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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/COMPATIBILITY.md +27 -0
  4. data/CONTRIBUTING.md +27 -5
  5. data/DEVELOPER_GUIDE.md +16 -7
  6. data/Gemfile +1 -1
  7. data/MAINTAINERS.md +3 -0
  8. data/NOTICE +9 -2
  9. data/README.md +75 -5
  10. data/lib/logstash/outputs/opensearch/http_client/manticore_adapter.rb +101 -4
  11. data/lib/logstash/outputs/opensearch/http_client/pool.rb +3 -16
  12. data/lib/logstash/outputs/opensearch/http_client.rb +12 -23
  13. data/lib/logstash/outputs/opensearch/http_client_builder.rb +5 -2
  14. data/lib/logstash/outputs/opensearch/templates/ecs-disabled/2x.json +44 -0
  15. data/lib/logstash/outputs/opensearch/templates/ecs-v8/1x.json +5252 -0
  16. data/lib/logstash/outputs/opensearch/templates/ecs-v8/2x.json +5252 -0
  17. data/lib/logstash/outputs/opensearch/templates/ecs-v8/7x.json +5252 -0
  18. data/lib/logstash/outputs/opensearch.rb +4 -5
  19. data/lib/logstash/plugin_mixins/opensearch/api_configs.rb +26 -0
  20. data/lib/logstash/plugin_mixins/opensearch/common.rb +2 -2
  21. data/logstash-output-opensearch.gemspec +20 -4
  22. data/spec/integration/outputs/compressed_indexing_spec.rb +11 -5
  23. data/spec/integration/outputs/create_spec.rb +7 -7
  24. data/spec/integration/outputs/delete_spec.rb +8 -8
  25. data/spec/integration/outputs/index_spec.rb +54 -12
  26. data/spec/integration/outputs/index_version_spec.rb +11 -11
  27. data/spec/integration/outputs/ingest_pipeline_spec.rb +3 -4
  28. data/spec/integration/outputs/metrics_spec.rb +0 -2
  29. data/spec/integration/outputs/no_opensearch_on_startup_spec.rb +0 -1
  30. data/spec/integration/outputs/painless_update_spec.rb +10 -10
  31. data/spec/integration/outputs/parent_spec.rb +2 -2
  32. data/spec/integration/outputs/retry_spec.rb +2 -2
  33. data/spec/integration/outputs/sniffer_spec.rb +2 -2
  34. data/spec/integration/outputs/templates_spec.rb +83 -59
  35. data/spec/integration/outputs/update_spec.rb +14 -14
  36. data/spec/opensearch_spec_helper.rb +12 -2
  37. data/spec/unit/outputs/opensearch/http_client/manticore_adapter_spec.rb +74 -4
  38. data/spec/unit/outputs/opensearch/http_client/pool_spec.rb +4 -87
  39. data/spec/unit/outputs/opensearch/http_client_spec.rb +6 -5
  40. data/spec/unit/outputs/opensearch/template_manager_spec.rb +23 -4
  41. data/spec/unit/outputs/opensearch_spec.rb +18 -2
  42. data.tar.gz.sig +0 -0
  43. metadata +75 -19
  44. metadata.gz.sig +0 -0
  45. data/lib/logstash/outputs/opensearch/distribution_checker.rb +0 -44
  46. data/lib/logstash/plugin_mixins/opensearch/noop_distribution_checker.rb +0 -18
@@ -12,6 +12,7 @@ require "base64"
12
12
  require "flores/random"
13
13
  require 'concurrent/atomic/count_down_latch'
14
14
  require "logstash/outputs/opensearch"
15
+ require 'logstash/plugin_mixins/ecs_compatibility_support/spec_helper'
15
16
 
16
17
  describe LogStash::Outputs::OpenSearch do
17
18
  subject(:opensearch_output_instance) { described_class.new(options) }
@@ -325,7 +326,7 @@ describe LogStash::Outputs::OpenSearch do
325
326
  end
326
327
 
327
328
  context '413 errors' do
328
- let(:payload_size) { LogStash::Outputs::OpenSearch::TARGET_BULK_BYTES + 1024 }
329
+ let(:payload_size) { subject.client.target_bulk_bytes + 1024 }
329
330
  let(:event) { ::LogStash::Event.new("message" => ("a" * payload_size ) ) }
330
331
 
331
332
  let(:logger_stub) { double("logger").as_null_object }
@@ -357,7 +358,7 @@ describe LogStash::Outputs::OpenSearch do
357
358
 
358
359
  expect(logger_stub).to have_received(:warn)
359
360
  .with(a_string_matching(/413 Payload Too Large/),
360
- hash_including(:action_count => 1, :content_length => a_value > 20_000_000))
361
+ hash_including(:action_count => 1, :content_length => a_value > subject.client.target_bulk_bytes))
361
362
  end
362
363
  end
363
364
 
@@ -784,6 +785,21 @@ describe LogStash::Outputs::OpenSearch do
784
785
  end
785
786
  end
786
787
 
788
+ describe 'ecs_compatibility support', :ecs_compatibility_support do
789
+ [:disabled, :v1, :v8].each do |ecs_compatibility|
790
+ context "when `ecs_compatibility => #{ecs_compatibility}`" do
791
+ let(:options) { Hash.new }
792
+ subject(:output) { described_class.new(options.merge("ecs_compatibility" => "#{ecs_compatibility}")) }
793
+ context 'when registered' do
794
+ before(:each) { output.register }
795
+ it 'has the correct effective ECS compatibility setting' do
796
+ expect(output.ecs_compatibility).to eq(ecs_compatibility)
797
+ end
798
+ end
799
+ end
800
+ end
801
+ end
802
+
787
803
  @private
788
804
 
789
805
  def stub_manticore_client!(manticore_double = nil)
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-output-opensearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.3.0
5
5
  platform: java
6
6
  authors:
7
7
  - Elastic
@@ -13,7 +13,7 @@ cert_chain:
13
13
  -----BEGIN CERTIFICATE-----
14
14
  MIIDfDCCAmSgAwIBAgIBATANBgkqhkiG9w0BAQUFADBCMRMwEQYDVQQDDApvcGVu
15
15
  c2VhcmNoMRYwFAYKCZImiZPyLGQBGRYGYW1hem9uMRMwEQYKCZImiZPyLGQBGRYD
16
- Y29tMB4XDTIxMDgwMjIxMDQwM1oXDTIyMDgwMjIxMDQwM1owQjETMBEGA1UEAwwK
16
+ Y29tMB4XDTIyMDgxNzE3NTIzNFoXDTIzMDgxNzE3NTIzNFowQjETMBEGA1UEAwwK
17
17
  b3BlbnNlYXJjaDEWMBQGCgmSJomT8ixkARkWBmFtYXpvbjETMBEGCgmSJomT8ixk
18
18
  ARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM1z3/jcitjV
19
19
  umXwRFn+JSBBd36qZB54Dtucf6+E2fmNPzBRhgYN5XJy/+clQJ9NIJV7C8H52P3V
@@ -24,14 +24,14 @@ cert_chain:
24
24
  zfR37/NQFkECAwEAAaN9MHswCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0O
25
25
  BBYEFJJ2myhLXK742btavNbG0IWrMNBIMCAGA1UdEQQZMBeBFW9wZW5zZWFyY2hA
26
26
  YW1hem9uLmNvbTAgBgNVHRIEGTAXgRVvcGVuc2VhcmNoQGFtYXpvbi5jb20wDQYJ
27
- KoZIhvcNAQEFBQADggEBAE7gBP5ecTtKb04qmEsnbJ6+yn0LUSmxPabFBnB6h1+T
28
- XW8BvBw9MpE//5fQf4HSia3m9XjRpl4WxBcJiyfLER64tk/c1JLhV2+rq3CCV/be
29
- DFSP6gY93kK7jwauajGQvyHzORaW1TBM6diIRYCMLY7Isf+PTHl0xhZZBSVm8wl6
30
- IstV+mTP2KC1l7hSzUDb4rrOSnpRB7AEczcDdkjwzHKIlw8rcL+PLLnFTOgqKyq3
31
- yXikuH6LEVykA8pgOcB9gKsB2/zMd2ZlSj2monM8Qw9EfB14ZSDTYS8VYuwWCeF0
32
- eFmXXk0ufQFKl1Yll7quHkmQ0PzKkvXTpONBT6qPkXE=
27
+ KoZIhvcNAQEFBQADggEBAH5pWLYwKWFh1OjdCReGz/VEAiF4jXXputoN5Z8ga+1Z
28
+ lg8/diJf0PlP2B46PdmxH/TVc/o+qglNO2cHVEp8xZfEd83dfioOBeK90URQUpC5
29
+ UZmO0LZusg46SQKwKa2ukpIy2fNi3PeHRiV+W2Zv69GoWppyLun+fMez7wVoah2r
30
+ r5ROUYuAvFUvga1Vm+49pKiPM5n+MAYP5t/vWhgymY3SYQ1TfewkvKAFiFXikOR+
31
+ r+j7FLyKuk5DzIxiCp8QN5dU71BbGUmsHf/C5UV76WLPOFX/szeaHhPwpjR3sK7r
32
+ 5zLgCV1KP7cgDdCYMlmZGeSViU8NV+Yy8/ghrzGpqVw=
33
33
  -----END CERTIFICATE-----
34
- date: 2021-08-02 00:00:00.000000000 Z
34
+ date: 2022-08-17 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
37
  requirement: !ruby/object:Gem::Requirement
@@ -56,23 +56,23 @@ dependencies:
56
56
  - !ruby/object:Gem::Dependency
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '0.0'
62
59
  - - ">="
63
60
  - !ruby/object:Gem::Version
64
61
  version: 0.0.17
62
+ - - "~>"
63
+ - !ruby/object:Gem::Version
64
+ version: '0.0'
65
65
  name: stud
66
66
  prerelease: false
67
67
  type: :runtime
68
68
  version_requirements: !ruby/object:Gem::Requirement
69
69
  requirements:
70
- - - "~>"
71
- - !ruby/object:Gem::Version
72
- version: '0.0'
73
70
  - - ">="
74
71
  - !ruby/object:Gem::Version
75
72
  version: 0.0.17
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.0'
76
76
  - !ruby/object:Gem::Dependency
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
@@ -107,6 +107,46 @@ dependencies:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
109
  version: '1.0'
110
+ - !ruby/object:Gem::Dependency
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: 2.11.632
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '2'
119
+ name: aws-sdk
120
+ prerelease: false
121
+ type: :runtime
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: 2.11.632
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '2'
130
+ - !ruby/object:Gem::Dependency
131
+ requirement: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: 2.3.0
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '2'
139
+ name: json
140
+ prerelease: false
141
+ type: :runtime
142
+ version_requirements: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: 2.3.0
147
+ - - "~>"
148
+ - !ruby/object:Gem::Version
149
+ version: '2'
110
150
  - !ruby/object:Gem::Dependency
111
151
  requirement: !ruby/object:Gem::Requirement
112
152
  requirements:
@@ -163,6 +203,20 @@ dependencies:
163
203
  - - "~>"
164
204
  - !ruby/object:Gem::Version
165
205
  version: '0.6'
206
+ - !ruby/object:Gem::Dependency
207
+ requirement: !ruby/object:Gem::Requirement
208
+ requirements:
209
+ - - "~>"
210
+ - !ruby/object:Gem::Version
211
+ version: '1'
212
+ name: opensearch-ruby
213
+ prerelease: false
214
+ type: :development
215
+ version_requirements: !ruby/object:Gem::Requirement
216
+ requirements:
217
+ - - "~>"
218
+ - !ruby/object:Gem::Version
219
+ version: '1'
166
220
  description: This gem is a Logstash plugin required to be installed on top of the
167
221
  Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gem. This gem
168
222
  is not a stand-alone program
@@ -173,6 +227,7 @@ extra_rdoc_files: []
173
227
  files:
174
228
  - ADMINS.md
175
229
  - CODE_OF_CONDUCT.md
230
+ - COMPATIBILITY.md
176
231
  - CONTRIBUTING.md
177
232
  - DEVELOPER_GUIDE.md
178
233
  - Gemfile
@@ -183,17 +238,19 @@ files:
183
238
  - RELEASING.md
184
239
  - SECURITY.md
185
240
  - lib/logstash/outputs/opensearch.rb
186
- - lib/logstash/outputs/opensearch/distribution_checker.rb
187
241
  - lib/logstash/outputs/opensearch/http_client.rb
188
242
  - lib/logstash/outputs/opensearch/http_client/manticore_adapter.rb
189
243
  - lib/logstash/outputs/opensearch/http_client/pool.rb
190
244
  - lib/logstash/outputs/opensearch/http_client_builder.rb
191
245
  - lib/logstash/outputs/opensearch/template_manager.rb
192
246
  - lib/logstash/outputs/opensearch/templates/ecs-disabled/1x.json
247
+ - lib/logstash/outputs/opensearch/templates/ecs-disabled/2x.json
193
248
  - lib/logstash/outputs/opensearch/templates/ecs-disabled/7x.json
249
+ - lib/logstash/outputs/opensearch/templates/ecs-v8/1x.json
250
+ - lib/logstash/outputs/opensearch/templates/ecs-v8/2x.json
251
+ - lib/logstash/outputs/opensearch/templates/ecs-v8/7x.json
194
252
  - lib/logstash/plugin_mixins/opensearch/api_configs.rb
195
253
  - lib/logstash/plugin_mixins/opensearch/common.rb
196
- - lib/logstash/plugin_mixins/opensearch/noop_distribution_checker.rb
197
254
  - logstash-output-opensearch.gemspec
198
255
  - spec/fixtures/_nodes/nodes.json
199
256
  - spec/fixtures/htpasswd
@@ -249,8 +306,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
249
306
  - !ruby/object:Gem::Version
250
307
  version: '0'
251
308
  requirements: []
252
- rubyforge_project:
253
- rubygems_version: 2.7.10
309
+ rubygems_version: 3.3.20
254
310
  signing_key:
255
311
  specification_version: 4
256
312
  summary: Stores logs in OpenSearch
metadata.gz.sig CHANGED
Binary file
@@ -1,44 +0,0 @@
1
- # SPDX-License-Identifier: Apache-2.0
2
- #
3
- # The OpenSearch Contributors require contributions made to
4
- # this file be licensed under the Apache-2.0 license or a
5
- # compatible open source license.
6
- #
7
- # Modifications Copyright OpenSearch Contributors. See
8
- # GitHub history for details.
9
- #
10
- module LogStash; module Outputs; class OpenSearch
11
- class DistributionChecker
12
-
13
- def initialize(logger)
14
- @logger = logger
15
- end
16
-
17
- # Checks whether connecting cluster is one of supported distribution or not
18
- # @param pool
19
- # @param url [LogStash::Util::SafeURI] OpenSearch node URL
20
- # @param major_version OpenSearch major version number
21
- # @return [Boolean] true if supported
22
- def is_supported?(pool, url, major_version)
23
- distribution = get_distribution(pool, url)
24
- case distribution
25
- when 'opensearch'
26
- return true
27
- when 'oss'
28
- if major_version == 7
29
- return true
30
- end
31
- end
32
- log_not_supported(url, major_version, distribution)
33
- false
34
- end
35
-
36
- def get_distribution(pool, url)
37
- pool.get_distribution(url)
38
- end
39
-
40
- def log_not_supported(url, major_version, distribution)
41
- @logger.error("Could not connect to cluster", url: url.sanitized.to_s, distribution: distribution, major_version: major_version)
42
- end
43
- end
44
- end; end; end
@@ -1,18 +0,0 @@
1
- # SPDX-License-Identifier: Apache-2.0
2
- #
3
- # The OpenSearch Contributors require contributions made to
4
- # this file be licensed under the Apache-2.0 license or a
5
- # compatible open source license.
6
- #
7
- # Modifications Copyright OpenSearch Contributors. See
8
- # GitHub history for details.
9
-
10
- module LogStash; module PluginMixins; module OpenSearch
11
- class NoopDistributionChecker
12
- INSTANCE = self.new
13
-
14
- def is_supported?(pool, url, major_version)
15
- true
16
- end
17
- end
18
- end; end; end