fluent-plugin-out-http 1.1.3 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c1070709b043ea9772ddf71b806a2f7807775e7e8ebc19d1ba0408df37926f9e
4
- data.tar.gz: d904c7394b6ae84450ad67f8aa0ea8dacfdc27f73d9e4bedb3b3f4d12bf58ccd
3
+ metadata.gz: 3ec10329a626597058faa33835bcc4b553d28595fc973353e5807f1ffbea4036
4
+ data.tar.gz: 6ee543bbd1835b69d9bd80cf1b13af9e9f39d3fcd83ee823425408607d8fc240
5
5
  SHA512:
6
- metadata.gz: a5b7fab8ecd5bfa6b49e75aabf6c01b25d78a4f356c8275cdce5a8df996c688a3e648b040795a3487f5d9f7a0e9defc6c89ab49478d1c6216c05106a6b0dc152
7
- data.tar.gz: 472f6517e9e46aff558e255256cc27851673bd50cfe015195b34419f4a5e0a77e96318208103992b96ea65e55dd8cb91ccd4c3d8728d1806acdd9abcd97f1efa
6
+ metadata.gz: 9dfb53ea8a4773adf2407646e34cb98c8d789d472220b066a90b51a325fea123a2f9af283c02f2fb304c0e0e3e0df67187d4883c936c8dcb329c90853d533fc6
7
+ data.tar.gz: 4bb782810c5f9c5bebf2b56c3be308809e6788d35211a814bdfb9b9e15628f866282ee49a9011d64c2682c0eed2bd6c1540d8d2ee63afad0405ef4f67aca86c9
data/.travis.yml CHANGED
@@ -1,8 +1,9 @@
1
1
  rvm:
2
- - 2.1
3
2
  - 2.2
4
3
  - 2.3
5
- - 2.4.0
4
+ - 2.4.5
5
+ - 2.5.3
6
+ - 2.6.0
6
7
  - ruby-head
7
8
 
8
9
  os:
@@ -14,6 +15,9 @@ dist: trusty
14
15
  gemfile:
15
16
  - Gemfile
16
17
 
18
+ before_install:
19
+ - gem update --system=2.7.8
20
+
17
21
  script: bundle exec rake test
18
22
 
19
23
  matrix:
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ### 1.1.4
4
+ * Add custom formatter feature
5
+ * Tweak Travis CI tasks
6
+
3
7
  ### 1.1.3
4
8
  * Send query_string to endpoint_url
5
9
 
data/README.md CHANGED
@@ -7,7 +7,7 @@ A generic [fluentd][1] output plugin for sending logs to an HTTP endpoint.
7
7
  ## Configuration options
8
8
 
9
9
  <match *>
10
- type http
10
+ @type http
11
11
  endpoint_url http://localhost.local/api/
12
12
  http_method put # default: post
13
13
  serializer json # default: form
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = "fluent-plugin-out-http"
5
- gem.version = "1.1.3"
5
+ gem.version = "1.1.4"
6
6
  gem.authors = ["Marica Odagaki"]
7
7
  gem.email = ["ento.entotto@gmail.com"]
8
8
  gem.summary = %q{A generic Fluentd output plugin to send logs to an HTTP endpoint}
@@ -6,9 +6,10 @@ require 'fluent/plugin/output'
6
6
  class Fluent::Plugin::HTTPOutput < Fluent::Plugin::Output
7
7
  Fluent::Plugin.register_output('http', self)
8
8
 
9
- helpers :compat_parameters
9
+ helpers :compat_parameters, :formatter
10
10
 
11
11
  DEFAULT_BUFFER_TYPE = "memory"
12
+ DEFAULT_FORMATTER = "json"
12
13
 
13
14
  def initialize
14
15
  super
@@ -52,8 +53,12 @@ class Fluent::Plugin::HTTPOutput < Fluent::Plugin::Output
52
53
  config_set_default :chunk_keys, ['tag']
53
54
  end
54
55
 
56
+ config_section :format do
57
+ config_set_default :@type, DEFAULT_FORMATTER
58
+ end
59
+
55
60
  def configure(conf)
56
- compat_parameters_convert(conf, :buffer)
61
+ compat_parameters_convert(conf, :buffer, :formatter)
57
62
  super
58
63
 
59
64
  @ssl_verify_mode = if @ssl_no_verify
@@ -65,6 +70,10 @@ class Fluent::Plugin::HTTPOutput < Fluent::Plugin::Output
65
70
  @ca_file = @cacert_file
66
71
  @last_request_time = nil
