fluent-plugin-record-modifier 2.1.0 → 2.2.0

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
  SHA256:
3
- metadata.gz: b7d9232d881589bfd365d2669fb26e8e57faadbcf3a7ced27dff2637bf017002
4
- data.tar.gz: c185b00755209331f684d868af17d6ce382294c321b7405c424182d9f4b28928
3
+ metadata.gz: 929d54c71c0ef86c544ed2797b68f8cb77439ae848ba10d1b95139a5141fa532
4
+ data.tar.gz: ff1966ae5435bdc0a013e375f5c6a7e25d05c3a0c31966637befe0edda4d2f4d
5
5
  SHA512:
6
- metadata.gz: 2b48f455cf36f6ed57492e77344462d4b9253b4c46068e6314c9da88f3b1b20a268c0c637306a28bc93d063f77427896f0bce2fd32568a9851458cc89a7d01c0
7
- data.tar.gz: dedbdf338fc5260fca9271c09af8a06ed00ab8866a7a65b12cd6aa400500272e570f4829b9700e893cc26223a5223e02d4081c27802b3d2cf9591b332b887d49
6
+ metadata.gz: efa42ddd9e8e6bbc02d69a81377356e47a44a02bdbcc18cfbbfa10cc043dd85f90127d92f359f827b6f72b5f5b27a4fb805723e17a55b89f9c11eef9c4ca2f33
7
+ data.tar.gz: ff225acaaa97faa6223d1fe266a1be717a457eb9941db840a080c1c0a89f57deceb50808351dee4a9028c1a7630997a680743a4041508987ed114c36ec8dad6f
@@ -0,0 +1,33 @@
1
+ name: linux
2
+ on:
3
+ - push
4
+ - pull_request
5
+ jobs:
6
+ build:
7
+ runs-on: ${{ matrix.os }}
8
+ continue-on-error: ${{ matrix.experimental }}
9
+ strategy:
10
+ fail-fast: false
11
+ matrix:
12
+ ruby: ['2.7', '3.0', '3.1', '3.2']
13
+ os:
14
+ - ubuntu-latest
15
+ experimental: [false]
16
+ include:
17
+ - ruby-version: head
18
+ os: ubuntu-latest
19
+ experimental: true
20
+
21
+ name: Ruby ${{ matrix.ruby }} unit testing on ${{ matrix.os }}
22
+ steps:
23
+ - uses: actions/checkout@v2
24
+ - uses: ruby/setup-ruby@v1
25
+ with:
26
+ ruby-version: ${{ matrix.ruby }}
27
+ - name: unit testing
28
+ env:
29
+ CI: true
30
+ run: |
31
+ gem install bundler rake
32
+ bundle install --jobs 4 --retry 3
33
+ bundle exec rake test
data/ChangeLog CHANGED
@@ -1,3 +1,8 @@
1
+ Release 2.1.1 - 2022/08/25
2
+
3
+ * Improve whitelist_keys performance
4
+ * Fix documentation for named capture references
5
+
1
6
  Release 2.1.0 - 2019/12/18
2
7
 
3
8
  * Add <record> keys to whitelist_keys
data/README.md CHANGED
@@ -124,6 +124,8 @@ then you got new record like below:
124
124
  {"key3":"bar"}
125
125
  ```
126
126
 
127
+ Since v2.2.0, `remove_keys` supports nested key delete via [`record_accessor` syntax](https://docs.fluentd.org/plugin-helper-overview/api-plugin-helper-record_accessor).
128
+
127
129
  ### whitelist_keys
128
130
 
129
131
  If you want to handle the set of explicitly specified keys, you can use `whitelist_keys` of this plugin. It's exclusive with `remove_keys`.
@@ -164,7 +166,7 @@ If you want to replace specific value for keys you can use `replace` section.
164
166
  # your regexp
165
167
  expression /^(?<start>.+).{2}(?<end>.+)$/
166
168
  # replace string
167
- replace \\k<start>ors\\k<end>
169
+ replace \k<start>ors\k<end>
168
170
  </replace>
169
171
  # replace key key2
170
172
  <replace>
@@ -173,7 +175,7 @@ If you want to replace specific value for keys you can use `replace` section.
173
175
  # your regexp
174
176
  expression /^(.{1}).{2}(.{1})$/
175
177
  # replace string
176
- replace \\1ors\\2
178
+ replace \1ors\2
177
179
  </replace>
178
180
  </filter>
179
181
  ```
