logstash-filter-mutate 3.3.4 → 3.4.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: 10c472383e1b7198e53fce13513fa010542a198cfdaf76dd617067538f4e0a94
4
- data.tar.gz: bebff8caed3fe2d7949c386730ea7392f3c56f4d27395a0eaf8fb83b9c923fc7
3
+ metadata.gz: d864cb702460a9b6b7ab2d3bcf7983df039730306118771e0e62e2f87754c31c
4
+ data.tar.gz: ee2729fb05d2a18426d8419b917df4137ca90bfd5e45fa4a99a1f32e2ebb5317
5
5
  SHA512:
6
- metadata.gz: 4290aa84cce80d2b3c5f3b60fba4926d4f46db250609a3203874cfca77364d4c5979e3625ed8579294f1e75359d3e9c455e29ca76d29f4b913fa6a70bb4e7dcc
7
- data.tar.gz: 6e3cb113ad72a0c0bdedcc50c6098d0fda4de7ad07fb44c55b7423f55acc1a8dcb7caf2e08d71d9b1d0cfc6150349b785599d6abbfca3a666c53ca2f3c3ba826
6
+ metadata.gz: 0e01156ec1b9be737f2a291a95a270a1a07e90fac8e62ffbebbc1a81db9d983bda817a7539bd9827b4d919abe4defe6cbf1d3755d51e38c76c26a520d90846ca
7
+ data.tar.gz: 7998a5a7475514816ab8d83f3749dcb7a54c88a2f510da66b57711c4b7282be70b4290f24b3dc2f71872fb8193824d00f02c8f99d67ed4710fc83ace5a396abf
@@ -1,3 +1,6 @@
1
+ ## 3.4.0
2
+ - Added ability to directly convert from integer and float to boolean [#127](https://github.com/logstash-plugins/logstash-filter-mutate/pull/127)
3
+
1
4
  ## 3.3.4
2
5
  - Changed documentation to clarify execution order and to provide workaround
3
6
  [#128](https://github.com/logstash-plugins/logstash-filter-mutate/pull/128)
@@ -117,10 +117,15 @@ Valid conversion targets, and their expected behaviour with different inputs are
117
117
  * `string`:
118
118
  - all values are stringified and encoded with UTF-8
119
119
  * `boolean`:
120
- - strings `"true"`, `"t"`, `"yes"`, `"y"`, and `"1"` are converted to boolean `true`
121
- - strings `"false"`, `"f"`, `"no"`, `"n"`, and `"0"` are converted to boolean `false`
120
+ - integer 0 is converted to boolean `false`
121
+ - integer 1 is converted to boolean `true`
122
+ - float 0.0 is converted to boolean `false`
123
+ - float 1.0 is converted to boolean `true`
124
+ - strings `"true"`, `"t"`, `"yes"`, `"y"`, `"1"`and `"1.0"` are converted to boolean `true`
125
+ - strings `"false"`, `"f"`, `"no"`, `"n"`, `"0"` and `"0.0"` are converted to boolean `false`
122
126
  - empty strings are converted to boolean `false`
123
127
  - all other values pass straight through without conversion and log a warning message
128
+ - for arrays each value gets processed separately using rules above
124
129
 
125
130
  This plugin can convert multiple fields in the same document, see the example below.
126
131
 
@@ -207,8 +207,8 @@ class LogStash::Filters::Mutate < LogStash::Filters::Base
207
207
  # }
208
208
  config :copy, :validate => :hash
209
209
 
210
- TRUE_REGEX = (/^(true|t|yes|y|1)$/i).freeze
211
- FALSE_REGEX = (/^(false|f|no|n|0)$/i).freeze
210
+ TRUE_REGEX = (/^(true|t|yes|y|1|1.0)$/i).freeze
211
+ FALSE_REGEX = (/^(false|f|no|n|0|0.0)$/i).freeze
212
212
  CONVERT_PREFIX = "convert_".freeze
213
213
 
214
214
  def register
@@ -327,8 +327,8 @@ class LogStash::Filters::Mutate < LogStash::Filters::Base
327
327
  end
328
328
 
329
329
  def convert_boolean(value)
330
- return true if value =~ TRUE_REGEX
331
- return false if value.empty? || value =~ FALSE_REGEX
330
+ return true if value.to_s =~ TRUE_REGEX
331
+ return false if value.to_s.empty? || value.to_s =~ FALSE_REGEX
332
332
  @logger.warn("Failed to convert #{value} into boolean.")
333
333
  value
334
334
  end
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-filter-mutate'
4
- s.version = '3.3.4'
4
+ s.version = '3.4.0'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "Performs mutations on fields"
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"
@@ -373,45 +373,78 @@ describe LogStash::Filters::Mutate do
373
373
  config <<-CONFIG
374
374
  filter {
375
375
  mutate {
376
- convert => { "true_field" => "boolean" }
377
- convert => { "false_field" => "boolean" }
378
- convert => { "true_upper" => "boolean" }
379
- convert => { "false_upper" => "boolean" }
380
- convert => { "true_one" => "boolean" }
381
- convert => { "false_zero" => "boolean" }
382
- convert => { "true_yes" => "boolean" }
383
- convert => { "false_no" => "boolean" }
384
- convert => { "true_y" => "boolean" }
385
- convert => { "false_n" => "boolean" }
386
- convert => { "wrong_field" => "boolean" }
376
+ convert => { "true_field" => "boolean" }
377
+ convert => { "false_field" => "boolean" }
378
+ convert => { "true_upper" => "boolean" }
379
+ convert => { "false_upper" => "boolean" }
380
+ convert => { "true_one" => "boolean" }
381
+ convert => { "false_zero" => "boolean" }
382
+ convert => { "true_yes" => "boolean" }
383
+ convert => { "false_no" => "boolean" }
384
+ convert => { "true_y" => "boolean" }
385
+ convert => { "false_n" => "boolean" }
386
+ convert => { "wrong_field" => "boolean" }
387
+ convert => { "integer_false" => "boolean" }
388
+ convert => { "integer_true" => "boolean" }
389
+ convert => { "integer_negative" => "boolean" }
390
+ convert => { "integer_wrong" => "boolean" }
391
+ convert => { "float_true" => "boolean" }
392
+ convert => { "float_false" => "boolean" }
393
+ convert => { "float_negative" => "boolean" }
394
+ convert => { "float_wrong" => "boolean" }
395
+ convert => { "float_wrong2" => "boolean" }
396
+ convert => { "array" => "boolean" }
397
+ convert => { "hash" => "boolean" }
387
398
  }
388
399
  }
389
400
  CONFIG
390
401
  event = {
391
- "true_field" => "true",
392
- "false_field" => "false",
393
- "true_upper" => "True",
394
- "false_upper" => "False",
395
- "true_one" => "1",
396
- "false_zero" => "0",
397
- "true_yes" => "yes",
398
- "false_no" => "no",
399
- "true_y" => "Y",
400
- "false_n" => "N",
401
- "wrong_field" => "none of the above"
402
+ "true_field" => "true",
403
+ "false_field" => "false",
404
+ "true_upper" => "True",
405
+ "false_upper" => "False",
406
+ "true_one" => "1",
407
+ "false_zero" => "0",
408
+ "true_yes" => "yes",
409
+ "false_no" => "no",
410
+ "true_y" => "Y",
411
+ "false_n" => "N",
412
+ "wrong_field" => "none of the above",
413
+ "integer_false" => 0,
414
+ "integer_true" => 1,
415
+ "integer_negative"=> -1,
416
+ "integer_wrong" => 2,
417
+ "float_true" => 1.0,
418
+ "float_false" => 0.0,
419
+ "float_negative" => -1.0,
420
+ "float_wrong" => 1.0123,
421
+ "float_wrong2" => 0.01,
422
+ "array" => [ "1", "0", 0,1,2],
423
+ "hash" => { "a" => 0 }
402
424
  }
403
425
  sample event do
404
- expect(subject.get("true_field") ).to eq(true)
405
- expect(subject.get("false_field")).to eq(false)
406
- expect(subject.get("true_upper") ).to eq(true)
407
- expect(subject.get("false_upper")).to eq(false)
408
- expect(subject.get("true_one") ).to eq(true)
409
- expect(subject.get("false_zero") ).to eq(false)
410
- expect(subject.get("true_yes") ).to eq(true)
411
- expect(subject.get("false_no") ).to eq(false)
412
- expect(subject.get("true_y") ).to eq(true)
413
- expect(subject.get("false_n") ).to eq(false)
414
- expect(subject.get("wrong_field")).to eq("none of the above")
426
+ expect(subject.get("true_field") ).to eq(true)
427
+ expect(subject.get("false_field") ).to eq(false)
428
+ expect(subject.get("true_upper") ).to eq(true)
429
+ expect(subject.get("false_upper") ).to eq(false)
430
+ expect(subject.get("true_one") ).to eq(true)
431
+ expect(subject.get("false_zero") ).to eq(false)
432
+ expect(subject.get("true_yes") ).to eq(true)
433
+ expect(subject.get("false_no") ).to eq(false)
434
+ expect(subject.get("true_y") ).to eq(true)
435
+ expect(subject.get("false_n") ).to eq(false)
436
+ expect(subject.get("wrong_field") ).to eq("none of the above")
437
+ expect(subject.get("integer_false") ).to eq(false)
438
+ expect(subject.get("integer_true") ).to eq(true)
439
+ expect(subject.get("integer_negative")).to eq(-1)
440
+ expect(subject.get("integer_wrong") ).to eq(2)
441
+ expect(subject.get("float_true") ).to eq(true)
442
+ expect(subject.get("float_false") ).to eq(false)
443
+ expect(subject.get("float_negative") ).to eq(-1.0)
444
+ expect(subject.get("float_wrong") ).to eq(1.0123)
445
+ expect(subject.get("float_wrong2") ).to eq(0.01)
446
+ expect(subject.get("array") ).to eq([true, false, false, true,2])
447
+ expect(subject.get("hash") ).to eq({ "a" => 0 })
415
448
  end
416
449
  end
417
450
 
@@ -487,7 +520,7 @@ describe LogStash::Filters::Mutate do
487
520
  end
488
521
  end
489
522
  end
490
-
523
+
491
524
 
492
525
  describe "convert to float_eu" do
493
526
  config <<-CONFIG
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-mutate
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.4
4
+ version: 3.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-19 00:00:00.000000000 Z
11
+ date: 2019-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement