fluent-plugin-ec2-metadata 0.0.15 → 0.1.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: f6d2c8b687f111b107457e4d141196b4a04c16bc
4
- data.tar.gz: 8b6b74fcecb1a2bc1b845f54049ca65e907ad2d8
3
+ metadata.gz: ce91cbea4bad7e31c32de08af7f6769d986be51c
4
+ data.tar.gz: 5c9ba0747b12f50bdb65c2d9386fa1afb18a655d
5
5
  SHA512:
6
- metadata.gz: 4f2a19de0877c4ffd1c6e45532d09645f1af6f2a64eb37c5996713355bf595af0a4d105416e9e4c7ae6fa0e5d2bcfb3b34932ddd20c02af05075d221d8e3523e
7
- data.tar.gz: bf2d28ec7d231966e8ebe24571f2875c1f0476d522d614f4ae8098d3d3f95275c07fe5703a009fd418e5625e38d4467327470a559fd229d8f04485ffcc5ec68d
6
+ metadata.gz: c8f5b0090c3120c9cedfa29269461901e9106d57a58cb926d7bcf529b51f5c72b22af9680b9cc08d25f960631aa45354cfd334733f6ee28af5a179b50275ad4a
7
+ data.tar.gz: 96fc722e796512024285c29c5708241d92c97768c4b42a4e0651c04b899d8e11cece1febcf83a7626953c28afea764eada9c19715e2e8f030538b07316eea849
data/.travis.yml CHANGED
@@ -1,15 +1,8 @@
1
1
  rvm:
2
- - 2.0.*
3
2
  - 2.1.*
4
3
  - 2.2.*
5
4
  - 2.3.0
6
5
  gemfile:
7
6
  - Gemfile
8
- - Gemfile.fluentd.0.12
9
- - Gemfile.fluentd.0.10
10
- matrix:
11
- exclude:
12
- - rvm: 2.0.*
13
- gemfile: Gemfile
14
7
  before_install: gem update bundler
15
8
  after_script: codeclimate-test-reporter
data/README.md CHANGED
@@ -9,6 +9,13 @@
9
9
 
10
10
  [Fluentd](http://fluentd.org) plugin to add ec2 metadata fields to a event record
11
11
 
12
+ ## Requirements
13
+
14
+ | fluent-plugin-ec2-metadata | fluentd | ruby |
15
+ |--------------------|------------|--------|
16
+ | >= 0.0.16 | v0.14.x | >= 2.1 |
17
+ | 0.0.15 <= | v0.12.x | >= 1.9 |
18
+
12
19
  ## Installation
13
20
  Use RubyGems:
14
21
 
data/Rakefile CHANGED
@@ -15,4 +15,4 @@ Rake::TestTask.new(:test) do |test|
15
15
  test.verbose = true
16
16
  end
17
17
 
18
- task :default => :test
18
+ task default: :test
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "fluent-plugin-ec2-metadata"
7
- spec.version = "0.0.15"
7
+ spec.version = "0.1.0"
8
8
  spec.authors = ["SAKAMOTO Takumi"]
9
9
  spec.email = ["takumi.saka@gmail.com"]
10
10
  spec.description = %q{Fluentd output plugin to add ec2 metadata fields to a event record}
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_runtime_dependency "fluentd"
20
+ spec.add_runtime_dependency "fluentd", "> 0.14.0"
21
21
  spec.add_runtime_dependency "oj"
22
22
  spec.add_runtime_dependency "aws-sdk"
23
23
 
@@ -104,19 +104,19 @@ module Fluent
104
104
  end
105
105
 
106
106
  def modify_record(record, tag, tag_parts)
107
- @placeholder_expander.prepare_placeholders(record, tag, tag_parts, @ec2_metadata)
107
+ placeholders = @placeholder_expander.prepare_placeholders(record, tag, tag_parts, @ec2_metadata)
108
108
  new_record = record.dup
109
- @map.each_pair { |k, v| new_record[k] = @placeholder_expander.expand(v) }
109
+ @map.each_pair { |k, v| new_record[k] = @placeholder_expander.expand(v, placeholders) }
110
110
  new_record
111
111
  end
112
112
 
113
113
  def modify(output_tag, record, tag, tag_parts)
114
- @placeholder_expander.prepare_placeholders(record, tag, tag_parts, @ec2_metadata)
114
+ placeholders = @placeholder_expander.prepare_placeholders(record, tag, tag_parts, @ec2_metadata)
115
115
 
116
- new_tag = @placeholder_expander.expand(output_tag)
116
+ new_tag = @placeholder_expander.expand(output_tag, placeholders)
117
117
 
118
118
  new_record = record.dup
119
- @map.each_pair { |k, v| new_record[k] = @placeholder_expander.expand(v) }
119
+ @map.each_pair { |k, v| new_record[k] = @placeholder_expander.expand(v, placeholders) }
120
120
 
121
121
  [new_tag, new_record]
122
122
  end
@@ -145,13 +145,13 @@ module Fluent
145
145
  placeholders.store("${#{k}}", v)
146
146
  }