@@ -202,7 +204,7 @@ If you need own complex logic in filter, writing filter plugin is better. But if
202
204
  <record>
203
205
  _dummy_ ${if record.has_key?('foo'); record['bar'] = 'Hi!'; end; nil}
204
206
  </record>
205
- </filter>}
207
+ </filter>
206
208
  ```
207
209
 
208
210
  ### record_modifier output
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.0
1
+ 2.2.0
@@ -16,7 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
17
  gem.require_paths = ['lib']
18
18
 
19
- gem.add_dependency "fluentd", [">= 1.0", "< 2"]
19
+ gem.add_dependency "fluentd", [">= 1.1", "< 2"]
20
20
  gem.add_development_dependency "rake", ">= 0.9.2"
21
- gem.add_development_dependency("test-unit", ["~> 3.1.4"])
21
+ gem.add_development_dependency("test-unit", ["~> 3.4.0"])
22
22
  end
@@ -4,6 +4,8 @@ module Fluent
4
4
  class Plugin::RecordModifierFilter < Plugin::Filter
5
5
  Fluent::Plugin.register_filter('record_modifier', self)
6
6
 
7
+ helpers :record_accessor
8
+
7
9
  config_param :prepare_value, :string, default: nil,
8
10
  desc: <<-DESC
9
11
  Prepare values for filtering in configure phase. Prepared values can be used in <record>.
@@ -17,7 +19,7 @@ e.g. handling char encoding correctly.
17
19
  In more detail, please refer this section:
18
20
  https://github.com/repeatedly/fluent-plugin-record-modifier#char_encoding.
19
21
  DESC
20
- config_param :remove_keys, :string, default: nil,
22
+ config_param :remove_keys, :array, default: nil,
21
23
  desc: <<-DESC
22
24
  The logs include needless record keys in some cases.
23
25
  You can remove it by using `remove_keys` parameter.
@@ -80,7 +82,9 @@ DESC
80
82
  if @remove_keys and @whitelist_keys
81
83
  raise Fluent::ConfigError, "remove_keys and whitelist_keys are exclusive with each other."
82
84
  elsif @remove_keys
83
- @remove_keys = @remove_keys.split(',').map(&:strip)
85
+ @remove_keys = @remove_keys.map { |key|
86
+ record_accessor_create(key)
87
+ }
84
88
  elsif @whitelist_keys
85
89
  @whitelist_keys = @whitelist_keys.split(',').map(&:strip)
86
90
  @whitelist_keys.concat(@map.keys).uniq!
@@ -98,13 +102,13 @@ DESC
98
102
  }
99
103
 
100
104
  if @remove_keys
101
- @remove_keys.each { |v|
102
- record.delete(v)
105
+ @remove_keys.each { |ra|
106
+ ra.delete(record)
103
107
  }
104
108
  elsif @whitelist_keys
105
109
  modified = {}
106
- record.each do |k, v|
107
- modified[k] = v if @whitelist_keys.include?(k)
110
+ @whitelist_keys.each do |key|
111
+ modified[key] = record[key] if record.has_key?(key)
108
112
  end
109
113
  record = modified
110
114
  end
@@ -138,8 +138,8 @@ DESC
138
138
  }
139
139
  elsif @whitelist_keys
140
140
  modified = {}
141
- record.each do |k, v|
142
- modified[k] = v if @whitelist_keys.include?(k)
141
+ @whitelist_keys.each do |key|
142
+ modified[key] = record[key] if record.has_key?(key)
143
143
  end
144
144
  record = modified
145
145
  end
@@ -114,6 +114,18 @@ class RecordModifierFilterTest < Test::Unit::TestCase
114
114
  assert_equal [{"k4" => 'v'}], d.filtered.map { |e| e.last }
115
115
  end
116
116
 
117
+ def test_remove_nested_keys
118
+ d = create_driver %[
119
+ remove_keys k1, $.kubernetes.test
120
+ ]
121
+
122
+ d.run(default_tag: @tag) do
123
+ d.feed("k1" => 'v', "kubernetes" => {"test" => 'v', "prod" => 'v'}, "k2" => 'v')
124
+ end
125
+
126
+ assert_equal [{"kubernetes" => {"prod" => 'v'}, "k2" => 'v'}], d.filtered.map { |e| e.last }
127
+ end
128
+
117
129
  def test_remove_non_whitelist_keys
118
130
  d = create_driver %[
119
131
  <record>
@@ -145,18 +157,18 @@ class RecordModifierFilterTest < Test::Unit::TestCase
145
157
  end
146
158
 
147
159
  def test_replace_values
148
- d = create_driver %[
160
+ d = create_driver <<'CONFIG'
149
161
  <replace>
150
162
  key k1
151
163
  expression /^(?<start>.+).{2}(?<end>.+)$/
152
- replace \\k<start>ors\\k<end>
164
+ replace \k<start>ors\k<end>
153
165
  </replace>
154
166
  <replace>
155
167
  key k2
156
168
  expression /^(.{1}).{2}(.{1})$/
157
- replace \\1ors\\2
169
+ replace \1ors\2
158
170
  </replace>
159
- ]
171
+ CONFIG
160
172
 
161
173
  d.run(default_tag: @tag) do
162
174
  d.feed("k1" => 'hoge', "k2" => 'hoge', "k3" => 'bar')
@@ -166,13 +178,13 @@ class RecordModifierFilterTest < Test::Unit::TestCase
166
178
  end
167
179
 
168
180
  def test_does_not_replace
169
- d = create_driver %[
181
+ d = create_driver <<'CONFIG'
170
182
  <replace>
171
183
  key k1
172
184
  expression /^(?<start>.+).{2}(?<end>.+)$/
173
- replace \\k<start>ors\\k<end>
185
+ replace \k<start>ors\k<end>
174
186
  </replace>
175
- ]
187
+ CONFIG
176
188
 
177
189
  d.run(default_tag: @tag) do
178
190
  d.feed("k1" => 'hog')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-record-modifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masahiro Nakagawa
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-18 00:00:00.000000000 Z
11
+ date: 2023-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.0'
19
+ version: '1.1'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '2'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '1.0'
29
+ version: '1.1'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '2'
@@ -50,20 +50,21 @@ dependencies:
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: 3.1.4
53
+ version: 3.4.0
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: 3.1.4
60
+ version: 3.4.0
61
61
  description: Filter plugin for modifying event record
62
62
  email: repeatedly@gmail.com
63
63
  executables: []
64
64
  extensions: []
65
65
  extra_rdoc_files: []
66
66
  files:
67
+ - ".github/workflows/linux.yml"
67
68
  - ".travis.yml"
68
69
  - ChangeLog
69
70
  - Gemfile
@@ -79,7 +80,7 @@ homepage: https://github.com/repeatedly/fluent-plugin-record-modifier
79
80
  licenses:
80
81
  - MIT
81
82
  metadata: {}
82
- post_install_message:
83
+ post_install_message:
83
84
  rdoc_options: []
84
85
  require_paths:
85
86
  - lib
@@ -94,8 +95,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
95
  - !ruby/object:Gem::Version
95
96
  version: '0'
96
97
  requirements: []
97
- rubygems_version: 3.0.3
98
- signing_key:
98
+ rubygems_version: 3.4.1
99
+ signing_key:
99
100
  specification_version: 4
100
101
  summary: Filter plugin for modifying event record
101
102
  test_files: