fluent-plugin-record-modifier 1.0.0.rc1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog +3 -1
- data/README.md +14 -0
- data/VERSION +1 -1
- data/lib/fluent/plugin/filter_record_modifier.rb +14 -2
- data/test/test_filter_record_modifier.rb +34 -11
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a15e658406cf52a460a2a6edbb1a1337f71b7b4
|
4
|
+
data.tar.gz: b7993b3cb32177eb7db0aa36fd3eafd7679adb8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b482529449bdeff97e0629d896781ac6c8c97f6f26c2f07355e220686ef08bc3e8534f64c98ebfc9c3ca36c8845d98322b81b14032604f8cdb4fcf03ef9d0625
|
7
|
+
data.tar.gz: 7e331024d5c7533a2b6a73cf64bcce452fabcd6279f84202449172be7030aa43cd827e336b20829e9ec6c669c8bbe39e45cbec633bae93ef4a62df77fa856039
|
data/ChangeLog
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
-
Release 1.0.0
|
1
|
+
Release 1.0.0 - 2017/12/12
|
2
2
|
|
3
3
|
* Use v0.14 API
|
4
4
|
https://github.com/repeatedly/fluent-plugin-record-modifier/pull/14
|
5
|
+
* Support frozen object
|
6
|
+
https://github.com/repeatedly/fluent-plugin-record-modifier/pull/26
|
5
7
|
|
6
8
|
Release 0.5.0 - 2016/08/23
|
7
9
|
|
data/README.md
CHANGED
@@ -136,6 +136,20 @@ then you got new record like below:
|
|
136
136
|
{"key1":"hoge", "key2":"foo"}
|
137
137
|
```
|
138
138
|
|
139
|
+
### Ruby code trick for complex logic
|
140
|
+
|
141
|
+
If you need own complex logic in filter, writing filter plugin is better. But if you don't want to write new plugin, you can use temporal key trick like below:
|
142
|
+
|
143
|
+
```
|
144
|
+
<filter reform.**>
|
145
|
+
@type record_modifier
|
146
|
+
remove_keys _dummy_
|
147
|
+
<record>
|
148
|
+
_dummy_ ${if record.has_key?('foo'); record['bar'] = 'Hi!'; end; nil}
|
149
|
+
</record>
|
150
|
+
</filter>}
|
151
|
+
```
|
152
|
+
|
139
153
|
### record_modifier output
|
140
154
|
|
141
155
|
In v0.10, you can use `record_modifier` output to emulate filter. `record_modifier` output doesn't support `<record>` way.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.0
|
1
|
+
1.0.0
|
@@ -113,7 +113,13 @@ DESC
|
|
113
113
|
if value.is_a?(String)
|
114
114
|
value.force_encoding(@from_enc)
|
115
115
|
elsif value.is_a?(Hash)
|
116
|
-
value.each_pair { |k, v|
|
116
|
+
value.each_pair { |k, v|
|
117
|
+
if v.frozen?
|
118
|
+
value[k] = set_encoding(v.dup)
|
119
|
+
else
|
120
|
+
set_encoding(v)
|
121
|
+
end
|
122
|
+
}
|
117
123
|
elsif value.is_a?(Array)
|
118
124
|
value.each { |v| set_encoding(v) }
|
119
125
|
end
|
@@ -124,7 +130,13 @@ DESC
|
|
124
130
|
value.force_encoding(@from_enc) if value.encoding == Encoding::BINARY
|
125
131
|
value.encode!(@to_enc, @from_enc, :invalid => :replace, :undef => :replace)
|
126
132
|
elsif value.is_a?(Hash)
|
127
|
-
value.each_pair { |k, v|
|
133
|
+
value.each_pair { |k, v|
|
134
|
+
if v.frozen?
|
135
|
+
value[k] = convert_encoding(v.dup)
|
136
|
+
else
|
137
|
+
convert_encoding(v)
|
138
|
+
end
|
139
|
+
}
|
128
140
|
elsif value.is_a?(Array)
|
129
141
|
value.each { |v| convert_encoding(v) }
|
130
142
|
end
|
@@ -11,7 +11,6 @@ class RecordModifierFilterTest < Test::Unit::TestCase
|
|
11
11
|
end
|
12
12
|
|
13
13
|
CONFIG = %q!
|
14
|
-
type record_modifier
|
15
14
|
remove_keys hoge
|
16
15
|
|
17
16
|
<record>
|
@@ -57,8 +56,6 @@ class RecordModifierFilterTest < Test::Unit::TestCase
|
|
57
56
|
|
58
57
|
def test_set_char_encoding
|
59
58
|
d = create_driver %[
|
60
|
-
type record_modifier
|
61
|
-
|
62
59
|
char_encoding utf-8
|
63
60
|
]
|
64
61
|
|
@@ -77,8 +74,6 @@ class RecordModifierFilterTest < Test::Unit::TestCase
|
|
77
74
|
|
78
75
|
def test_convert_char_encoding
|
79
76
|
d = create_driver %[
|
80
|
-
type record_modifier
|
81
|
-
|
82
77
|
char_encoding utf-8:cp932
|
83
78
|
]
|
84
79
|
|
@@ -97,8 +92,6 @@ class RecordModifierFilterTest < Test::Unit::TestCase
|
|
97
92
|
|
98
93
|
def test_remove_one_key
|
99
94
|
d = create_driver %[
|
100
|
-
type record_modifier
|
101
|
-
|
102
95
|
remove_keys k1
|
103
96
|
]
|
104
97
|
|
@@ -111,8 +104,6 @@ class RecordModifierFilterTest < Test::Unit::TestCase
|
|
111
104
|
|
112
105
|
def test_remove_multiple_keys
|
113
106
|
d = create_driver %[
|
114
|
-
type record_modifier
|
115
|
-
|
116
107
|
remove_keys k1, k2, k3
|
117
108
|
]
|
118
109
|
|
@@ -125,8 +116,6 @@ class RecordModifierFilterTest < Test::Unit::TestCase
|
|
125
116
|
|
126
117
|
def test_remove_non_whitelist_keys
|
127
118
|
d = create_driver %[
|
128
|
-
type record_modifier
|
129
|
-
|
130
119
|
whitelist_keys k1, k2, k3
|
131
120
|
]
|
132
121
|
|
@@ -136,4 +125,38 @@ class RecordModifierFilterTest < Test::Unit::TestCase
|
|
136
125
|
|
137
126
|
assert_equal [{"k1" => 'v', "k2" => 'v'}], d.filtered.map(&:last)
|
138
127
|
end
|
128
|
+
|
129
|
+
sub_test_case 'frozen check' do
|
130
|
+
def test_set_char_encoding
|
131
|
+
d = create_driver %[
|
132
|
+
char_encoding utf-8
|
133
|
+
]
|
134
|
+
|
135
|
+
d.run(default_tag: @tag) do
|
136
|
+
d.feed("k" => 'v'.force_encoding('BINARY').freeze)
|
137
|
+
d.feed("k" => {"l" => 'v'.force_encoding('BINARY').freeze})
|
138
|
+
end
|
139
|
+
|
140
|
+
assert_equal [
|
141
|
+
{"k" => 'v'.force_encoding('UTF-8')},
|
142
|
+
{"k" => {"l" => 'v'.force_encoding('UTF-8')}},
|
143
|
+
], d.filtered.map { |e| e.last }
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_convert_char_encoding
|
147
|
+
d = create_driver %[
|
148
|
+
char_encoding utf-8:cp932
|
149
|
+
]
|
150
|
+
|
151
|
+
d.run(default_tag: @tag) do
|
152
|
+
d.feed("k" => 'v'.force_encoding('utf-8').freeze)
|
153
|
+
d.feed("k" => {"l" => 'v'.force_encoding('utf-8').freeze})
|
154
|
+
end
|
155
|
+
|
156
|
+
assert_equal [
|
157
|
+
{"k" => 'v'.force_encoding('cp932')},
|
158
|
+
{"k" => {"l" => 'v'.force_encoding('cp932')}},
|
159
|
+
], d.filtered.map { |e| e.last }
|
160
|
+
end
|
161
|
+
end
|
139
162
|
end
|
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: 1.0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masahiro Nakagawa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -90,12 +90,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
90
90
|
version: '0'
|
91
91
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
|
-
- - "
|
93
|
+
- - ">="
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version:
|
95
|
+
version: '0'
|
96
96
|
requirements: []
|
97
97
|
rubyforge_project:
|
98
|
-
rubygems_version: 2.6.
|
98
|
+
rubygems_version: 2.6.13
|
99
99
|
signing_key:
|
100
100
|
specification_version: 4
|
101
101
|
summary: Filter plugin for modifying event record
|