67
72
  raise Fluent::ConfigError, "'tag' in chunk_keys is required." if !@chunk_key_tag && @buffered
73
+
74
+ if @formatter_config = conf.elements('format').first
75
+ @formatter = formatter_create
76
+ end
68
77
  end
69
78
 
70
79
  def start
@@ -179,6 +188,9 @@ class Fluent::Plugin::HTTPOutput < Fluent::Plugin::Output
179
188
  end # end send_request
180
189
 
181
190
  def handle_record(tag, time, record)
191
+ if @formatter_config
192
+ record = @formatter.format(tag, time, record)
193
+ end
182
194
  req, uri = create_request(tag, time, record)
183
195
  send_request(req, uri)
184
196
  end
@@ -0,0 +1,21 @@
1
+ require 'fluent/plugin/formatter'
2
+
3
+ module Fluent
4
+ module Plugin
5
+ class TestFormatter < Formatter
6
+ Fluent::Plugin.register_formatter('test', self)
7
+
8
+ def configure(conf)
9
+ super
10
+ end
11
+
12
+ def format(tag, time, record)
13
+ output = {
14
+ "wrapped" => true,
15
+ "record" => record
16
+ }
17
+ output
18
+ end
19
+ end
20
+ end
21
+ end
@@ -6,6 +6,7 @@ require 'fluent/test/http_output_test'
6
6
  require 'fluent/plugin/out_http'
7
7
  require 'fluent/test/driver/output'
8
8
  require 'fluent/test/helpers'
9
+ require_relative "./script/plugin/formatter_test"
9
10
 
10
11
  module OS
11
12
  # ref. http://stackoverflow.com/questions/170956/how-can-i-find-which-operating-system-my-ruby-program-is-running-on
@@ -579,6 +580,46 @@ class HTTPOutputTest < HTTPOutputTestBase
579
580
  assert_equal 2, @prohibited
580
581
  end
581
582
 
583
+ class CustomFormatterTest < self
584
+ def test_new_config
585
+ config = Fluent::Config::Element.new(
586
+ 'ROOT', '',
587
+ {"@type" => "http",
588
+ "endpoint_url" => "http://127.0.0.1:#{self.class.port}/api/",
589
+ "serializer" => "json"}, [
590
+ Fluent::Config::Element.new('format', '', {
591
+ "@type" => "test"
592
+ }, [])
593
+ ])
594
+ d = create_driver config
595
+ payload = {"field" => 1}
596
+ d.run(default_tag: 'test.metrics') do
597
+ d.feed(payload)
598
+ end
599
+
600
+ record = @posts[0]
601
+ expected = {"wrapped" => true, "record" => payload}
602
+ assert_equal expected, record[:json]
603
+ end
604
+
605
+ def test_legacy_config
606
+ config = %[
607
+ endpoint_url http://127.0.0.1:#{self.class.port}/api/
608
+ serializer json
609
+ format test
610
+ ]
611
+
612
+ d = create_driver config
613
+ payload = {"field" => 1}
614
+ d.run(default_tag: 'test.metrics') do
615
+ d.feed(payload)
616
+ end
617
+
618
+ record = @posts[0]
619
+ expected = {"wrapped" => true, "record" => payload}
620
+ assert_equal expected, record[:json]
621
+ end
622
+ end
582
623
  end
583
624
 
584
625
  class HTTPSOutputTest < HTTPOutputTestBase
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-out-http
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marica Odagaki
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-05 00:00:00.000000000 Z
11
+ date: 2019-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yajl-ruby
@@ -104,6 +104,7 @@ files:
104
104
  - fluent-plugin-out-http.gemspec
105
105
  - lib/fluent/plugin/out_http.rb
106
106
  - lib/fluent/test/http_output_test.rb
107
+ - test/plugin/script/plugin/formatter_test.rb
107
108
  - test/plugin/test_out_http.rb
108
109
  homepage: https://github.com/fluent-plugins-nursery/fluent-plugin-out-http
109
110
  licenses:
@@ -124,10 +125,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
125
  - !ruby/object:Gem::Version
125
126
  version: '0'
126
127
  requirements: []
127
- rubyforge_project:
128
- rubygems_version: 2.7.6
128
+ rubygems_version: 3.0.1
129
129
  signing_key:
130
130
  specification_version: 4
131
131
  summary: A generic Fluentd output plugin to send logs to an HTTP endpoint
132
132
  test_files:
133
+ - test/plugin/script/plugin/formatter_test.rb
133
134
  - test/plugin/test_out_http.rb