fluent-plugin-tagged_copy 0.0.1 → 0.0.2

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
  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: []