fluent-plugin-mongo 0.7.7 → 0.7.8

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: e1b44afa9a00bcc44e988c6ff186cef45226f59c
4
- data.tar.gz: 72818ef49d77f1eb77c58a421a528a53142302fe
3
+ metadata.gz: 0c469055a5c4138143ee66c6498a061a089ec78f
4
+ data.tar.gz: f927fb01f37bbca5e922b0e579926f46cae940be
5
5
  SHA512:
6
- metadata.gz: f41c96c14b596e8bb394f5e94045f84272f104c2d8848f4f761c265c3c33ee69803638af0b7ada30a604574817bbca813f4326edad15f5607c16287cc23efc51
7
- data.tar.gz: 6b31e68117d8ea3a5465ac02804c6e8a1d71f42cdb4b855c520eff1b9273a967acf3b12661113b93a265963ad1bfd4121cf7d6573a7894a71129bcddb7736bf4
6
+ metadata.gz: bab2b000d8b206c05f8ff30a6c9f2da916139a8b3955152bdde0460282828ea17e32975db1b8bc832c0c3dd39808a7d458a1fa390f9d563d8d400aab52ff0e93
7
+ data.tar.gz: aca3095ff0624546dd77ecb7580af9b3fa6098c0b0c01cafab0e61474402b1f2f6fe59dfed773686644c6680796049078acb73d65ff4abdd65fb8b65cdc13f5d
data/ChangeLog CHANGED
@@ -1,3 +1,8 @@
1
+ Release 0.7.8 - 2015/03/23
2
+
3
+ * Add url option to support URL configuration for MongoDB connection
4
+
5
+
1
6
  Release 0.7.7 - 2015/03/19
2
7
 
3
8
  * Fix in_mongo_tail shutdown mechanizm for handling stop sequence correctly.
data/README.rdoc CHANGED
@@ -143,6 +143,17 @@ Use _mongo_tail_ type in source.
143
143
  id_store_file /Users/repeatedly/devel/fluent-plugin-mongo/last_id
144
144
  </source>
145
145
 
146
+ You can also use _url_ to specify the database to connect.
147
+
148
+ <source>
149
+ type mongo_tail
150
+ url mongodb://user:password@192.168.0.13:10249,192.168.0.14:10249/database
151
+ collection capped_log
152
+ ...
153
+ </source>
154
+
155
+ This allows the plugin to read data from a replica set.
156
+
146
157
  = NOTE
147
158
 
148
159
  == Broken data as a BSON
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.7
1
+ 0.7.8
@@ -5,11 +5,12 @@ module Fluent
5
5
  require 'fluent/plugin/mongo_util'
6
6
  include MongoUtil
7
7
 
8
- config_param :database, :string
8
+ config_param :database, :string, :default => nil
9
9
  config_param :collection, :string
10
10
  config_param :host, :string, :default => 'localhost'
11
11
  config_param :port, :integer, :default => 27017
12
12
  config_param :wait_time, :integer, :default => 1
13
+ config_param :url, :string, :default => nil
13
14
 
14
15
  config_param :tag, :string, :default => nil
15
16
  config_param :tag_key, :string, :default => nil
@@ -41,6 +42,14 @@ module Fluent
41
42
  raise ConfigError, "'tag' or 'tag_key' option is required on mongo_tail input"
42
43
  end
43
44
 
45
+ if @database && @url
46
+ raise ConfigError, "Both 'database' and 'url' can not be set"
47
+ end
48
+
49
+ if !@database && !@url
50
+ raise ConfigError, "One of 'database' or 'url' must be specified"
51
+ end
52
+
44
53
  @last_id = @id_store_file ? get_last_id : nil
45
54
  @connection_options[:ssl] = @ssl
46
55
 
@@ -90,10 +99,10 @@ module Fluent
90
99
 
91
100
  def get_capped_collection
92
101
  begin
93
- db = authenticate(Mongo::Connection.new(@host, @port, @connection_options).db(@database))
94
- raise ConfigError, "'#{@database}.#{@collection}' not found: node = #{@host}:#{@port}" unless db.collection_names.include?(@collection)
102
+ db = get_database
103
+ raise ConfigError, "'#{database_name}.#{@collection}' not found: node = #{node_string}" unless db.collection_names.include?(@collection)
95
104
  collection = db.collection(@collection)
96
- raise ConfigError, "'#{@database}.#{@collection}' is not capped: node = #{@host}:#{@port}" unless collection.capped?
105
+ raise ConfigError, "'#{database_name}.#{@collection}' is not capped: node = #{node_string}" unless collection.capped?
97
106
  collection
98
107
  rescue Mongo::ConnectionFailure => e
99
108
  log.fatal "Failed to connect to 'mongod'. Please restart 'fluentd' after 'mongod' started: #{e}"
@@ -103,6 +112,34 @@ module Fluent
103
112
  exit!
104
113
  end
105
114
  end
115
+
116
+ def get_database
117
+ case
118
+ when @database
119
+ authenticate(Mongo::Connection.new(@host, @port, @connection_options).db(@database))
120
+ when @url
121
+ parser = Mongo::URIParser.new(@url)
122
+ parser.connection.db(parser.db_name)
123
+ end
124
+ end
125
+
126
+ def database_name
127
+ case
128
+ when @database
129
+ @database
130
+ when @url
131
+ Mongo::URIParser.new(@url).db_name
132
+ end
133
+ end
134
+
135
+ def node_string
136
+ case
137
+ when @database
138
+ "#{@host}:#{@port}"
139
+ when @url
140
+ @url
141
+ end
142
+ end
106
143
 
107
144
  def process_document(doc)
108
145
  time = if @time_key
@@ -29,6 +29,41 @@ class MongoTailInputTest < Test::Unit::TestCase
29
29
  assert_equal('time', d.instance.time_key)
30
30
  assert_equal('/tmp/fluent_mongo_last_id', d.instance.id_store_file)
31
31
  end
32
+
33
+ def test_url_configration
34
+ config = %[
35
+ type mongo_tail
36
+ url mongodb://localhost:27017/test
37
+ collection log
38
+ tag_key tag
39
+ time_key time
40
+ id_store_file /tmp/fluent_mongo_last_id
41
+ ]
42
+
43
+ d = create_driver(config)
44
+ assert_equal("mongodb://localhost:27017/test", d.instance.url)
45
+ assert_nil(d.instance.database)
46
+ assert_equal('log', d.instance.collection)
47
+ assert_equal('tag', d.instance.tag_key)
48
+ assert_equal('time', d.instance.time_key)
49
+ assert_equal('/tmp/fluent_mongo_last_id', d.instance.id_store_file)
50
+ end
51
+
52
+ def test_url_and_database_can_not_exist
53
+ config = %[
54
+ type mongo_tail
55
+ url mongodb://localhost:27017/test
56
+ database test2
57
+ collection log
58
+ tag_key tag
59
+ time_key time
60
+ id_store_file /tmp/fluent_mongo_last_id
61
+ ]
62
+
63
+ assert_raises Fluent::ConfigError do
64
+ create_driver(config)
65
+ end
66
+ end
32
67
 
33
68
  def test_emit
34
69
  # TODO: write actual code
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-mongo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.7
4
+ version: 0.7.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masahiro Nakagawa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-19 00:00:00.000000000 Z
11
+ date: 2015-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd