fluent-plugin-record-modifier 2.1.0 → 2.2.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: 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: