fluent-mixin-config-placeholders 0.2.3 → 0.2.4
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 +7 -0
- data/.travis.yml +4 -0
- data/fluent-mixin-config-placeholders.gemspec +3 -1
- data/lib/fluent/mixin/config_placeholders.rb +14 -2
- data/test/mixin/test_config_placeholders.rb +51 -3
- data/test/plugin.rb +17 -0
- metadata +29 -18
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7cf47545aa0315f25907042c77498e98fed3b4a9
|
4
|
+
data.tar.gz: b5f57c7a7781cfa19b654c3e7e144bb48473908e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5f0e041fb2cb87f82c98944ed033842ffbefd6ce16073ba55843e1c2f3b15550c4001d3158416b226de5ba42bbe41fc7cf40b502c20666781882da735c22f413
|
7
|
+
data.tar.gz: 4176165b3c8645705be7e46ce6b34b391aae31d45eae9d152e715e4969b61faf4531a1dbb6216fb21bac8ee06b336bdad28956b913e462768fa7766331c05bd1
|
data/.travis.yml
ADDED
@@ -1,12 +1,13 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
Gem::Specification.new do |gem|
|
3
3
|
gem.name = "fluent-mixin-config-placeholders"
|
4
|
-
gem.version = "0.2.
|
4
|
+
gem.version = "0.2.4"
|
5
5
|
gem.authors = ["TAGOMORI Satoshi"]
|
6
6
|
gem.email = ["tagomoris@gmail.com"]
|
7
7
|
gem.description = %q{to add various placeholders for plugin configurations}
|
8
8
|
gem.summary = %q{Configuration syntax extension mixin for fluentd plugin}
|
9
9
|
gem.homepage = "https://github.com/tagomoris/fluent-mixin-config-placeholders"
|
10
|
+
gem.license = "APLv2"
|
10
11
|
|
11
12
|
gem.files = `git ls-files`.split($\)
|
12
13
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
@@ -15,4 +16,5 @@ Gem::Specification.new do |gem|
|
|
15
16
|
|
16
17
|
gem.add_runtime_dependency "fluentd"
|
17
18
|
gem.add_runtime_dependency "uuidtools"
|
19
|
+
gem.add_development_dependency "rake"
|
18
20
|
end
|
@@ -38,9 +38,21 @@ module Fluent
|
|
38
38
|
map.reduce(value){|r,p| r.gsub(p[0], p[1].call())}
|
39
39
|
end
|
40
40
|
|
41
|
+
def has_replace_pattern?(value)
|
42
|
+
value =~ /\$\{(?:hostname|uuid:[a-z]+)\}/ ||
|
43
|
+
value =~ /\%\{(?:hostname|uuid:[a-z]+)\}/ ||
|
44
|
+
value =~ /__(?:HOSTNAME|UUID_[A-Z]+)__/
|
45
|
+
end
|
46
|
+
|
41
47
|
def configure(conf)
|
42
|
-
# Element#has_key? inserts key name into 'used' list, so we should
|
43
|
-
hostname = conf.keys.include?('hostname') ? conf
|
48
|
+
# Element#has_key? inserts key name into 'used' list, so we should not use that method...
|
49
|
+
hostname = if conf.keys.include?('hostname') && has_replace_pattern?( conf.fetch('hostname') )
|
50
|
+
`hostname`.chomp
|
51
|
+
elsif conf.keys.include?('hostname')
|
52
|
+
conf['hostname']
|
53
|
+
else
|
54
|
+
`hostname`.chomp
|
55
|
+
end
|
44
56
|
|
45
57
|
placeholders = self.respond_to?(:placeholders) ? self.placeholders : PLACEHOLDERS_DEFAULT
|
46
58
|
|
@@ -8,26 +8,27 @@ class ConfigPlaceholdersTest < Test::Unit::TestCase
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_unused
|
11
|
+
# 'id' used by Fluentd core as plugin id...
|
11
12
|
conf = %[
|
12
13
|
tag HOGE
|
13
14
|
path POSPOSPOS
|
14
15
|
]
|
15
16
|
p = Fluent::Test::InputTestDriver.new(Fluent::ConfigPlaceholdersTest2Input).configure(conf).instance
|
16
|
-
assert_equal [
|
17
|
+
assert_equal [], p.conf.unused
|
17
18
|
|
18
19
|
conf = %[
|
19
20
|
tag HOGE
|
20
21
|
path POSPOSPOS
|
21
22
|
]
|
22
23
|
p = Fluent::Test::InputTestDriver.new(Fluent::ConfigPlaceholdersTestXInput).configure(conf).instance
|
23
|
-
assert_equal [], p.conf.
|
24
|
+
assert_equal ['tag', 'path'], p.conf.unused
|
24
25
|
|
25
26
|
conf = %[
|
26
27
|
tag HOGE
|
27
28
|
path POSPOSPOS ${hostname} MOGEMOGE
|
28
29
|
]
|
29
30
|
p = Fluent::Test::InputTestDriver.new(Fluent::ConfigPlaceholdersTestXInput).configure(conf).instance
|
30
|
-
assert_equal [], p.conf.
|
31
|
+
assert_equal ['tag', 'path'], p.conf.unused
|
31
32
|
end
|
32
33
|
|
33
34
|
def test_default
|
@@ -220,4 +221,51 @@ path /path/to/file.log
|
|
220
221
|
assert_equal "value.1." + uuid, p3.conf.elements.first.elements[0]['field']
|
221
222
|
assert_equal "value.2." + uuid, p3.conf.elements.first.elements[1]['field']
|
222
223
|
end
|
224
|
+
|
225
|
+
def test_value_has_replace_pattern?
|
226
|
+
conf1 = %[
|
227
|
+
hostname test.host.local
|
228
|
+
attr1 ${hostname}
|
229
|
+
]
|
230
|
+
p1 = Fluent::Test::InputTestDriver.new(Fluent::ConfigPlaceholdersTest3Input).configure(conf1).instance
|
231
|
+
|
232
|
+
assert p1.has_replace_pattern?('foo.__HOSTNAME__')
|
233
|
+
assert p1.has_replace_pattern?('foo.__UUID_RANDOM__')
|
234
|
+
assert p1.has_replace_pattern?('foo.__UUID_HOSTNAME__')
|
235
|
+
assert p1.has_replace_pattern?('foo.__UUID_TIMESTAMP__')
|
236
|
+
assert p1.has_replace_pattern?('foo.${hostname}.local')
|
237
|
+
assert p1.has_replace_pattern?('foo.${uuid:random}.local')
|
238
|
+
assert p1.has_replace_pattern?('foo.${uuid:hostname}.local')
|
239
|
+
assert p1.has_replace_pattern?('foo.${uuid:timestamp}.local')
|
240
|
+
assert p1.has_replace_pattern?('%{hostname}.local')
|
241
|
+
assert p1.has_replace_pattern?('%{uuid:random}.local')
|
242
|
+
assert p1.has_replace_pattern?('%{uuid:hostname}.local')
|
243
|
+
assert p1.has_replace_pattern?('%{uuid:timestamp}.local')
|
244
|
+
end
|
245
|
+
|
246
|
+
def test_attribute_hostname
|
247
|
+
# this configuration pattern is to set hostname itself
|
248
|
+
# - @hostname should be set as 'test.host.local'
|
249
|
+
# - @attr1 should be set as 'test.host.local'
|
250
|
+
conf1 = %[
|
251
|
+
hostname test.host.local
|
252
|
+
attr1 ${hostname}
|
253
|
+
]
|
254
|
+
p1 = Fluent::Test::InputTestDriver.new(Fluent::ConfigPlaceholdersTest3Input).configure(conf1).instance
|
255
|
+
assert_equal "test.host.local", p1.hostname
|
256
|
+
assert_equal "test.host.local", p1.attr1
|
257
|
+
|
258
|
+
# this configuration pattern is to set hostname-attribute of plugins
|
259
|
+
# when 'myhostname' is host name (result of `hostname` shell command),
|
260
|
+
# - @hostname is set as 'myhostname.fluentd.local'
|
261
|
+
# - @attr1 should be set as 'myhostname' only, it is default of mixin
|
262
|
+
conf2 = %[
|
263
|
+
hostname ${hostname}.fluentd.local
|
264
|
+
attr1 __HOSTNAME__
|
265
|
+
]
|
266
|
+
p2 = Fluent::Test::InputTestDriver.new(Fluent::ConfigPlaceholdersTest3Input).configure(conf2).instance
|
267
|
+
hostname_cmd = `hostname`.chomp
|
268
|
+
assert_equal "#{hostname_cmd}.fluentd.local", p2.hostname
|
269
|
+
assert_equal hostname_cmd, p2.attr1
|
270
|
+
end
|
223
271
|
end
|
data/test/plugin.rb
CHANGED
@@ -62,3 +62,20 @@ class Fluent::ConfigPlaceholdersTest2Input < Fluent::Input
|
|
62
62
|
@conf = conf
|
63
63
|
end
|
64
64
|
end
|
65
|
+
|
66
|
+
class Fluent::ConfigPlaceholdersTest3Input < Fluent::Input
|
67
|
+
Fluent::Plugin.register_input('config_placeholder_test_2', self)
|
68
|
+
|
69
|
+
config_param :hostname, :string
|
70
|
+
config_param :attr1, :string
|
71
|
+
|
72
|
+
include Fluent::Mixin::ConfigPlaceholders
|
73
|
+
|
74
|
+
attr_accessor :conf
|
75
|
+
|
76
|
+
def placeholders; [:dollar, :percent, :underscore]; end
|
77
|
+
def configure(conf)
|
78
|
+
super
|
79
|
+
@conf = conf
|
80
|
+
end
|
81
|
+
end
|
metadata
CHANGED
@@ -1,46 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-mixin-config-placeholders
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- TAGOMORI Satoshi
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-02-02 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: fluentd
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: uuidtools
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
44
53
|
- !ruby/object:Gem::Version
|
45
54
|
version: '0'
|
46
55
|
description: to add various placeholders for plugin configurations
|
@@ -51,6 +60,7 @@ extensions: []
|
|
51
60
|
extra_rdoc_files: []
|
52
61
|
files:
|
53
62
|
- .gitignore
|
63
|
+
- .travis.yml
|
54
64
|
- Gemfile
|
55
65
|
- LICENSE.txt
|
56
66
|
- README.md
|
@@ -61,30 +71,31 @@ files:
|
|
61
71
|
- test/mixin/test_config_placeholders.rb
|
62
72
|
- test/plugin.rb
|
63
73
|
homepage: https://github.com/tagomoris/fluent-mixin-config-placeholders
|
64
|
-
licenses:
|
74
|
+
licenses:
|
75
|
+
- APLv2
|
76
|
+
metadata: {}
|
65
77
|
post_install_message:
|
66
78
|
rdoc_options: []
|
67
79
|
require_paths:
|
68
80
|
- lib
|
69
81
|
required_ruby_version: !ruby/object:Gem::Requirement
|
70
|
-
none: false
|
71
82
|
requirements:
|
72
|
-
- -
|
83
|
+
- - '>='
|
73
84
|
- !ruby/object:Gem::Version
|
74
85
|
version: '0'
|
75
86
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
|
-
none: false
|
77
87
|
requirements:
|
78
|
-
- -
|
88
|
+
- - '>='
|
79
89
|
- !ruby/object:Gem::Version
|
80
90
|
version: '0'
|
81
91
|
requirements: []
|
82
92
|
rubyforge_project:
|
83
|
-
rubygems_version:
|
93
|
+
rubygems_version: 2.0.3
|
84
94
|
signing_key:
|
85
|
-
specification_version:
|
95
|
+
specification_version: 4
|
86
96
|
summary: Configuration syntax extension mixin for fluentd plugin
|
87
97
|
test_files:
|
88
98
|
- test/helper.rb
|
89
99
|
- test/mixin/test_config_placeholders.rb
|
90
100
|
- test/plugin.rb
|
101
|
+
has_rdoc:
|