fluent-plugin-ec2-metadata 0.0.15 → 0.1.0

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