fluent-plugin-mysql-replicator 0.4.3 → 0.5.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.
@@ -1,6 +1,7 @@
1
1
  language: ruby
2
2
 
3
3
  rvm:
4
+ - 2.2
4
5
  - 2.1
5
6
  - 2.0.0
6
7
  - 1.9.3
@@ -28,6 +28,13 @@ It is a guide to replicate multiple mysql table to elasticsearch.
28
28
  host localhost
29
29
  port 9200
30
30
 
31
+ # You can configure to use SSL for connecting to Elasticsearch.
32
+ # ssl true
33
+
34
+ # Basic authentication credentials can be configured
35
+ # username basic_auth_username
36
+ # password basic_auth_password
37
+
31
38
  # Set Elasticsearch index, type, and unique id (primary_key) from tag.
32
39
  tag_format (?<index_name>[^\.]+)\.(?<type_name>[^\.]+)\.(?<event>[^\.]+)\.(?<primary_key>[^\.]+)$
33
40
 
@@ -37,6 +37,13 @@ It is a guide to replicate single mysql table to elasticsearch.
37
37
  host localhost
38
38
  port 9200
39
39
 
40
+ # You can configure to use SSL for connecting to Elasticsearch.
41
+ # ssl true
42
+
43
+ # Basic authentication credentials can be configured
44
+ # username basic_auth_username
45
+ # password basic_auth_password
46
+
40
47
  # Set Elasticsearch index, type, and unique id (primary_key) from tag.
41
48
  tag_format (?<core_name>[^\.]+)\.(?<event>[^\.]+)\.(?<primary_key>[^\.]+)$
42
49
 
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |s|
3
3
  s.name = "fluent-plugin-mysql-replicator"
4
- s.version = "0.4.3"
4
+ s.version = "0.5.0"
5
5
  s.authors = ["Kentaro Yoshida"]
6
6
  s.email = ["y.ken.studio@gmail.com"]
7
7
  s.homepage = "https://github.com/y-ken/fluent-plugin-mysql-replicator"
@@ -11,9 +11,11 @@ Gem::Specification.new do |s|
11
11
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
12
12
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
13
13
  s.require_paths = ["lib"]
14
+ s.license = "Apache-2.0"
14
15
 
15
16
  s.add_development_dependency "rake"
16
17
  s.add_development_dependency "webmock"
18
+ s.add_development_dependency "test-unit", ">= 3.1.0"
17
19
 
18
20
  s.add_runtime_dependency "fluentd"
19
21
  s.add_runtime_dependency "mysql2"
@@ -2,6 +2,11 @@ module Fluent
2
2
  class MysqlReplicatorInput < Fluent::Input
3
3
  Plugin.register_input('mysql_replicator', self)
4
4
 
5
+ # Define `router` method to support v0.10.57 or earlier
6
+ unless method_defined?(:router)
7
+ define_method("router") { Engine }
8
+ end
9
+
5
10
  def initialize
6
11
  require 'mysql2'
7
12
  require 'digest/sha1'
@@ -11,7 +16,7 @@ module Fluent
11
16
  config_param :host, :string, :default => 'localhost'
12
17
  config_param :port, :integer, :default => 3306
13
18
  config_param :username, :string, :default => 'root'
14
- config_param :password, :string, :default => nil
19
+ config_param :password, :string, :default => nil, :secret => true
15
20
  config_param :database, :string, :default => nil
16
21
  config_param :encoding, :string, :default => 'utf8'
17
22
  config_param :query, :string
@@ -123,7 +128,7 @@ module Fluent
123
128
  end
124
129
 
125
130
  def emit_record(tag, record)
126
- Engine.emit(tag, Engine.now, record)
131
+ router.emit(tag, Engine.now, record)
127
132
  end
128
133
 
129
134
  def query(query, con = nil)
@@ -2,6 +2,11 @@ module Fluent
2
2
  class MysqlReplicatorMultiInput < Fluent::Input
3
3
  Plugin.register_input('mysql_replicator_multi', self)
4
4
 
5
+ # Define `router` method to support v0.10.57 or earlier
6
+ unless method_defined?(:router)
7
+ define_method("router") { Engine }
8
+ end
9
+
5
10
  def initialize
6
11
  require 'mysql2'
7
12
  require 'digest/sha1'
