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 +4 -4
- data/.github/workflows/linux.yml +33 -0
- data/ChangeLog +5 -0
- data/README.md +5 -3
- data/VERSION +1 -1
- data/fluent-plugin-record-modifier.gemspec +2 -2
- data/lib/fluent/plugin/filter_record_modifier.rb +10 -6
- data/lib/fluent/plugin/out_record_modifier.rb +2 -2
- data/test/test_filter_record_modifier.rb +19 -7
- metadata +11 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 929d54c71c0ef86c544ed2797b68f8cb77439ae848ba10d1b95139a5141fa532
|
|
4
|
+
data.tar.gz: ff1966ae5435bdc0a013e375f5c6a7e25d05c3a0c31966637befe0edda4d2f4d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
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
|
|
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
|
|
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
|
+
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.
|
|
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.
|
|
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, :
|
|
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.
|
|
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 { |
|
|
102
|
-
|
|
105
|
+
@remove_keys.each { |ra|
|
|
106
|
+
ra.delete(record)
|
|
103
107
|
}
|
|
104
108
|
elsif @whitelist_keys
|
|
105
109
|
modified = {}
|
|
106
|
-
|
|
107
|
-
modified[
|
|
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
|
-
|
|
142
|
-
modified[
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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:
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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:
|