147
147
 
148
- @placeholders = placeholders
148
+ placeholders
149
149
  end
150
150
 
151
- def expand(str)
151
+ def expand(str, placeholders)
152
152
  str.gsub(/(\${[a-z_:\-]+(\[-?[0-9]+\])?}|__[A-Z_]+__)/) {
153
- @log.warn "ec2-metadata: unknown placeholder `#{$1}` found in a tag `#{@placeholders['${tag}']}`" unless @placeholders.include?($1)
154
- @placeholders[$1]
153
+ @log.warn "ec2-metadata: unknown placeholder `#{$1}` found in a tag `#{placeholders['${tag}']}`" unless placeholders.include?($1)
154
+ placeholders[$1]
155
155
  }
156
156
  end
157
157
  end
@@ -1,19 +1,15 @@
1
+ require 'fluent/plugin/filter'
1
2
  require_relative 'ec2_metadata'
2
3
 
3
- module Fluent
4
+ module Fluent::Plugin
4
5
  class EC2MetadataFilter < Filter
5
6
  include Fluent::EC2Metadata
6
7
 
7
8
  Fluent::Plugin.register_filter('ec2_metadata', self)
8
9
 
9
- # Define `router` method of v0.12 to support v0.10 or earlier
10
- unless method_defined?(:router)
11
- define_method("router") { Fluent::Engine }
12
- end
13
-
14
- config_param :aws_key_id, :string, :default => ENV['AWS_ACCESS_KEY_ID'], :secret => true
15
- config_param :aws_sec_key, :string, :default => ENV['AWS_SECRET_ACCESS_KEY'], :secret => true
16
- config_param :metadata_refresh_seconds, :integer, :default => 300
10
+ config_param :aws_key_id, :string, default: ENV['AWS_ACCESS_KEY_ID'], secret: true
11
+ config_param :aws_sec_key, :string, default: ENV['AWS_SECRET_ACCESS_KEY'], secret: true
12
+ config_param :metadata_refresh_seconds, :integer, default: 300
17
13
 
18
14
  attr_reader :ec2_metadata
19
15
 
@@ -1,34 +1,27 @@
1
+ require 'fluent/plugin/output'
1
2
  require_relative 'ec2_metadata'
2
3
 
3
- module Fluent
4
+ module Fluent::Plugin
4
5
  class EC2MetadataOutput < Output
5
- include EC2Metadata
6
+ include Fluent::EC2Metadata
6
7
 
7
8
  Fluent::Plugin.register_output('ec2_metadata', self)
8
9
 
9
- # Define `router` method of v0.12 to support v0.10 or earlier
10
- unless method_defined?(:router)
11
- define_method("router") { Fluent::Engine }
12
- end
13
-
14
- unless method_defined?(:log)
15
- define_method(:log) { $log }
16
- end
10
+ helpers :event_emitter
17
11
 
18
12
  config_param :output_tag, :string
19
- config_param :aws_key_id, :string, :default => ENV['AWS_ACCESS_KEY_ID'], :secret => true
20
- config_param :aws_sec_key, :string, :default => ENV['AWS_SECRET_ACCESS_KEY'], :secret => true
21
- config_param :metadata_refresh_seconds, :integer, :default => 300
13
+ config_param :aws_key_id, :string, default: ENV['AWS_ACCESS_KEY_ID'], secret: true
14
+ config_param :aws_sec_key, :string, default: ENV['AWS_SECRET_ACCESS_KEY'], secret: true
15
+ config_param :metadata_refresh_seconds, :integer, default: 300
22
16
 
23
17
  attr_reader :ec2_metadata
24
18
 
25
- def emit(tag, es, chain)
19
+ def process(tag, es)
26
20
  tag_parts = tag.split('.')
27
21
  es.each { |time, record|
28
22
  new_tag, new_record = modify(@output_tag, record, tag, tag_parts)
29
23
  router.emit(new_tag, time, new_record)
30
24
  }
31
- chain.next
32
25
  rescue => e
33
26
  log.warn "ec2-metadata: #{e.class} #{e.message} #{e.backtrace.join(', ')}"
34
27
  end
@@ -1,4 +1,5 @@
1
1
  require 'helper'
2
+ require 'fluent/test/driver/filter'
2
3
  require 'fluent/plugin/filter_ec2_metadata'
3
4
 
4
5
  require 'webmock/test_unit'
@@ -21,8 +22,8 @@ class EC2MetadataFilterTest < Test::Unit::TestCase
21
22
  @time = Fluent::Engine.now
22
23
  end
23
24
 
24
- def create_driver(conf=CONFIG, tag='test')
25
- Fluent::Test::FilterTestDriver.new(Fluent::EC2MetadataFilter, tag).configure(conf)
25
+ def create_driver(conf=CONFIG)
26
+ Fluent::Test::Driver::Filter.new(Fluent::Plugin::EC2MetadataFilter).configure(conf)
26
27
  end
27
28
 
28
29
  test 'configure-vpc' do
@@ -71,4 +72,26 @@ class EC2MetadataFilterTest < Test::Unit::TestCase
71
72
  assert_equal(nil, d.instance.ec2_metadata['subnet_id'])
72
73
  end
73
74
  end
75
+
76
+ test 'emit' do
77
+ VCR.use_cassette('ec2-vpc') do
78
+ d = create_driver
79
+
80
+ d.run(default_tag: 'test') do
81
+ d.feed("a" => 1)
82
+ d.feed("a" => 2)
83
+ end
84
+
85
+ # record
86
+ mapped = {
87
+ 'instance_id' => 'i-0c0c0000',
88
+ 'az' => 'ap-northeast-1b',
89
+ 'name' => 'instance-name',
90
+ }
91
+ assert_equal [
92
+ {"a" => 1}.merge(mapped),
93
+ {"a" => 2}.merge(mapped),
94
+ ], d.filtered.map{|e| e.last}
95
+ end
96
+ end
74
97
  end
@@ -1,4 +1,5 @@
1
1
  require 'helper'
2
+ require 'fluent/test/driver/output'
2
3
  require 'fluent/plugin/out_ec2_metadata'
3
4
 
4
5
  require 'webmock/test_unit'
@@ -23,8 +24,8 @@ class EC2MetadataOutputTest < Test::Unit::TestCase
23
24
  @time = Fluent::Engine.now
24
25
  end
25
26
 
26
- def create_driver(conf=CONFIG, tag='test')
27
- Fluent::Test::OutputTestDriver.new(Fluent::EC2MetadataOutput, tag).configure(conf)
27
+ def create_driver(conf=CONFIG)
28
+ Fluent::Test::Driver::Output.new(Fluent::Plugin::EC2MetadataOutput).configure(conf)
28
29
  end
29
30
 
30
31
  test 'configure-vpc' do
@@ -85,14 +86,14 @@ class EC2MetadataOutputTest < Test::Unit::TestCase
85
86
  VCR.use_cassette('ec2-vpc') do
86
87
  d = create_driver
87
88
 
88
- d.run do
89
- d.emit("a" => 1)
90
- d.emit("a" => 2)
89
+ d.run(default_tag: 'test') do
90
+ d.feed("a" => 1)
91
+ d.feed("a" => 2)
91
92
  end
92
93
 
93
94
  # tag
94
- assert_equal "i-0c0c0000.test", d.emits[0][0]
95
- assert_equal "i-0c0c0000.test", d.emits[1][0]
95
+ assert_equal "i-0c0c0000.test", d.events[0][0]
96
+ assert_equal "i-0c0c0000.test", d.events[1][0]
96
97
 
97
98
  # record
98
99
  mapped = {
@@ -104,7 +105,7 @@ class EC2MetadataOutputTest < Test::Unit::TestCase
104
105
  assert_equal [
105
106
  {"a" => 1}.merge(mapped),
106
107
  {"a" => 2}.merge(mapped),
107
- ], d.records
108
+ ], d.events.map{|e| e.last}
108
109
  end
109
110
  end
110
111
 
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-ec2-metadata
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.15
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - SAKAMOTO Takumi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-01 00:00:00.000000000 Z
11
+ date: 2017-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - ">"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
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
- version: '0'
26
+ version: 0.14.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: oj
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -118,8 +118,6 @@ files:
118
118
  - ".gitignore"
119
119
  - ".travis.yml"
120
120
  - Gemfile
121
- - Gemfile.fluentd.0.10
122
- - Gemfile.fluentd.0.12
123
121
  - LICENSE.txt
124
122
  - README.md
125
123
  - Rakefile
@@ -152,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
150
  version: '0'
153
151
  requirements: []
154
152
  rubyforge_project:
155
- rubygems_version: 2.2.2
153
+ rubygems_version: 2.5.1
156
154
  signing_key:
157
155
  specification_version: 4
158
156
  summary: Fluentd output plugin to add ec2 metadata fields to a event record
data/Gemfile.fluentd.0.10 DELETED
@@ -1,9 +0,0 @@
1
- source 'http://rubygems.org'
2
-
3
- gem 'fluentd', '~> 0.10.43'
4
-
5
- gemspec
6
-
7
- group :test do
8
- gem 'codeclimate-test-reporter', require: nil
9
- end
data/Gemfile.fluentd.0.12 DELETED
@@ -1,9 +0,0 @@
1
- source 'http://rubygems.org'
2
-
3
- gem 'fluentd', '~> 0.12.0'
4
-
5
- gemspec
6
-
7
- group :test do
8
- gem 'codeclimate-test-reporter', require: nil
9
- end