@@ -11,7 +16,7 @@ module Fluent
11
16
  config_param :manager_host, :string, :default => 'localhost'
12
17
  config_param :manager_port, :integer, :default => 3306
13
18
  config_param :manager_username, :string, :default => nil
14
- config_param :manager_password, :string, :default => ''
19
+ config_param :manager_password, :string, :default => '', :secret => true
15
20
  config_param :manager_database, :string, :default => 'replicator_manager'
16
21
  config_param :tag, :string, :default => nil
17
22
 
@@ -239,7 +244,7 @@ module Fluent
239
244
  end
240
245
 
241
246
  def emit_record(tag, record)
242
- Engine.emit(tag, Engine.now, record)
247
+ router.emit(tag, Engine.now, record)
243
248
  end
244
249
 
245
250
  def get_manager_connection
@@ -7,6 +7,9 @@ class Fluent::MysqlReplicatorElasticsearchOutput < Fluent::BufferedOutput
7
7
  config_param :host, :string, :default => 'localhost'
8
8
  config_param :port, :integer, :default => 9200
9
9
  config_param :tag_format, :string, :default => nil
10
+ config_param :ssl, :bool, :default => false
11
+ config_param :username, :string, :default => nil
12
+ config_param :password, :string, :default => nil, :secret => true
10
13
 
11
14
  DEFAULT_TAG_FORMAT = /(?<index_name>[^\.]+)\.(?<type_name>[^\.]+)\.(?<event>[^\.]+)\.(?<primary_key>[^\.]+)$/
12
15
 
@@ -60,7 +63,13 @@ class Fluent::MysqlReplicatorElasticsearchOutput < Fluent::BufferedOutput
60
63
  bulk_message << ""
61
64
 
62
65
  http = Net::HTTP.new(@host, @port.to_i)
66
+ http.use_ssl = @ssl
67
+
63
68
  request = Net::HTTP::Post.new('/_bulk', {'content-type' => 'application/json; charset=utf-8'})
69
+ if @username && @password
70
+ request.basic_auth(@username, @password)
71
+ end
72
+
64
73
  request.body = bulk_message.join("\n")
65
74
  http.request(request).value
66
75
  end
@@ -124,4 +124,35 @@ class MysqlReplicatorElasticsearchOutput < Test::Unit::TestCase
124
124
  driver.run
125
125
  }
126
126
  end
127
- end
127
+
128
+ def test_writes_to_https_host
129
+ driver.configure("ssl true\n")
130
+ elastic_request = stub_elastic("https://localhost:9200/_bulk")
131
+ driver.emit(sample_record)
132
+ driver.run
133
+ assert_requested(elastic_request)
134
+ end
135
+
136
+ def test_writes_to_http_basic_auth
137
+ driver.configure(%[
138
+ username foo\n
139
+ password bar\n
140
+ ])
141
+ elastic_request = stub_elastic("http://foo:bar@localhost:9200/_bulk")
142
+ driver.emit(sample_record)
143
+ driver.run
144
+ assert_requested(elastic_request)
145
+ end
146
+
147
+ def test_writes_to_http_basic_auth_failed
148
+ driver.configure(%[
149
+ username wront_user\n
150
+ password bar\n
151
+ ])
152
+ elastic_request = stub_elastic("http://foo:bar@localhost:9200/_bulk")
153
+ driver.emit(sample_record)
154
+ assert_raise(WebMock::NetConnectNotAllowedError) {
155
+ driver.run
156
+ }
157
+ end
158
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-mysql-replicator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-18 00:00:00.000000000 Z
12
+ date: 2015-09-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -43,6 +43,22 @@ dependencies:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: test-unit
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 3.1.0
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 3.1.0
46
62
  - !ruby/object:Gem::Dependency
47
63
  name: fluentd
48
64
  requirement: !ruby/object:Gem::Requirement
@@ -122,7 +138,8 @@ files:
122
138
  - test/plugin/test_out_mysql_replicator_elasticsearch.rb
123
139
  - test/plugin/test_out_mysql_replicator_solr.rb
124
140
  homepage: https://github.com/y-ken/fluent-plugin-mysql-replicator
125
- licenses: []
141
+ licenses:
142
+ - Apache-2.0
126
143
  post_install_message:
127
144
  rdoc_options: []
128
145
  require_paths: