logstash-filter-kv 2.0.6 → 2.0.7

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
  SHA1:
3
- metadata.gz: 748ca82a1d9a0b967e92a494e7ea1ce307fee1f5
4
- data.tar.gz: 0d64ccdbf5f4b00c231ded98b40d3a7a72877bb8
3
+ metadata.gz: 89fab778db6cbc596686f72f373c528ae84a92d5
4
+ data.tar.gz: 49a11f4d5b256a0ca5edc20d55708b5209065d8d
5
5
  SHA512:
6
- metadata.gz: 24ef76707e5e5ab5211a3cd25ea1cdea757bfba96d2c8291e67fc0124029ce22828b944f010254adca5b60c8eca6d394d30e16b601e8703c01cd2d280d7354e5
7
- data.tar.gz: bf90b0657aa8adb2edca85a11462bae35ccc026e9c1f8b8890f41fbee42e0433be1e21facc9a0cd510472b536ceeed38a0fad30f5c7b4ca3f80af26ac49a434c
6
+ metadata.gz: 4196694c4bd9ced68c2a538cce208c0cb72abcc1c301e4565f3b0253ebc3dc249daf5b109ea5a74a386688e2f4735430ca4748e921d63f09ee96546c9f5305ab
7
+ data.tar.gz: ec32f4fbd402c545f6a3d3177416eac8dbebd3e6768e41e4b9798af823a30fbae4393e474e1f81efcb975a91ca04c2ae9655b6fdb04c2e97d95e6a5cc3791bb4
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 2.0.7
2
+ - With include_brackets enabled, angle brackets (\< and \>) are treated the same as square brackets and parentheses, making it easy to parse strings like "a=\<b\> c=\<d\>".
3
+ - An empty value_split option value now gives a useful error message.
4
+
1
5
  # 2.0.6
2
6
  - Depend on logstash-core-plugin-api instead of logstash-core, removing the need to mass update plugins on major releases of logstash
3
7
  # 2.0.5
@@ -87,7 +87,7 @@ class LogStash::Filters::KV < LogStash::Filters::Base
87
87
  config :field_split, :validate => :string, :default => ' '
88
88
 
89
89
 
90
- # A string of characters to use as delimiters for identifying key-value relations.
90
+ # A non-empty string of characters to use as delimiters for identifying key-value relations.
91
91
  #
92
92
  # These characters form a regex character class and thus you must escape special regex
93
93
  # characters like `[` or `]` using `\`.
@@ -173,8 +173,8 @@ class LogStash::Filters::KV < LogStash::Filters::Base
173
173
  # }
174
174
  config :allow_duplicate_values, :validate => :boolean, :default => true
175
175
 
176
- # A boolean specifying whether to include brackets as value `wrappers`
177
- # (the default is true)
176
+ # A boolean specifying whether to treat square brackets, angle brackets,
177
+ # and parentheses as value "wrappers" that should be removed from the value.
178
178
  # [source,ruby]
179
179
  # filter {
180
180
  # kv {
@@ -183,17 +183,19 @@ class LogStash::Filters::KV < LogStash::Filters::Base
183
183
  # }
184
184
  #
185
185
  # For example, the result of this line:
186
- # `bracketsone=(hello world) bracketstwo=[hello world]`
186
+ # `bracketsone=(hello world) bracketstwo=[hello world] bracketsthree=<hello world>`
187
187
  #
188
188
  # will be:
189
189
  #
190
190
  # * bracketsone: hello world
191
191
  # * bracketstwo: hello world
192
+ # * bracketsthree: hello world
192
193
  #
193
194
  # instead of:
194
195
  #
195
196
  # * bracketsone: (hello
196
197
  # * bracketstwo: [hello
198
+ # * bracketsthree: <hello
197
199
  #
198
200
  config :include_brackets, :validate => :boolean, :default => true
199
201
 
@@ -212,11 +214,20 @@ class LogStash::Filters::KV < LogStash::Filters::Base
212
214
  config :recursive, :validate => :boolean, :default => false
213
215
 
214
216
  def register
217
+ if @value_split.empty?
218
+ raise LogStash::ConfigurationError, I18n.t(
219
+ "logstash.agent.configuration.invalid_plugin_register",
220
+ :plugin => "filter",
221
+ :type => "kv",
222
+ :error => "Configuration option 'value_split' must be a non-empty string"
223
+ )
224
+ end
225
+
215
226
  @trim_re = Regexp.new("[#{@trim}]") if @trim
216
227
  @trimkey_re = Regexp.new("[#{@trimkey}]") if @trimkey
217
228
 
218
229
  valueRxString = "(?:\"([^\"]+)\"|'([^']+)'"
219
- valueRxString += "|\\(([^\\)]+)\\)|\\[([^\\]]+)\\]" if @include_brackets
230
+ valueRxString += "|\\(([^\\)]+)\\)|\\[([^\\]]+)\\]|<([^>]+)>" if @include_brackets
220
231
  valueRxString += "|((?:\\\\ |[^" + @field_split + "])+))"
221
232
  @scan_re = Regexp.new("((?:\\\\ |[^" + @field_split + @value_split + "])+)\s*[" + @value_split + "]\s*" + valueRxString)
222
233
  @value_split_re = /[#{@value_split}]/
@@ -266,8 +277,8 @@ class LogStash::Filters::KV < LogStash::Filters::Base
266
277
  include_keys = @include_keys.map{|key| event.sprintf(key)}
267
278
  exclude_keys = @exclude_keys.map{|key| event.sprintf(key)}
268
279
 
269
- text.scan(@scan_re) do |key, v1, v2, v3, v4, v5|
270
- value = v1 || v2 || v3 || v4 || v5
280
+ text.scan(@scan_re) do |key, v1, v2, v3, v4, v5, v6|
281
+ value = v1 || v2 || v3 || v4 || v5 || v6
271
282
  key = @trimkey ? key.gsub(@trimkey_re, "") : key
272
283
 
273
284
  # Bail out as per the values of include_keys and exclude_keys
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-filter-kv'
4
- s.version = '2.0.6'
4
+ s.version = '2.0.7'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "This filter helps automatically parse messages (or specific event fields) which are of the 'foo=bar' variety."
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/plugin install gemname. This gem is not a stand-alone program"
@@ -14,7 +14,7 @@ describe LogStash::Filters::KV do
14
14
  }
15
15
  CONFIG
16
16
 
17
- sample "hello=world foo=bar baz=fizz doublequoted=\"hello world\" singlequoted='hello world' bracketsone=(hello world) bracketstwo=[hello world]" do
17
+ sample "hello=world foo=bar baz=fizz doublequoted=\"hello world\" singlequoted='hello world' bracketsone=(hello world) bracketstwo=[hello world] bracketsthree=<hello world>" do
18
18
  insist { subject["hello"] } == "world"
19
19
  insist { subject["foo"] } == "bar"
20
20
  insist { subject["baz"] } == "fizz"
@@ -22,6 +22,7 @@ describe LogStash::Filters::KV do
22
22
  insist { subject["singlequoted"] } == "hello world"
23
23
  insist { subject["bracketsone"] } == "hello world"
24
24
  insist { subject["bracketstwo"] } == "hello world"
25
+ insist { subject["bracketsthree"] } == "hello world"
25
26
  end
26
27
  end
27
28
 
@@ -629,4 +630,18 @@ describe LogStash::Filters::KV do
629
630
  end
630
631
  end
631
632
  end
633
+
634
+ describe "an empty value_split option should be reported" do
635
+ config <<-CONFIG
636
+ filter {
637
+ kv {
638
+ value_split => ""
639
+ }
640
+ }
641
+ CONFIG
642
+
643
+ sample("message" => "random message") do
644
+ insist { subject }.raises(LogStash::ConfigurationError)
645
+ end
646
+ end
632
647
  end
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-kv
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.6
4
+ version: 2.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-24 00:00:00.000000000 Z
11
+ date: 2016-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - "~>"
16
+ - - ~>
17
17
  - !ruby/object:Gem::Version
18
18
  version: '1.0'
19
19
  name: logstash-core-plugin-api
@@ -21,13 +21,13 @@ dependencies:
21
21
  type: :runtime
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
- - - ">="
30
+ - - '>='
31
31
  - !ruby/object:Gem::Version
32
32
  version: '0'
33
33
  name: logstash-devutils
@@ -35,7 +35,7 @@ dependencies:
35
35
  type: :development
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  description: This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program
@@ -65,17 +65,17 @@ require_paths:
65
65
  - lib
66
66
  required_ruby_version: !ruby/object:Gem::Requirement
67
67
  requirements:
68
- - - ">="
68
+ - - '>='
69
69
  - !ruby/object:Gem::Version
70
70
  version: '0'
71
71
  required_rubygems_version: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  requirements: []
77
77
  rubyforge_project:
78
- rubygems_version: 2.4.8
78
+ rubygems_version: 2.4.5
79
79
  signing_key:
80
80
  specification_version: 4
81
81
  summary: This filter helps automatically parse messages (or specific event fields) which are of the 'foo=bar' variety.