fluent-plugin-tagged_copy 0.0.1 → 0.0.2

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: 926a7eb28787523670d075f04e8fb1899e951942
4
- data.tar.gz: 117ede3f43ccf1c475b1e93ef2630d1bc55ab328
3
+ metadata.gz: 38965e064c26bb7bca4fffb45b46757f7afcad8e
4
+ data.tar.gz: 86ec877a8d1468b8d54c7a29b3db1069b8f57eaf
5
5
  SHA512:
6
- metadata.gz: d55aad021eadd884789bad83839df945a85a66bbf936c54e632544ea02edd70298f01a9fa1cd97f480cccd36659c27d3f5584cdd869fed942bb2905c7a5ea0e0
7
- data.tar.gz: 128b4977d657eba9473179b44b4c3c44919f6f7842b6d6769184a6d9358b35ee73bf2550244cd133cd408cbd03323e6b35a3e84eb35af86b58a40f57548b78fe
6
+ metadata.gz: dba9888630a6da2be2c48b18d1e186c137c681a555e4d0802a2de7eab7994a2d89dd55023c5cda8b70dc3e71e837e6e69f135c865631d68555eb2cb0c64df7cf
7
+ data.tar.gz: 4ced69264a506126ebb0bc8e697bfcf65818af4fca159fd8c66e8ff010b0d2ae792c1cc3e1669635be08fa47727a883c499ad3c5d24e4be473c35b5a2e868c2a
@@ -1,3 +1,10 @@
1
+ ## 0.0.2 (2014/04/12)
2
+
3
+ Enhancements:
4
+
5
+ * Add add_tag_suffix, and remove_tag_suffix options
6
+
1
7
  ## 0.0.1
2
8
 
3
9
  First version
10
+
data/README.md CHANGED
@@ -44,6 +44,14 @@ But, you can specify `filter` directive with following options
44
44
 
45
45
  Remove tag prefix for output message
46
46
 
47
+ * add_tag_suffix
48
+
49
+ Add tag suffix for output message
50
+
51
+ * remove_tag_suffix
52
+
53
+ Remove tag suffix for output message
54
+
47
55
  ## Contributing
48
56
 
49
57
  1. Fork it
@@ -3,12 +3,13 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "fluent-plugin-tagged_copy"
6
- s.version = "0.0.1"
6
+ s.version = "0.0.2"
7
7
  s.authors = ["Naotoshi Seo"]
8
8
  s.email = ["sonots@gmail.com"]
9
9
  s.homepage = "https://github.com/sonots/fluent-plugin-tagged_copy"
10
10
  s.summary = "Fluentd out_copy extension to do tagging before copy"
11
11
  s.description = s.summary
12
+ s.licenses = ["MIT"]
12
13
 
13
14
  s.rubyforge_project = "fluent-plugin-tagged_copy"
14
15
 
@@ -21,8 +21,13 @@ module Fluent
21
21
  log.debug "adding store type=#{type.dump}"
22
22
 
23
23
  f = e.elements.select {|i| i.name == 'filter'}.first || {}
24
- tag_proc = generate_tag_proc(f['tag'], f['add_tag_prefix'], f['remove_tag_prefix'])
25
- @tag_procs << tag_proc
24
+ @tag_procs << tag_proc(
25
+ f['tag'],
26
+ f['add_tag_prefix'],
27
+ f['remove_tag_prefix'],
28
+ f['add_tag_suffix'],
29
+ f['remove_tag_suffix']
30
+ )
26
31
 
27
32
  output = Plugin.new_output(type)
28
33
  output.configure(e)
@@ -49,25 +54,26 @@ module Fluent
49
54
 
50
55
  private
51
56
 
52
- def generate_tag_proc(tag, add_tag_prefix, remove_tag_prefix)
53
- tag_prefix = "#{add_tag_prefix}." if add_tag_prefix
54
- tag_prefix_match = "#{remove_tag_prefix}." if remove_tag_prefix
55
- if tag
56
- Proc.new {|t| tag }
57
- elsif tag_prefix and tag_prefix_match
58
- Proc.new {|t| "#{tag_prefix}#{lstrip(t, tag_prefix_match)}" }
57
+ def tag_proc(tag, add_tag_prefix, remove_tag_prefix, add_tag_suffix, remove_tag_suffix)
58
+ rstrip = Proc.new {|str, substr| str.chomp(substr) }
59
+ lstrip = Proc.new {|str, substr| str.start_with?(substr) ? str[substr.size..-1] : str }
60
+ tag_prefix = "#{rstrip.call(add_tag_prefix, '.')}." if add_tag_prefix
61
+ tag_suffix = ".#{lstrip.call(add_tag_suffix, '.')}" if add_tag_suffix
62
+ tag_prefix_match = "#{rstrip.call(remove_tag_prefix, '.')}." if remove_tag_prefix
63
+ tag_suffix_match = ".#{lstrip.call(remove_tag_suffix, '.')}" if remove_tag_suffix
64
+ tag_fixed = tag if tag
65
+ if tag_fixed
66
+ Proc.new {|tag| tag_fixed }
67
+ elsif tag_prefix_match and tag_suffix_match
68
+ Proc.new {|tag| "#{tag_prefix}#{rstrip.call(lstrip.call(tag, tag_prefix_match), tag_suffix_match)}#{tag_suffix}" }
59
69
  elsif tag_prefix_match
60
- Proc.new {|t| lstrip(t, tag_prefix_match) }
61
- elsif tag_prefix
62
- Proc.new {|t| "#{tag_prefix}#{t}" }
70
+ Proc.new {|tag| "#{tag_prefix}#{lstrip.call(tag, tag_prefix_match)}#{tag_suffix}" }
71
+ elsif tag_suffix_match
72
+ Proc.new {|tag| "#{tag_prefix}#{rstrip.call(tag, tag_suffix_match)}#{tag_suffix}" }
63
73
  else
64
- Proc.new {|t| t }
74
+ Proc.new {|tag| "#{tag_prefix}#{tag}#{tag_suffix}" }
65
75
  end
66
76
  end
67
-
68
- def lstrip(string, substring)
69
- string.index(substring) == 0 ? string[substring.size..-1] : string
70
- end
71
77
  end
72
78
 
73
79
  class TaggedOutputChain
@@ -278,4 +278,78 @@ class TaggedCopyOutputTest < Test::Unit::TestCase
278
278
  ['test', time, {"a"=>2}],
279
279
  ], second.emits
280
280
  end
281
+
282
+ def test_add_tag_suffix_emit
283
+ config = %[
284
+ <store>
285
+ <filter>
286
+ add_tag_suffix first
287
+ </filter>
288
+ type test
289
+ name c0
290
+ </store>
291
+ <store>
292
+ <filter>
293
+ add_tag_suffix second
294
+ </filter>
295
+ type test
296
+ name c0
297
+ </store>
298
+ ]
299
+ d = create_driver(config)
300
+
301
+ time = Time.parse("2011-01-02 13:14:15 UTC").to_i
302
+ d.emit({"a"=>1}, time)
303
+ d.emit({"a"=>2}, time)
304
+
305
+ first = d.instance.outputs.first
306
+ assert_equal [
307
+ ['test.first', time, {"a"=>1}],
308
+ ['test.first', time, {"a"=>2}],
309
+ ], first.emits
310
+
311
+ second = d.instance.outputs[1]
312
+ assert_equal [
313
+ ['test.second', time, {"a"=>1}],
314
+ ['test.second', time, {"a"=>2}],
315
+ ], second.emits
316
+ end
317
+
318
+ def test_remove_tag_suffix_emit
319
+ config = %[
320
+ <store>
321
+ <filter>
322
+ remove_tag_suffix first
323
+ </filter>
324
+ type test
325
+ name c0
326
+ </store>
327
+ <store>
328
+ <filter>
329
+ remove_tag_suffix second
330
+ </filter>
331
+ type test
332
+ name c0
333
+ </store>
334
+ ]
335
+ d = create_driver(config)
336
+
337
+ time = Time.parse("2011-01-02 13:14:15 UTC").to_i
338
+ d.tag = 'test.first'
339
+ d.emit({"a"=>1}, time)
340
+ d.tag = 'test.second'
341
+ d.emit({"a"=>2}, time)
342
+
343
+ first = d.instance.outputs.first
344
+ assert_equal [
345
+ ['test', time, {"a"=>1}],
346
+ ['test.second', time, {"a"=>2}],
347
+ ], first.emits
348
+
349
+ second = d.instance.outputs[1]
350
+ assert_equal [
351
+ ['test.first', time, {"a"=>1}],
352
+ ['test', time, {"a"=>2}],
353
+ ], second.emits
354
+ end
281
355
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-tagged_copy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Naotoshi Seo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-27 00:00:00.000000000 Z
11
+ date: 2014-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -85,7 +85,8 @@ files:
85
85
  - test/helper.rb
86
86
  - test/plugin/out_tagged_copy.rb
87
87
  homepage: https://github.com/sonots/fluent-plugin-tagged_copy
88
- licenses: []
88
+ licenses:
89
+ - MIT
89
90
  metadata: {}
90
91
  post_install_message:
91
92
  rdoc_options: []