fluent-plugin-elasticsearch 2.2.0 → 2.3.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
  SHA1:
3
- metadata.gz: df3fc320b12a8944666a94ef4191c2c4f54596fe
4
- data.tar.gz: 8e9542c23f48771a1b8c4f9b58d48c3a88368808
3
+ metadata.gz: af3f58b827423bdfc292675d045d0e88f3bcc051
4
+ data.tar.gz: 63d6cdcdf4f23cac1c7e932e633df607cc3ac7fd
5
5
  SHA512:
6
- metadata.gz: 442135842951fd0b3a747a979f52e3093cdc3f3d5eaaceb168b4a422d0dd616998e974b197d69750f9527a5a1372ef2416d5145ba709489dd301bd63af85de54
7
- data.tar.gz: 49c2a393a950e02c53f8734ded656deb683c955f70018e565b6fffd6fb4facd107e2d56d1f7231e3120140d8701e76622c8041cb0664abcb3137e19c53af6c47
6
+ metadata.gz: 38fdabbdd290f4d03f5cc26eae8643c8a7e6a922ebf6d294fc46b3b4a085b77155776c6c48c44d9fa4ca03ffbad4e91c0f3587d34999610fa0214d5635d61c1b
7
+ data.tar.gz: de3e9167b99936945d290da18400074b9def208d59b6ae01b2a506e644d972d4e5551717f32a77fb969074c6a09c153490ceb940ae88fece749266192d08a45c
data/History.md CHANGED
@@ -4,6 +4,9 @@
4
4
  - Log ES response errors (#230)
5
5
  - Use latest elasticsearch-ruby (#240)
6
6
 
7
+ ### 2.3.0
8
+ - Allow overwriting existing index template (#239)
9
+
7
10
  ### 2.2.0
8
11
  - GA release 2.2.0.
9
12
 
data/README.md CHANGED
@@ -34,6 +34,7 @@ Current maintainers: @cosmo0920
34
34
  + [target_type_key](#target_type_key)
35
35
  + [template_name](#template_name)
36
36
  + [template_file](#template_file)
37
+ + [template_overwrite](#template_overwrite)
37
38
  + [templates](#templates)
38
39
  + [request_timeout](#request_timeout)
39
40
  + [reload_connections](#reload_connections)
@@ -294,7 +295,7 @@ Similar to `target_index_key` config, find the type name to write to in the reco
294
295
 
295
296
  ### template_name
296
297
 
297
- The name of the template to define. If a template by the name given is already present, it will be left unchanged.
298
+ The name of the template to define. If a template by the name given is already present, it will be left unchanged, unless [template_overwrite](#template_overwrite) is set, in which case the template will be updated.
298
299
 
299
300
  This parameter along with template_file allow the plugin to behave similarly to Logstash (it installs a template at creation time) so that raw records are available. See [https://github.com/uken/fluent-plugin-elasticsearch/issues/33](https://github.com/uken/fluent-plugin-elasticsearch/issues/33).
300
301
 
@@ -316,6 +317,16 @@ templates { "templane_name_1": "path_to_template_1_file", "templane_name_2": "pa
316
317
 
317
318
  If `template_file` and `template_name` are set, then this parameter will be ignored.
318
319
 
320
+ ### template_overwrite
321
+
322
+ Always update the template, even if it already exists.
323
+
324
+ ```
325
+ template_overwrite true # defaults to false
326
+ ```
327
+
328
+ One of [template_file](#template_file) or [templates](#templates) must also be specified if this is set.
329
+
319
330
  ### request_timeout
320
331
 
321
332
  You can specify HTTP request timeout.
@@ -3,7 +3,7 @@ $:.push File.expand_path('../lib', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'fluent-plugin-elasticsearch'
6
- s.version = '2.2.0'
6
+ s.version = '2.3.0'
7
7
  s.authors = ['diogo', 'pitr']
8
8
  s.email = ['pitr.vern@gmail.com', 'me@diogoterror.com']
9
9
  s.description = %q{ElasticSearch output plugin for Fluent event collector}
@@ -19,7 +19,12 @@ module Fluent::ElasticsearchIndexTemplate
19
19
  client.indices.put_template(:name => name, :body => template)
20
20
  end
21
21
 
22
- def template_install(name, template_file)
22
+ def template_install(name, template_file, overwrite)
23
+ if overwrite
24
+ template_put(name, get_template(template_file))
25
+ log.info("Template '#{name}' overwritten with #{template_file}.")
26
+ return
27
+ end
23
28
  if !template_exists?(name)
24
29
  template_put(name, get_template(template_file))
25
30
  log.info("Template configured, but no template installed. Installed '#{name}' from #{template_file}.")
@@ -28,9 +33,9 @@ module Fluent::ElasticsearchIndexTemplate
28
33
  end
29
34
  end
30
35
 
31
- def templates_hash_install (templates)
36
+ def templates_hash_install(templates, overwrite)
32
37
  templates.each do |key, value|
33
- template_install(key, value)
38
+ template_install(key, value, overwrite)
34
39
  end
35
40
  end
36
41
 
@@ -67,6 +67,7 @@ module Fluent::Plugin
67
67
  config_param :flatten_hashes_separator, :string, :default => "_"
68
68
  config_param :template_name, :string, :default => nil
69
69
  config_param :template_file, :string, :default => nil
70
+ config_param :template_overwrite, :bool, :default => false
70
71
  config_param :templates, :hash, :default => nil
71
72
  config_param :include_tag_key, :bool, :default => false
72
73
  config_param :tag_key, :string, :default => 'tag'
@@ -114,9 +115,9 @@ module Fluent::Plugin
114
115
  end
115
116
 
116
117
  if @template_name && @template_file
117
- template_install(@template_name, @template_file)
118
+ template_install(@template_name, @template_file, @template_overwrite)
118
119
  elsif @templates
119
- templates_hash_install (@templates)
120
+ templates_hash_install(@templates, @template_overwrite)
120
121
  end
121
122
 
122
123
  @meta_config_map = create_meta_config_map
@@ -262,6 +262,8 @@ class ElasticsearchOutput < Test::Unit::TestCase
262
262
  to_return(:status => 200, :body => "", :headers => {})
263
263
 
264
264
  driver(config)
265
+
266
+ assert_not_requested(:put, "https://john:doe@logs.google.com:777/es//_template/logstash")
265
267
  end
266
268
 
267
269
  def test_template_create
@@ -290,6 +292,39 @@ class ElasticsearchOutput < Test::Unit::TestCase
290
292
  to_return(:status => 200, :body => "", :headers => {})
291
293
 
292
294
  driver(config)
295
+
296
+ assert_requested(:put, "https://john:doe@logs.google.com:777/es//_template/logstash", times: 1)
297
+ end
298
+
299
+ def test_template_overwrite
300
+ cwd = File.dirname(__FILE__)
301
+ template_file = File.join(cwd, 'test_template.json')
302
+
303
+ config = %{
304
+ host logs.google.com
305
+ port 777
306
+ scheme https
307
+ path /es/
308
+ user john
309
+ password doe
310
+ template_name logstash
311
+ template_file #{template_file}
312
+ template_overwrite true
313
+ }
314
+
315
+ # connection start
316
+ stub_request(:head, "https://john:doe@logs.google.com:777/es//").
317
+ to_return(:status => 200, :body => "", :headers => {})
318
+ # check if template exists
319
+ stub_request(:get, "https://john:doe@logs.google.com:777/es//_template/logstash").
320
+ to_return(:status => 200, :body => "", :headers => {})
321
+ # creation
322
+ stub_request(:put, "https://john:doe@logs.google.com:777/es//_template/logstash").
323
+ to_return(:status => 200, :body => "", :headers => {})
324
+
325
+ driver(config)
326
+
327
+ assert_requested(:put, "https://john:doe@logs.google.com:777/es//_template/logstash", times: 1)
293
328
  end
294
329
 
295
330
 
@@ -355,6 +390,44 @@ class ElasticsearchOutput < Test::Unit::TestCase
355
390
  assert_not_requested(:put, "https://john:doe@logs.google.com:777/es//_template/logstash3") #exists
356
391
  end
357
392
 
393
+ def test_templates_overwrite
394
+ cwd = File.dirname(__FILE__)
395
+ template_file = File.join(cwd, 'test_template.json')
396
+ config = %{
397
+ host logs.google.com
398
+ port 777
399
+ scheme https
400
+ path /es/
401
+ user john
402
+ password doe
403
+ templates {"logstash1":"#{template_file}", "logstash2":"#{template_file}","logstash3":"#{template_file}" }
404
+ template_overwrite true
405
+ }
406
+
407
+ stub_request(:head, "https://john:doe@logs.google.com:777/es//").
408
+ to_return(:status => 200, :body => "", :headers => {})
409
+ # check if template exists
410
+ stub_request(:get, "https://john:doe@logs.google.com:777/es//_template/logstash1").
411
+ to_return(:status => 200, :body => "", :headers => {})
412
+ stub_request(:get, "https://john:doe@logs.google.com:777/es//_template/logstash2").
413
+ to_return(:status => 200, :body => "", :headers => {})
414
+ stub_request(:get, "https://john:doe@logs.google.com:777/es//_template/logstash3").
415
+ to_return(:status => 200, :body => "", :headers => {}) #exists
416
+
417
+ stub_request(:put, "https://john:doe@logs.google.com:777/es//_template/logstash1").
418
+ to_return(:status => 200, :body => "", :headers => {})
419
+ stub_request(:put, "https://john:doe@logs.google.com:777/es//_template/logstash2").
420
+ to_return(:status => 200, :body => "", :headers => {})
421
+ stub_request(:put, "https://john:doe@logs.google.com:777/es//_template/logstash3").
422
+ to_return(:status => 200, :body => "", :headers => {})
423
+
424
+ driver(config)
425
+
426
+ assert_requested(:put, "https://john:doe@logs.google.com:777/es//_template/logstash1", times: 1)
427
+ assert_requested(:put, "https://john:doe@logs.google.com:777/es//_template/logstash2", times: 1)
428
+ assert_requested(:put, "https://john:doe@logs.google.com:777/es//_template/logstash3", times: 1)
429
+ end
430
+
358
431
  def test_templates_not_used
359
432
  cwd = File.dirname(__FILE__)
360
433
  template_file = File.join(cwd, 'test_template.json')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-elasticsearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - diogo