logstash-filter-elasticsearch 3.16.2 → 3.17.0

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
  SHA256:
3
- metadata.gz: 77f05a757154f2f9e412dc4226296322180f27b0906a3a28a5b87a164531421c
4
- data.tar.gz: 3262154d23afdec46fb84a583d88f2a7fa12b6c5282d36c9af4bc16d95aca1e2
3
+ metadata.gz: aaf8d73f069f6550d53c38b1a27f5444f77b774bbe62d66b7b7dd276be4125fc
4
+ data.tar.gz: 19b2d5030a25fd03c78baf5edb6b18a649cc0751fa02f38fdfd8a9959669b9bc
5
5
  SHA512:
6
- metadata.gz: a85fc86abdf1546f600fd6878ce9775e437561eeaa3c5ad2da5963cd991c9b15383dfbab249b5d755d709ed404f6fc88c637f6df4348425318eb08ea091fc92c
7
- data.tar.gz: 5398c04fe9c7aff2cc74e61f67aaab22da5280160c44fae8fdf7cc86cdb8fb62735eade95dca41bc53c7a7bb745af30e82fe2bfd715c8a959728e9a1d29e9e72
6
+ metadata.gz: f3792d01a260e9dcada0ddc7df7aaebbfc1280025781f4c8f2640eaba3abd0d777982f31b794cd7e37b1ce9430bd1f2a60d73dc05ddb8fc0eedd778d9574f1c6
7
+ data.tar.gz: 0743bccc0a8da98dd91d697ab1b05e95fae2853fd24e8d6db6887ec7ad636de2ae970ff65e15d491388402c702d71adc2190b987a30e5ee2f30a39daf5014954
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 3.17.0
2
+ - Added support for custom headers [#190](https://github.com/logstash-plugins/logstash-filter-elasticsearch/pull/190)
3
+
1
4
  ## 3.16.2
2
5
  - Add `x-elastic-product-origin` header to Elasticsearch requests [#185](https://github.com/logstash-plugins/logstash-filter-elasticsearch/pull/185)
3
6
 
data/docs/index.asciidoc CHANGED
@@ -131,6 +131,7 @@ This plugin supports the following configuration options plus the <<plugins-{typ
131
131
  | <<plugins-{type}s-{plugin}-ca_trusted_fingerprint>> |<<string,string>>|No
132
132
  | <<plugins-{type}s-{plugin}-cloud_auth>> |<<password,password>>|No
133
133
  | <<plugins-{type}s-{plugin}-cloud_id>> |<<string,string>>|No
134
+ | <<plugins-{type}s-{plugin}-custom_headers>> |<<hash,hash>>|No
134
135
  | <<plugins-{type}s-{plugin}-docinfo_fields>> |<<hash,hash>>|No
135
136
  | <<plugins-{type}s-{plugin}-enable_sort>> |<<boolean,boolean>>|No
136
137
  | <<plugins-{type}s-{plugin}-fields>> |<<array,array>>|No
@@ -228,6 +229,16 @@ Cloud ID, from the Elastic Cloud web console. If set `hosts` should not be used.
228
229
  For more info, check out the
229
230
  {logstash-ref}/connecting-to-cloud.html[Logstash-to-Cloud documentation].
230
231
 
232
+
233
+ [id="plugins-{type}s-{plugin}-custom_headers"]
234
+ ===== `custom_headers`
235
+
236
+ * Value type is <<hash,hash>>
237
+ * Default value is empty
238
+
239
+ Pass a set of key value pairs as the headers sent in each request to Elasticsearch.
240
+ These custom headers will override any headers previously set by the plugin such as the User Agent or Authorization headers.
241
+
231
242
  [id="plugins-{type}s-{plugin}-docinfo_fields"]
232
243
  ===== `docinfo_fields`
233
244
 
@@ -20,6 +20,8 @@ module LogStash
20
20
  api_key = options.fetch(:api_key, nil)
21
21
  proxy = options.fetch(:proxy, nil)
22
22
  user_agent = options[:user_agent]
23
+ custom_headers = options[:custom_headers]
24
+
23
25
 
24
26
  transport_options = { }
25
27
  transport_options[:headers] = options.fetch(:serverless, false) ? DEFAULT_EAV_HEADER.dup : {}
@@ -27,6 +29,7 @@ module LogStash
27
29
  transport_options[:headers].merge!(setup_api_key(api_key))
28
30
  transport_options[:headers].merge!({ 'user-agent' => "#{user_agent}" })
29
31
  transport_options[:headers].merge!(INTERNAL_ORIGIN_HEADER)
32
+ transport_options[:headers].merge!(custom_headers) unless custom_headers.empty?
30
33
 
31
34
  transport_options[:pool_max] = 1000
32
35
  transport_options[:pool_max_per_route] = 100
@@ -33,6 +33,9 @@ class LogStash::Filters::Elasticsearch < LogStash::Filters::Base
33
33
  # Array of fields to copy from old event (found via elasticsearch) into new event
34
34
  config :fields, :validate => :array, :default => {}
35
35
 
36
+ # Custom headers for Elasticsearch requests
37
+ config :custom_headers, :validate => :hash, :default => {}
38
+
36
39
  # Hash of docinfo fields to copy from old event (found via elasticsearch) into new event
37
40
  config :docinfo_fields, :validate => :hash, :default => {}
38
41
 
@@ -269,7 +272,8 @@ class LogStash::Filters::Elasticsearch < LogStash::Filters::Base
269
272
  :ssl => client_ssl_options,
270
273
  :retry_on_failure => @retry_on_failure,
271
274
  :retry_on_status => @retry_on_status,
272
- :user_agent => prepare_user_agent
275
+ :user_agent => prepare_user_agent,
276
+ :custom_headers => @custom_headers
273
277
  }
274
278
  end
275
279
 
@@ -1,13 +1,13 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-filter-elasticsearch'
4
- s.version = '3.16.2'
4
+ s.version = '3.17.0'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "Copies fields from previous log events in Elasticsearch to current events "
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"
8
8
  s.authors = ["Elastic"]
9
9
  s.email = 'info@elastic.co'
10
- s.homepage = "http://www.elastic.co/guide/en/logstash/current/index.html"
10
+ s.homepage = "https://elastic.co/logstash"
11
11
  s.require_paths = ["lib"]
12
12
 
13
13
  # Files
@@ -333,6 +333,30 @@ describe LogStash::Filters::Elasticsearch do
333
333
  end
334
334
  end
335
335
 
336
+ context "with custom headers" do
337
+ let(:config) do
338
+ {
339
+ "query" => "*",
340
+ "custom_headers" => { "Custom-Header-1" => "Custom Value 1", "Custom-Header-2" => "Custom Value 2" }
341
+ }
342
+ end
343
+
344
+ let(:plugin) { LogStash::Filters::Elasticsearch.new(config) }
345
+ let(:client_double) { double("client") }
346
+ let(:transport_double) { double("transport", options: { transport_options: { headers: config["custom_headers"] } }) }
347
+
348
+ before do
349
+ allow(plugin).to receive(:get_client).and_return(client_double)
350
+ allow(client_double).to receive(:client).and_return(transport_double)
351
+ end
352
+
353
+ it "sets custom headers" do
354
+ plugin.register
355
+ client = plugin.send(:get_client).client
356
+ expect(client.options[:transport_options][:headers]).to match(hash_including(config["custom_headers"]))
357
+ end
358
+ end
359
+
336
360
  context "if query is on nested field" do
337
361
  let(:config) do
338
362
  {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-elasticsearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.16.2
4
+ version: 3.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-09 00:00:00.000000000 Z
11
+ date: 2025-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -174,7 +174,7 @@ files:
174
174
  - spec/filters/fixtures/test_certs/ls.der.sha256
175
175
  - spec/filters/fixtures/test_certs/ls.key
176
176
  - spec/filters/integration/elasticsearch_spec.rb
177
- homepage: http://www.elastic.co/guide/en/logstash/current/index.html
177
+ homepage: https://elastic.co/logstash
178
178
  licenses:
179
179
  - Apache License (2.0)
180
180
  metadata: