fluent-plugin-config-expander 0.2.1 → 1.0.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
  SHA1:
3
- metadata.gz: 6b7eccf9f3a0d3b56837e0fec4a558463d5e807c
4
- data.tar.gz: 371c9510751723c5f95586f612a5bbb19c5a1fac
3
+ metadata.gz: f027aae70a497c28fe302e764006f38d4a63b9c9
4
+ data.tar.gz: a921f29a8cf2689cd975d69bbb728112dac7b97b
5
5
  SHA512:
6
- metadata.gz: 6955d0fa408b21455f66d265b3177bd51979ce9125488db89b529933298daaa2c528a6530c8bbb0fc4341560baa484fcb44db3534d171f90804b33b48de99259
7
- data.tar.gz: eb0f0b181ed65b6f6111ad01460985b8a146c62080517536938ec5e5a07325d105af0aee9be6d4f902ff0be58f6cabe69673b740920a5f246845f071a1c39a3a
6
+ metadata.gz: 84b3bd584a5378fbaa9a48e2364d6a1b280d93ad248c68c127fd4b9151781526d5a2bfebd8121e87333d0cc80a1e32fbaf09c74f9e213d81b722beaa631b0174
7
+ data.tar.gz: 7d5adde5590ab2c3b18c6221390cb281585d29434daf8b06ca899151f0825268700d8df4e6b58a96ef09bd5ab1f65a8dc4f0dfc1f259e3661921ed9f2dc9d821
@@ -1,9 +1,9 @@
1
1
  language: ruby
2
2
  sudo: false
3
3
  rvm:
4
- - 2.0.0
5
4
  - 2.1
6
5
  - 2.2
7
- - 2.3.0
6
+ - 2.3.3
7
+ - 2.4.0
8
8
  before_install:
9
9
  - gem update bundler
data/README.md CHANGED
@@ -4,15 +4,15 @@ This is a plugin for [Fluentd](http://fluentd.org).
4
4
 
5
5
  ## ConfigExpanderInput, ConfigExpanderOutput
6
6
 
7
- ConfigExpanderInput and ConfigExpanderOutput plugins provide simple configuration template to write items repeatedly.
8
- In <config> section, you can write actual configuration for actual input/output plugin, with special directives for loop controls.
7
+ ConfigExpanderInput, ConfigExpanderFilter and ConfigExpanderOutput plugins provide simple configuration template to write items repeatedly.
8
+ In <config> section, you can write actual configuration for actual input/filter/output plugin, with special directives for loop controls.
9
9
 
10
10
  And also supports built-in placeholders below:
11
11
  * hostname (ex: \_\_HOSTNAME\_\_, \_\_hostname\_\_, ${hostname}, ${HOSTNAME})
12
12
 
13
13
  ## Configuration
14
14
 
15
- For both of input and output (for <source> and <match>), you can use 'config_expander' and its 'for' directive like below:
15
+ For all of input, filter and output (for <source>, <filter> and <match>), you can use 'config_expander' and its 'for' directive like below:
16
16
 
17
17
  <match example.**>
18
18
  @type config_expander
@@ -87,6 +87,7 @@ Set hostname into tag in 'tail' input plugin:
87
87
  @type config_expander
88
88
  <config>
89
89
  @type tail
90
+ @label @access_events
90
91
  format /..../
91
92
  path /var/log/access.log
92
93
  tag access.log.${hostname}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = "fluent-plugin-config-expander"
5
- gem.version = "0.2.1"
5
+ gem.version = "1.0.0"
6
6
  gem.authors = ["TAGOMORI Satoshi"]
7
7
  gem.email = ["tagomoris@gmail.com"]
8
8
  gem.description = %q{This plugin provides directives for loop extraction}
@@ -15,7 +15,7 @@ Gem::Specification.new do |gem|
15
15
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
16
16
  gem.require_paths = ["lib"]
17
17
 
18
- gem.add_runtime_dependency "fluentd", "< 0.14.0"
18
+ gem.add_runtime_dependency "fluentd", ">= 0.14.0"
19
19
  gem.add_development_dependency "rake"
20
20
  gem.add_development_dependency "test-unit", "~> 3.1"
21
21
  end
@@ -2,13 +2,13 @@ require 'fluent/config'
2
2
 
3
3
  module Fluent::Config::Expander
4
4
  def self.replace(str, mapping)
5
- mapping.reduce(str){|r,p| r.gsub(p[0], p[1])}
5
+ mapping.reduce(str){|r, pair| r.gsub(pair[0], pair[1])}
6
6
  end
7
7
 
8
8
  def self.expand(element, mapping)
9
9
  name = replace(element.name, mapping)
10
10
  arg = replace(element.arg, mapping)
11
- attrs = element.reduce({}){|r,p| r[replace(p.first, mapping)] = replace(p.last, mapping); r}
11
+ attrs = element.reduce({}){|r, pair| r[replace(pair[0], mapping)] = replace(pair[1], mapping); r}
12
12
  elements = []
13
13
  element.elements.each do |e|
14
14
  if e.name == 'for'
@@ -0,0 +1,50 @@
1
+ require 'fluent/plugin/filter'
2
+
3
+ require_relative 'expander'
4
+ require 'forwardable'
5
+ require 'socket'
6
+
7
+ class Fluent::Plugin::ConfigExpanderFilter < Fluent::Plugin::Filter
8
+ Fluent::Plugin.register_input('config_expander', self)
9
+
10
+ config_param :hostname, :string, default: Socket.gethostname
11
+ config_section :config, multi: false, required: true, param_name: :config_config do
12
+ # to raise configuration error for missing section
13
+ end
14
+
15
+ def mark_used(conf)
16
+ conf.keys.each {|key| conf[key] } # to suppress unread configuration warning
17
+ conf.elements.each{|e| mark_used(e)}
18
+ end
19
+
20
+ def builtin_mapping
21
+ {'__hostname__' => @hostname, '__HOSTNAME__' => @hostname, '${hostname}' => @hostname, '${HOSTNAME}' => @hostname}
22
+ end
23
+
24
+ def expand_config(conf)
25
+ ex = Fluent::Config::Expander.expand(conf, builtin_mapping())
26
+ ex.name = 'filter' # name/arg will be ignored by Plugin#configure, but anyway
27
+ ex.arg = conf.arg
28
+ ex
29
+ end
30
+
31
+ def configure(conf)
32
+ super
33
+
34
+ ex = expand_config(@config_config.corresponding_config_element)
35
+ type = ex['@type']
36
+ @plugin = Fluent::Plugin.new_input(type)
37
+ @plugin.context_router = self.event_emitter_router(conf['@label'])
38
+ @plugin.configure(ex)
39
+ mark_used(@config_config.corresponding_config_element)
40
+
41
+ self.extend SingleForwardable
42
+ override_methods = self.methods + @plugin.methods - SingleForwardable.instance_methods - Object.instance_methods
43
+ override_methods.uniq!
44
+ def_delegators(:@plugin, *override_methods)
45
+ end
46
+
47
+ def method_missing(name, *args, &block)
48
+ @plugin.__send__(name, *args, &block)
49
+ end
50
+ end
@@ -1,16 +1,17 @@
1
+ require 'fluent/plugin/input'
2
+
1
3
  require_relative 'expander'
4
+ require 'forwardable'
5
+ require 'socket'
2
6
 
3
- class Fluent::ConfigExpanderInput < Fluent::Input
7
+ class Fluent::Plugin::ConfigExpanderInput < Fluent::Plugin::Input
4
8
  Fluent::Plugin.register_input('config_expander', self)
5
9
 
6
- # Define `log` method for v0.10.42 or earlier
7
- unless method_defined?(:log)
8
- define_method("log") { $log }
10
+ config_param :hostname, :string, default: Socket.gethostname
11
+ config_section :config, multi: false, required: true, param_name: :config_config do
12
+ # to raise configuration error for missing section
9
13
  end
10
14
 
11
- config_param :hostname, :string, :default => `hostname`.chomp
12
- attr_accessor :plugin
13
-
14
15
  def mark_used(conf)
15
16
  conf.keys.each {|key| conf[key] } # to suppress unread configuration warning
16
17
  conf.elements.each{|e| mark_used(e)}
@@ -22,31 +23,28 @@ class Fluent::ConfigExpanderInput < Fluent::Input
22
23
 
23
24
  def expand_config(conf)
24
25
  ex = Fluent::Config::Expander.expand(conf, builtin_mapping())
25
- ex.name = ''
26
+ ex.name = 'source' # name/arg will be ignored by Plugin#configure, but anyway
26
27
  ex.arg = ''
27
28
  ex
28
29
  end
29
30
 
30
31
  def configure(conf)
31
32
  super
32
-
33
- configs = conf.elements.select{|e| e.name == 'config'}
34
- if configs.size != 1
35
- raise Fluent::ConfigError, "config_expander needs just one <config> ... </config> section"
36
- end
37
- ex = expand_config(configs.first)
38
- type = ex['@type'] || ex['type']
33
+
34
+ ex = expand_config(@config_config.corresponding_config_element)
35
+ type = ex['@type']
39
36
  @plugin = Fluent::Plugin.new_input(type)
37
+ @plugin.context_router = self.event_emitter_router(conf['@label'])
40
38
  @plugin.configure(ex)
39
+ mark_used(@config_config.corresponding_config_element)
41
40
 
42
- mark_used(configs.first)
43
- end
44
-
45
- def start
46
- @plugin.start
41
+ self.extend SingleForwardable
42
+ override_methods = self.methods + @plugin.methods - SingleForwardable.instance_methods - Object.instance_methods
43
+ override_methods.uniq!
44
+ def_delegators(:@plugin, *override_methods)
47
45
  end
48
46
 
49
- def shutdown
50
- @plugin.shutdown
47
+ def method_missing(name, *args, &block)
48
+ @plugin.__send__(name, *args, &block)
51
49
  end
52
50
  end
@@ -1,15 +1,18 @@
1
+ require 'fluent/plugin/bare_output'
2
+
1
3
  require_relative 'expander'
4
+ require 'forwardable'
5
+ require 'socket'
2
6
 
3
- class Fluent::ConfigExpanderOutput < Fluent::MultiOutput
7
+ class Fluent::Plugin::ConfigExpanderOutput < Fluent::Plugin::BareOutput
4
8
  Fluent::Plugin.register_output('config_expander', self)
5
9
 
6
- # Define `log` method for v0.10.42 or earlier
7
- unless method_defined?(:log)
8
- define_method("log") { $log }
9
- end
10
+ helpers :event_emitter
10
11
 
11
- config_param :hostname, :string, :default => `hostname`.chomp
12
- attr_accessor :plugin
12
+ config_param :hostname, :string, default: Socket.gethostname
13
+ config_section :config, multi: false, required: true, param_name: :config_config do
14
+ # to raise configuration error for missing section
15
+ end
13
16
 
14
17
  def mark_used(conf)
15
18
  conf.keys.each {|key| conf[key] } # to suppress unread configuration warning
@@ -22,39 +25,28 @@ class Fluent::ConfigExpanderOutput < Fluent::MultiOutput
22
25
 
23
26
  def expand_config(conf)
24
27
  ex = Fluent::Config::Expander.expand(conf, builtin_mapping())
25
- ex.name = ''
26
- ex.arg = ''
28
+ ex.name = 'match' # name/arg will be ignored by Plugin#configure, but anyway
29
+ ex.arg = conf.arg
27
30
  ex
28
31
  end
29
32
 
30
- attr_reader :outputs
31
-
32
33
  def configure(conf)
33
34
  super
34
35
 
35
- configs = conf.elements.select{|e| e.name == 'config'}
36
- if configs.size != 1
37
- raise Fluent::ConfigError, "config_expander needs just one <config> ... </config> section"
38
- end
39
- ex = expand_config(configs.first)
40
- type = ex['@type'] || ex['type']
36
+ ex = expand_config(@config_config.corresponding_config_element)
37
+ type = ex['@type']
41
38
  @plugin = Fluent::Plugin.new_output(type)
39
+ @plugin.context_router = self.event_emitter_router(conf['@label'])
42
40
  @plugin.configure(ex)
41
+ mark_used(@config_config.corresponding_config_element)
43
42
 
44
- @outputs = [@plugin]
45
-
46
- mark_used(configs.first)
47
- end
48
-
49
- def start
50
- @plugin.start
51
- end
52
-
53
- def shutdown
54
- @plugin.shutdown
43
+ self.extend SingleForwardable
44
+ override_methods = self.methods + @plugin.methods - SingleForwardable.instance_methods - Object.instance_methods
45
+ override_methods.uniq!
46
+ def_delegators(:@plugin, *override_methods)
55
47
  end
56
48
 
57
- def emit(tag, es, chain)
58
- @plugin.emit(tag, es, chain)
49
+ def method_missing(name, *args, &block)
50
+ @plugin.__send__(name, *args, &block)
59
51
  end
60
52
  end
@@ -12,7 +12,6 @@ require 'test/unit'
12
12
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
13
13
  $LOAD_PATH.unshift(File.dirname(__FILE__))
14
14
  require 'fluent/test'
15
- require 'fluent/input'
16
15
  unless ENV.has_key?('VERBOSE')
17
16
  nulllogger = Object.new
18
17
  nulllogger.instance_eval {|obj|
@@ -23,7 +22,13 @@ unless ENV.has_key?('VERBOSE')
23
22
  $log = nulllogger
24
23
  end
25
24
 
25
+ require 'fluent/test/driver/input'
26
+ require 'fluent/test/driver/filter'
27
+ require 'fluent/test/driver/base_owner' # for output (BareOutput)
28
+ require 'fluent/test/driver/event_feeder'
29
+
26
30
  require 'fluent/plugin/in_config_expander'
31
+ require 'fluent/plugin/filter_config_expander'
27
32
  require 'fluent/plugin/out_config_expander'
28
33
 
29
34
  class Test::Unit::TestCase
@@ -20,24 +20,24 @@ type config_expander
20
20
  ]
21
21
 
22
22
  def create_driver(conf=CONFIG)
23
- Fluent::Test::InputTestDriver.new(Fluent::ConfigExpanderInput).configure(conf)
23
+ Fluent::Test::Driver::Input.new(Fluent::Plugin::ConfigExpanderInput).configure(conf)
24
24
  end
25
25
 
26
26
  def test_configure
27
27
  d = create_driver
28
- assert_equal 'foobar', d.instance.plugin.tag
29
- assert_equal 3, d.instance.plugin.nodes.size
30
- assert_equal ['1','2','3'], d.instance.plugin.nodes.map{|n| n['attr1']}.sort
28
+ assert_equal 'foobar', d.instance.tag
29
+ assert_equal 3, d.instance.nodes.size
30
+ assert_equal ['1','2','3'], d.instance.nodes.map{|n| n.attr1 }.sort
31
31
 
32
- assert_equal false, d.instance.plugin.started
33
- assert_equal false, d.instance.plugin.stopped
32
+ assert_equal false, d.instance.started
33
+ assert_equal false, d.instance.stopped
34
34
 
35
35
  d.instance.start()
36
- assert_equal true, d.instance.plugin.started
37
- assert_equal false, d.instance.plugin.stopped
38
-
36
+ assert_equal true, d.instance.started
37
+ assert_equal false, d.instance.stopped
38
+
39
39
  d.instance.shutdown()
40
- assert_equal true, d.instance.plugin.stopped
40
+ assert_equal true, d.instance.stopped
41
41
  end
42
42
 
43
43
  CONFIG2 = %[
@@ -52,14 +52,14 @@ hostname testing.node.local
52
52
  attr3 __hostname__
53
53
  attr4 __HOSTNAME__
54
54
  </node>
55
+ </config>
55
56
  ]
56
57
  def test_configure_hostname
57
58
  d = create_driver CONFIG2
58
- assert_equal 1, d.instance.plugin.nodes.size
59
- assert_equal 'testing.node.local', d.instance.plugin.nodes.first['attr1']
60
- assert_equal 'testing.node.local', d.instance.plugin.nodes.first['attr2']
61
- assert_equal 'testing.node.local', d.instance.plugin.nodes.first['attr3']
62
- assert_equal 'testing.node.local', d.instance.plugin.nodes.first['attr4']
59
+ assert_equal 1, d.instance.nodes.size
60
+ assert_equal 'testing.node.local', d.instance.nodes.first.attr1
61
+ assert_equal 'testing.node.local', d.instance.nodes.first.attr2
62
+ assert_equal 'testing.node.local', d.instance.nodes.first.attr3
63
+ assert_equal 'testing.node.local', d.instance.nodes.first.attr4
63
64
  end
64
-
65
65
  end
@@ -18,25 +18,28 @@ type config_expander
18
18
  </for>
19
19
  </config>
20
20
  ]
21
- def create_driver(conf=CONFIG, tag='test.default')
22
- Fluent::Test::OutputTestDriver.new(Fluent::ConfigExpanderOutput, tag).configure(conf)
21
+
22
+ def create_driver(conf=CONFIG)
23
+ d = Fluent::Test::Driver::BaseOwner.new(Fluent::Plugin::ConfigExpanderOutput)
24
+ d.extend Fluent::Test::Driver::EventFeeder
25
+ d.configure(conf)
23
26
  end
24
27
 
25
28
  def test_configure
26
29
  d = create_driver
27
- assert_equal 'foobar', d.instance.plugin.tag
28
- assert_equal 3, d.instance.plugin.nodes.size
29
- assert_equal ['1','2','3'], d.instance.plugin.nodes.map{|n| n['attr1']}.sort
30
+ assert_equal 'foobar', d.instance.tag
31
+ assert_equal 3, d.instance.nodes.size
32
+ assert_equal ['1','2','3'], d.instance.nodes.map{|n| n.attr1 }.sort
30
33
 
31
- assert_equal false, d.instance.plugin.started
32
- assert_equal false, d.instance.plugin.stopped
34
+ assert_equal false, d.instance.started
35
+ assert_equal false, d.instance.stopped
33
36
 
34
37
  d.instance.start()
35
- assert_equal true, d.instance.plugin.started
36
- assert_equal false, d.instance.plugin.stopped
37
-
38
+ assert_equal true, d.instance.started
39
+ assert_equal false, d.instance.stopped
40
+
38
41
  d.instance.shutdown()
39
- assert_equal true, d.instance.plugin.stopped
42
+ assert_equal true, d.instance.stopped
40
43
  end
41
44
 
42
45
  CONFIG2 = %[
@@ -51,38 +54,38 @@ hostname testing.node.local
51
54
  attr3 __hostname__
52
55
  attr4 __HOSTNAME__
53
56
  </node>
57
+ </config>
54
58
  ]
55
59
  def test_configure_hostname
56
60
  d = create_driver CONFIG2
57
- assert_equal 1, d.instance.plugin.nodes.size
58
- assert_equal 'testing.node.local', d.instance.plugin.nodes.first['attr1']
59
- assert_equal 'testing.node.local', d.instance.plugin.nodes.first['attr2']
60
- assert_equal 'testing.node.local', d.instance.plugin.nodes.first['attr3']
61
- assert_equal 'testing.node.local', d.instance.plugin.nodes.first['attr4']
61
+ assert_equal 1, d.instance.nodes.size
62
+ assert_equal 'testing.node.local', d.instance.nodes.first.attr1
63
+ assert_equal 'testing.node.local', d.instance.nodes.first.attr2
64
+ assert_equal 'testing.node.local', d.instance.nodes.first.attr3
65
+ assert_equal 'testing.node.local', d.instance.nodes.first.attr4
62
66
  end
63
67
 
64
68
  def test_emit
65
69
  d = create_driver
66
- d.run do
67
- d.emit({'field' => 'value1'})
68
- d.emit({'field' => 'value2'})
69
- d.emit({'field' => 'value3'})
70
+ d.run(default_tag: 'test.default', expect_records: 3) do
71
+ d.feed({'field' => 'value1'})
72
+ d.feed({'field' => 'value2'})
73
+ d.feed({'field' => 'value3'})
70
74
  end
71
75
 
72
- emits = d.emits
73
- assert_equal 3, emits.size
76
+ events = d.events
77
+ assert_equal 3, events.size
74
78
 
75
- assert_equal 'foobar', emits[0][0]
76
- assert_equal 'value1', emits[0][2]['field']
77
- assert_equal 'expander', emits[0][2]['over']
79
+ assert_equal 'foobar', events[0][0]
80
+ assert_equal 'value1', events[0][2]['field']
81
+ assert_equal 'expander', events[0][2]['over']
78
82
 
79
- assert_equal 'foobar', emits[1][0]
80
- assert_equal 'value2', emits[1][2]['field']
81
- assert_equal 'expander', emits[1][2]['over']
83
+ assert_equal 'foobar', events[1][0]
84
+ assert_equal 'value2', events[1][2]['field']
85
+ assert_equal 'expander', events[1][2]['over']
82
86
 
83
- assert_equal 'foobar', emits[2][0]
84
- assert_equal 'value3', emits[2][2]['field']
85
- assert_equal 'expander', emits[2][2]['over']
87
+ assert_equal 'foobar', events[2][0]
88
+ assert_equal 'value3', events[2][2]['field']
89
+ assert_equal 'expander', events[2][2]['over']
86
90
  end
87
-
88
91
  end
@@ -1,17 +1,19 @@
1
- class Fluent::ConfigExpanderTestInput < Fluent::Input
1
+ require 'fluent/plugin/input'
2
+
3
+ class Fluent::Plugin::ConfigExpanderTestInput < Fluent::Plugin::Input
2
4
  Fluent::Plugin.register_input('config_expander_test', self)
3
5
 
4
6
  config_param :tag, :string
5
- attr_accessor :nodes
7
+ config_section :node, param_name: :nodes, multi: true do
8
+ config_param :attr1, :string, default: nil
9
+ config_param :attr2, :string, default: nil
10
+ config_param :attr3, :string, default: nil
11
+ config_param :attr4, :string, default: nil
12
+ end
6
13
  attr_accessor :started, :stopped
7
14
 
8
15
  def configure(conf)
9
16
  super
10
- @nodes = []
11
- conf.elements.each do |e|
12
- next if e.name != 'node'
13
- @nodes << {}.merge(e)
14
- end
15
17
  @started = @stopped = false
16
18
  end
17
19
  def start
@@ -19,25 +21,29 @@ class Fluent::ConfigExpanderTestInput < Fluent::Input
19
21
  @started = true
20
22
  end
21
23
  def shutdown
22
- super
23
24
  @stopped = true
25
+ super
24
26
  end
25
27
  end
26
28
 
27
- class Fluent::ConfigExpanderTestOutput < Fluent::Output
29
+ require 'fluent/plugin/output'
30
+
31
+ class Fluent::Plugin::ConfigExpanderTestOutput < Fluent::Plugin::Output
28
32
  Fluent::Plugin.register_output('config_expander_test', self)
29
33
 
34
+ helpers :event_emitter
35
+
30
36
  config_param :tag, :string
31
- attr_accessor :nodes
37
+ config_section :node, param_name: :nodes, multi: true do
38
+ config_param :attr1, :string, default: nil
39
+ config_param :attr2, :string, default: nil
40
+ config_param :attr3, :string, default: nil
41
+ config_param :attr4, :string, default: nil
42
+ end
32
43
  attr_accessor :started, :stopped
33
44
 
34
45
  def configure(conf)
35
46
  super
36
- @nodes = []
37
- conf.elements.each do |e|
38
- next if e.name != 'node'
39
- @nodes << {}.merge(e)
40
- end
41
47
  @started = @stopped = false
42
48
  end
43
49
  def start
@@ -45,19 +51,13 @@ class Fluent::ConfigExpanderTestOutput < Fluent::Output
45
51
  @started = true
46
52
  end
47
53
  def shutdown
48
- super
49
54
  @stopped = true
55
+ super
50
56
  end
51
57
 
52
- # Define `router` method of v0.12 to support v0.10 or earlier
53
- unless method_defined?(:router)
54
- define_method("router") { Fluent::Engine }
55
- end
56
-
57
- def emit(tag, es, chain)
58
+ def process(tag, es)
58
59
  es.each do |time, record|
59
60
  router.emit(@tag, time, record.merge({'over' => 'expander'}))
60
61
  end
61
- chain.next
62
62
  end
63
63
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-config-expander
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - TAGOMORI Satoshi
@@ -14,14 +14,14 @@ dependencies:
14
14
  name: fluentd
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "<"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.14.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "<"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.14.0
27
27
  - !ruby/object:Gem::Dependency
@@ -67,6 +67,7 @@ files:
67
67
  - Rakefile
68
68
  - fluent-plugin-config-expander.gemspec
69
69
  - lib/fluent/plugin/expander.rb
70
+ - lib/fluent/plugin/filter_config_expander.rb
70
71
  - lib/fluent/plugin/in_config_expander.rb
71
72
  - lib/fluent/plugin/out_config_expander.rb
72
73
  - test/helper.rb