logstash-input-jdbc 2.0.5 → 2.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 +4 -4
- data/CHANGELOG.md +5 -1
- data/lib/logstash/plugin_mixins/jdbc.rb +49 -11
- data/logstash-input-jdbc.gemspec +3 -1
- data/spec/inputs/jdbc_spec.rb +128 -1
- metadata +72 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9bab690eb90f270679aa61551938fa2bf7ee6de
|
4
|
+
data.tar.gz: ef01a9593412b885252102358fde81cb50a268e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bfb164e27f19f96e41026ceaca231a62855aef0e1d9c4e38ab39f923d9d0059bb39361576a442c78fa6b9f618acb6df33dd196b581337b53fc3f26ac6b4f2d64
|
7
|
+
data.tar.gz: 854657f5cecda124c91baf0342921b7cbca9e451957a33587cb670f189cb7dbf93312d3cfdd28634509d3a1858baeedc6f9a4c6a9827cb9fbc8a9f8ba3b08eb6
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## 2.1.0
|
2
|
+
- [#85](https://github.com/logstash-plugins/logstash-input-jdbc/issues/85) make the jdbc_driver_library accept a list of elements separated by commas as in some situations we might need to load more than one jar/lib.
|
3
|
+
- [#89](https://github.com/logstash-plugins/logstash-input-jdbc/issues/89) Set application timezone for cases where time fields in data have no timezone.
|
4
|
+
|
1
5
|
## 2.0.5
|
2
6
|
- [#77](https://github.com/logstash-plugins/logstash-input-jdbc/issues/77) Time represented as RubyTime and not as Logstash::Timestamp
|
3
7
|
|
@@ -10,7 +14,7 @@
|
|
10
14
|
- Added catch-all configuration option for any other options that Sequel lib supports
|
11
15
|
|
12
16
|
## 2.0.0
|
13
|
-
- Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
|
17
|
+
- Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
|
14
18
|
instead of using Thread.raise on the plugins' threads. Ref: https://github.com/elastic/logstash/pull/3895
|
15
19
|
- Dependency on logstash-core update to 2.0
|
16
20
|
|
@@ -1,8 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# TAKEN FROM WIIBAA
|
3
3
|
require "logstash/config/mixin"
|
4
|
+
require "time"
|
5
|
+
require "date"
|
4
6
|
|
5
|
-
# Tentative of abstracting JDBC logic to a mixin
|
7
|
+
# Tentative of abstracting JDBC logic to a mixin
|
6
8
|
# for potential reuse in other plugins (input/output)
|
7
9
|
module LogStash::PluginMixins::Jdbc
|
8
10
|
|
@@ -18,10 +20,11 @@ module LogStash::PluginMixins::Jdbc
|
|
18
20
|
|
19
21
|
public
|
20
22
|
def setup_jdbc_config
|
21
|
-
# JDBC driver library path to third party driver library.
|
23
|
+
# JDBC driver library path to third party driver library. In case of multiple libraries being
|
24
|
+
# required you can pass them separated by a comma.
|
22
25
|
#
|
23
26
|
# If not provided, Plugin will look for the driver class in the Logstash Java classpath.
|
24
|
-
config :jdbc_driver_library, :validate => :
|
27
|
+
config :jdbc_driver_library, :validate => :string
|
25
28
|
|
26
29
|
# JDBC driver class to load, for exmaple, "org.apache.derby.jdbc.ClientDriver"
|
27
30
|
# NB per https://github.com/logstash-plugins/logstash-input-jdbc/issues/43 if you are using
|
@@ -44,7 +47,7 @@ module LogStash::PluginMixins::Jdbc
|
|
44
47
|
# result-set. The limit size is set with `jdbc_page_size`.
|
45
48
|
#
|
46
49
|
# Be aware that ordering is not guaranteed between queries.
|
47
|
-
config :jdbc_paging_enabled, :validate => :boolean, :default => false
|
50
|
+
config :jdbc_paging_enabled, :validate => :boolean, :default => false
|
48
51
|
|
49
52
|
# JDBC page size
|
50
53
|
config :jdbc_page_size, :validate => :number, :default => 100000
|
@@ -64,6 +67,15 @@ module LogStash::PluginMixins::Jdbc
|
|
64
67
|
# The amount of seconds to wait to acquire a connection before raising a PoolTimeoutError (default 5)
|
65
68
|
config :jdbc_pool_timeout, :validate => :number, :default => 5
|
66
69
|
|
70
|
+
# Timezone conversion.
|
71
|
+
# SQL does not allow for timezone data in timestamp fields. This plugin will automatically
|
72
|
+
# convert your SQL timestamp fields to Logstash timestamps, in relative UTC time in ISO8601 format.
|
73
|
+
#
|
74
|
+
# Using this setting will manually assign a specified timezone offset, instead
|
75
|
+
# of using the timezone setting of the local machine. You must use a canonical
|
76
|
+
# timezone, *America/Denver*, for example.
|
77
|
+
config :jdbc_default_timezone, :validate => :string
|
78
|
+
|
67
79
|
# General/Vendor-specific Sequel configuration options.
|
68
80
|
#
|
69
81
|
# An example of an optional connection pool configuration
|
@@ -72,6 +84,10 @@ module LogStash::PluginMixins::Jdbc
|
|
72
84
|
# examples of vendor-specific options can be found in this
|
73
85
|
# documentation page: https://github.com/jeremyevans/sequel/blob/master/doc/opening_databases.rdoc
|
74
86
|
config :sequel_opts, :validate => :hash, :default => {}
|
87
|
+
|
88
|
+
# Log level at which to log SQL queries, the accepted values are the common ones fatal, error, warn,
|
89
|
+
# info and debug. The default value is info.
|
90
|
+
config :sql_log_level, :validate => [ "fatal", "error", "warn", "info", "debug" ], :default => "info"
|
75
91
|
end
|
76
92
|
|
77
93
|
private
|
@@ -92,17 +108,29 @@ module LogStash::PluginMixins::Jdbc
|
|
92
108
|
end
|
93
109
|
end
|
94
110
|
|
111
|
+
private
|
112
|
+
def load_drivers(drivers)
|
113
|
+
drivers.each do |driver|
|
114
|
+
begin
|
115
|
+
require driver
|
116
|
+
rescue => e
|
117
|
+
@logger.error("Failed to load #{driver}", :exception => e)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
95
122
|
public
|
96
123
|
def prepare_jdbc_connection
|
97
124
|
require "java"
|
98
125
|
require "sequel"
|
99
126
|
require "sequel/adapters/jdbc"
|
100
|
-
|
127
|
+
load_drivers(@jdbc_driver_library.split(",")) if @jdbc_driver_library
|
128
|
+
|
101
129
|
begin
|
102
130
|
Sequel::JDBC.load_driver(@jdbc_driver_class)
|
103
131
|
rescue Sequel::AdapterNotFound => e
|
104
132
|
message = if @jdbc_driver_library.nil?
|
105
|
-
":jdbc_driver_library is not set, are you sure you included
|
133
|
+
":jdbc_driver_library is not set, are you sure you included
|
106
134
|
the proper driver client libraries in your classpath?"
|
107
135
|
else
|
108
136
|
"Are you sure you've included the correct jdbc driver in :jdbc_driver_library?"
|
@@ -111,6 +139,10 @@ module LogStash::PluginMixins::Jdbc
|
|
111
139
|
end
|
112
140
|
@database = jdbc_connect()
|
113
141
|
@database.extension(:pagination)
|
142
|
+
if @jdbc_default_timezone
|
143
|
+
@database.extension(:named_timezones)
|
144
|
+
@database.timezone = @jdbc_default_timezone
|
145
|
+
end
|
114
146
|
if @jdbc_validate_connection
|
115
147
|
@database.extension(:connection_validator)
|
116
148
|
@database.pool.connection_validation_timeout = @jdbc_validation_timeout
|
@@ -122,7 +154,8 @@ module LogStash::PluginMixins::Jdbc
|
|
122
154
|
#TODO return false and let the plugin raise a LogStash::ConfigurationError
|
123
155
|
raise e
|
124
156
|
end
|
125
|
-
|
157
|
+
@database.sql_log_level = @sql_log_level.to_sym
|
158
|
+
@database.logger = @logger
|
126
159
|
@sql_last_start = Time.at(0).utc
|
127
160
|
end # def prepare_jdbc_connection
|
128
161
|
|
@@ -134,10 +167,10 @@ module LogStash::PluginMixins::Jdbc
|
|
134
167
|
public
|
135
168
|
def execute_statement(statement, parameters)
|
136
169
|
success = false
|
137
|
-
begin
|
170
|
+
begin
|
138
171
|
parameters = symbolized_params(parameters)
|
139
172
|
query = @database[statement, parameters]
|
140
|
-
@logger.debug? and @logger.debug("Executing JDBC query", :statement => statement, :parameters => parameters)
|
173
|
+
@logger.debug? and @logger.debug("Executing JDBC query", :statement => statement, :parameters => parameters, :count => query.count)
|
141
174
|
@sql_last_start = Time.now.utc
|
142
175
|
|
143
176
|
if @jdbc_paging_enabled
|
@@ -159,9 +192,9 @@ module LogStash::PluginMixins::Jdbc
|
|
159
192
|
end
|
160
193
|
|
161
194
|
# Symbolize parameters keys to use with Sequel
|
162
|
-
private
|
195
|
+
private
|
163
196
|
def symbolized_params(parameters)
|
164
|
-
parameters.inject({}) do |hash,(k,v)|
|
197
|
+
parameters.inject({}) do |hash,(k,v)|
|
165
198
|
case v
|
166
199
|
when LogStash::Timestamp
|
167
200
|
hash[k.to_sym] = v.time
|
@@ -180,9 +213,14 @@ module LogStash::PluginMixins::Jdbc
|
|
180
213
|
|
181
214
|
private
|
182
215
|
def decorate_value(value)
|
216
|
+
|
183
217
|
if value.is_a?(Time)
|
184
218
|
# transform it to LogStash::Timestamp as required by LS
|
185
219
|
LogStash::Timestamp.new(value)
|
220
|
+
elsif value.is_a?(DateTime)
|
221
|
+
# Manual timezone conversion detected.
|
222
|
+
# This is slower, so we put it in as a conditional case.
|
223
|
+
LogStash::Timestamp.new(Time.parse(value.to_s))
|
186
224
|
else
|
187
225
|
value # no-op
|
188
226
|
end
|
data/logstash-input-jdbc.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-input-jdbc'
|
3
|
-
s.version = '2.0
|
3
|
+
s.version = '2.1.0'
|
4
4
|
s.licenses = ['Apache License (2.0)']
|
5
5
|
s.summary = "This example input streams a string at a definable interval."
|
6
6
|
s.description = "This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program"
|
@@ -21,6 +21,8 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.add_runtime_dependency "logstash-core", ">= 2.0.0.beta2", "< 3.0.0"
|
22
22
|
s.add_runtime_dependency 'logstash-codec-plain'
|
23
23
|
s.add_runtime_dependency 'sequel'
|
24
|
+
s.add_runtime_dependency 'tzinfo'
|
25
|
+
s.add_runtime_dependency 'tzinfo-data'
|
24
26
|
s.add_runtime_dependency 'rufus-scheduler'
|
25
27
|
|
26
28
|
s.add_development_dependency 'logstash-devutils'
|
data/spec/inputs/jdbc_spec.rb
CHANGED
@@ -5,9 +5,18 @@ require "sequel"
|
|
5
5
|
require "sequel/adapters/jdbc"
|
6
6
|
require "timecop"
|
7
7
|
require "stud/temporary"
|
8
|
+
require "time"
|
9
|
+
require "date"
|
8
10
|
|
9
11
|
describe LogStash::Inputs::Jdbc do
|
10
|
-
|
12
|
+
# This is a necessary change test-wide to guarantee that no local timezone
|
13
|
+
# is picked up. It could be arbitrarily set to any timezone, but then the test
|
14
|
+
# would have to compensate differently. That's why UTC is chosen.
|
15
|
+
ENV["TZ"] = "Etc/UTC"
|
16
|
+
let(:mixin_settings) do
|
17
|
+
{ "jdbc_user" => ENV['USER'], "jdbc_driver_class" => "org.apache.derby.jdbc.EmbeddedDriver",
|
18
|
+
"jdbc_connection_string" => "jdbc:derby:memory:testdb;create=true"}
|
19
|
+
end
|
11
20
|
let(:settings) { {} }
|
12
21
|
let(:plugin) { LogStash::Inputs::Jdbc.new(mixin_settings.merge(settings)) }
|
13
22
|
let(:queue) { Queue.new }
|
@@ -42,6 +51,20 @@ describe LogStash::Inputs::Jdbc do
|
|
42
51
|
plugin.stop
|
43
52
|
end
|
44
53
|
|
54
|
+
it "should load all drivers when passing an array" do
|
55
|
+
mixin_settings['jdbc_driver_library'] = '/foo/bar,/bar/foo'
|
56
|
+
expect(plugin).to receive(:load_drivers).with(['/foo/bar', '/bar/foo'])
|
57
|
+
plugin.register
|
58
|
+
plugin.stop
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should load all drivers when using a single value" do
|
62
|
+
mixin_settings['jdbc_driver_library'] = '/foo/bar'
|
63
|
+
expect(plugin).to receive(:load_drivers).with(['/foo/bar'])
|
64
|
+
plugin.register
|
65
|
+
plugin.stop
|
66
|
+
end
|
67
|
+
|
45
68
|
it "should stop without raising exception" do
|
46
69
|
plugin.register
|
47
70
|
expect { plugin.stop }.to_not raise_error
|
@@ -199,6 +222,77 @@ describe LogStash::Inputs::Jdbc do
|
|
199
222
|
end
|
200
223
|
end
|
201
224
|
|
225
|
+
context "when fetching time data with jdbc_default_timezone set" do
|
226
|
+
let(:mixin_settings) do
|
227
|
+
{ "jdbc_user" => ENV['USER'], "jdbc_driver_class" => "org.apache.derby.jdbc.EmbeddedDriver",
|
228
|
+
"jdbc_connection_string" => "jdbc:derby:memory:testdb;create=true",
|
229
|
+
"jdbc_default_timezone" => "America/Chicago"
|
230
|
+
}
|
231
|
+
end
|
232
|
+
|
233
|
+
let(:settings) do
|
234
|
+
{
|
235
|
+
"statement" => "SELECT * from test_table",
|
236
|
+
}
|
237
|
+
end
|
238
|
+
|
239
|
+
let(:num_rows) { 10 }
|
240
|
+
|
241
|
+
before do
|
242
|
+
num_rows.times do
|
243
|
+
db[:test_table].insert(:num => 1, :custom_time => "2015-01-01 12:00:00", :created_at => Time.now.utc)
|
244
|
+
end
|
245
|
+
|
246
|
+
plugin.register
|
247
|
+
end
|
248
|
+
|
249
|
+
after do
|
250
|
+
plugin.stop
|
251
|
+
end
|
252
|
+
|
253
|
+
it "should convert the time to reflect the timezone " do
|
254
|
+
plugin.run(queue)
|
255
|
+
event = queue.pop
|
256
|
+
# This reflects a 6 hour time difference between UTC and America/Chicago
|
257
|
+
expect(event["custom_time"].time).to eq(Time.iso8601("2015-01-01T18:00:00Z"))
|
258
|
+
end
|
259
|
+
end
|
260
|
+
|
261
|
+
context "when fetching time data without jdbc_default_timezone set" do
|
262
|
+
let(:mixin_settings) do
|
263
|
+
{ "jdbc_user" => ENV['USER'], "jdbc_driver_class" => "org.apache.derby.jdbc.EmbeddedDriver",
|
264
|
+
"jdbc_connection_string" => "jdbc:derby:memory:testdb;create=true"
|
265
|
+
}
|
266
|
+
end
|
267
|
+
|
268
|
+
let(:settings) do
|
269
|
+
{
|
270
|
+
"statement" => "SELECT * from test_table",
|
271
|
+
}
|
272
|
+
end
|
273
|
+
|
274
|
+
let(:num_rows) { 1 }
|
275
|
+
|
276
|
+
before do
|
277
|
+
num_rows.times do
|
278
|
+
db.run "INSERT INTO test_table (created_at, num, custom_time) VALUES (TIMESTAMP('2015-01-01 12:00:00'), 1, TIMESTAMP('2015-01-01 12:00:00'))"
|
279
|
+
end
|
280
|
+
|
281
|
+
plugin.register
|
282
|
+
end
|
283
|
+
|
284
|
+
after do
|
285
|
+
plugin.stop
|
286
|
+
end
|
287
|
+
|
288
|
+
it "should not convert the time to reflect the timezone " do
|
289
|
+
plugin.run(queue)
|
290
|
+
event = queue.pop
|
291
|
+
# With no timezone set, no change should occur
|
292
|
+
expect(event["custom_time"].time).to eq(Time.iso8601("2015-01-01T12:00:00Z"))
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
202
296
|
context "when iteratively running plugin#run" do
|
203
297
|
let(:settings) do
|
204
298
|
{"statement" => "SELECT num, created_at FROM test_table WHERE created_at > :sql_last_start"}
|
@@ -379,4 +473,37 @@ describe LogStash::Inputs::Jdbc do
|
|
379
473
|
expect { plugin.register }.to raise_error(Sequel::PoolTimeout)
|
380
474
|
end
|
381
475
|
end
|
476
|
+
|
477
|
+
context "when using logging" do
|
478
|
+
|
479
|
+
let(:settings) do
|
480
|
+
{
|
481
|
+
"statement" => "SELECT * from test_table", "sql_log_level" => "debug"
|
482
|
+
}
|
483
|
+
end
|
484
|
+
|
485
|
+
let(:num_rows) { 5 }
|
486
|
+
|
487
|
+
before do
|
488
|
+
plugin.instance_variable_set("@logger", logger)
|
489
|
+
allow(logger).to receive(:debug?)
|
490
|
+
num_rows.times do
|
491
|
+
db[:test_table].insert(:num => 1)
|
492
|
+
end
|
493
|
+
|
494
|
+
plugin.register
|
495
|
+
end
|
496
|
+
|
497
|
+
after do
|
498
|
+
plugin.stop
|
499
|
+
end
|
500
|
+
|
501
|
+
let(:logger) { double("logger") }
|
502
|
+
|
503
|
+
it "should report the staments to logging" do
|
504
|
+
expect(logger).to receive(:debug).with(kind_of(String)).once
|
505
|
+
plugin.run(queue)
|
506
|
+
end
|
507
|
+
end
|
508
|
+
|
382
509
|
end
|
metadata
CHANGED
@@ -1,148 +1,176 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-jdbc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
|
15
|
-
version_requirements: !ruby/object:Gem::Requirement
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
16
15
|
requirements:
|
17
|
-
- -
|
16
|
+
- - ">="
|
18
17
|
- !ruby/object:Gem::Version
|
19
18
|
version: 2.0.0.beta2
|
20
|
-
- - <
|
19
|
+
- - "<"
|
21
20
|
- !ruby/object:Gem::Version
|
22
21
|
version: 3.0.0
|
23
|
-
|
22
|
+
name: logstash-core
|
23
|
+
prerelease: false
|
24
|
+
type: :runtime
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
26
|
requirements:
|
25
|
-
- -
|
27
|
+
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
27
29
|
version: 2.0.0.beta2
|
28
|
-
- - <
|
30
|
+
- - "<"
|
29
31
|
- !ruby/object:Gem::Version
|
30
32
|
version: 3.0.0
|
31
|
-
prerelease: false
|
32
|
-
type: :runtime
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - ">="
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
34
39
|
name: logstash-codec-plain
|
40
|
+
prerelease: false
|
41
|
+
type: :runtime
|
35
42
|
version_requirements: !ruby/object:Gem::Requirement
|
36
43
|
requirements:
|
37
|
-
- -
|
44
|
+
- - ">="
|
38
45
|
- !ruby/object:Gem::Version
|
39
46
|
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
40
48
|
requirement: !ruby/object:Gem::Requirement
|
41
49
|
requirements:
|
42
|
-
- -
|
50
|
+
- - ">="
|
43
51
|
- !ruby/object:Gem::Version
|
44
52
|
version: '0'
|
53
|
+
name: sequel
|
45
54
|
prerelease: false
|
46
55
|
type: :runtime
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: sequel
|
49
56
|
version_requirements: !ruby/object:Gem::Requirement
|
50
57
|
requirements:
|
51
|
-
- -
|
58
|
+
- - ">="
|
52
59
|
- !ruby/object:Gem::Version
|
53
60
|
version: '0'
|
61
|
+
- !ruby/object:Gem::Dependency
|
54
62
|
requirement: !ruby/object:Gem::Requirement
|
55
63
|
requirements:
|
56
|
-
- -
|
64
|
+
- - ">="
|
57
65
|
- !ruby/object:Gem::Version
|
58
66
|
version: '0'
|
67
|
+
name: tzinfo
|
59
68
|
prerelease: false
|
60
69
|
type: :runtime
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: rufus-scheduler
|
63
70
|
version_requirements: !ruby/object:Gem::Requirement
|
64
71
|
requirements:
|
65
|
-
- -
|
72
|
+
- - ">="
|
66
73
|
- !ruby/object:Gem::Version
|
67
74
|
version: '0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
68
76
|
requirement: !ruby/object:Gem::Requirement
|
69
77
|
requirements:
|
70
|
-
- -
|
78
|
+
- - ">="
|
71
79
|
- !ruby/object:Gem::Version
|
72
80
|
version: '0'
|
81
|
+
name: tzinfo-data
|
73
82
|
prerelease: false
|
74
83
|
type: :runtime
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
75
89
|
- !ruby/object:Gem::Dependency
|
76
|
-
|
90
|
+
requirement: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
name: rufus-scheduler
|
96
|
+
prerelease: false
|
97
|
+
type: :runtime
|
77
98
|
version_requirements: !ruby/object:Gem::Requirement
|
78
99
|
requirements:
|
79
|
-
- -
|
100
|
+
- - ">="
|
80
101
|
- !ruby/object:Gem::Version
|
81
102
|
version: '0'
|
103
|
+
- !ruby/object:Gem::Dependency
|
82
104
|
requirement: !ruby/object:Gem::Requirement
|
83
105
|
requirements:
|
84
|
-
- -
|
106
|
+
- - ">="
|
85
107
|
- !ruby/object:Gem::Version
|
86
108
|
version: '0'
|
109
|
+
name: logstash-devutils
|
87
110
|
prerelease: false
|
88
111
|
type: :development
|
89
|
-
- !ruby/object:Gem::Dependency
|
90
|
-
name: timecop
|
91
112
|
version_requirements: !ruby/object:Gem::Requirement
|
92
113
|
requirements:
|
93
|
-
- -
|
114
|
+
- - ">="
|
94
115
|
- !ruby/object:Gem::Version
|
95
116
|
version: '0'
|
117
|
+
- !ruby/object:Gem::Dependency
|
96
118
|
requirement: !ruby/object:Gem::Requirement
|
97
119
|
requirements:
|
98
|
-
- -
|
120
|
+
- - ">="
|
99
121
|
- !ruby/object:Gem::Version
|
100
122
|
version: '0'
|
123
|
+
name: timecop
|
101
124
|
prerelease: false
|
102
125
|
type: :development
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: jdbc-derby
|
105
126
|
version_requirements: !ruby/object:Gem::Requirement
|
106
127
|
requirements:
|
107
|
-
- -
|
128
|
+
- - ">="
|
108
129
|
- !ruby/object:Gem::Version
|
109
130
|
version: '0'
|
131
|
+
- !ruby/object:Gem::Dependency
|
110
132
|
requirement: !ruby/object:Gem::Requirement
|
111
133
|
requirements:
|
112
|
-
- -
|
134
|
+
- - ">="
|
113
135
|
- !ruby/object:Gem::Version
|
114
136
|
version: '0'
|
137
|
+
name: jdbc-derby
|
115
138
|
prerelease: false
|
116
139
|
type: :development
|
117
|
-
- !ruby/object:Gem::Dependency
|
118
|
-
name: docker-api
|
119
140
|
version_requirements: !ruby/object:Gem::Requirement
|
120
141
|
requirements:
|
121
|
-
- -
|
142
|
+
- - ">="
|
122
143
|
- !ruby/object:Gem::Version
|
123
144
|
version: '0'
|
145
|
+
- !ruby/object:Gem::Dependency
|
124
146
|
requirement: !ruby/object:Gem::Requirement
|
125
147
|
requirements:
|
126
|
-
- -
|
148
|
+
- - ">="
|
127
149
|
- !ruby/object:Gem::Version
|
128
150
|
version: '0'
|
151
|
+
name: docker-api
|
129
152
|
prerelease: false
|
130
153
|
type: :development
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - ">="
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
131
159
|
description: This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program
|
132
160
|
email: info@elastic.co
|
133
161
|
executables: []
|
134
162
|
extensions: []
|
135
163
|
extra_rdoc_files: []
|
136
164
|
files:
|
137
|
-
- lib/logstash/inputs/jdbc.rb
|
138
|
-
- lib/logstash/plugin_mixins/jdbc.rb
|
139
|
-
- spec/inputs/jdbc_spec.rb
|
140
|
-
- logstash-input-jdbc.gemspec
|
141
|
-
- README.md
|
142
165
|
- CHANGELOG.md
|
143
166
|
- Gemfile
|
144
167
|
- LICENSE
|
145
168
|
- NOTICE.TXT
|
169
|
+
- README.md
|
170
|
+
- lib/logstash/inputs/jdbc.rb
|
171
|
+
- lib/logstash/plugin_mixins/jdbc.rb
|
172
|
+
- logstash-input-jdbc.gemspec
|
173
|
+
- spec/inputs/jdbc_spec.rb
|
146
174
|
homepage: http://www.elastic.co/guide/en/logstash/current/index.html
|
147
175
|
licenses:
|
148
176
|
- Apache License (2.0)
|
@@ -155,17 +183,17 @@ require_paths:
|
|
155
183
|
- lib
|
156
184
|
required_ruby_version: !ruby/object:Gem::Requirement
|
157
185
|
requirements:
|
158
|
-
- -
|
186
|
+
- - ">="
|
159
187
|
- !ruby/object:Gem::Version
|
160
188
|
version: '0'
|
161
189
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
190
|
requirements:
|
163
|
-
- -
|
191
|
+
- - ">="
|
164
192
|
- !ruby/object:Gem::Version
|
165
193
|
version: '0'
|
166
194
|
requirements: []
|
167
195
|
rubyforge_project:
|
168
|
-
rubygems_version: 2.
|
196
|
+
rubygems_version: 2.4.8
|
169
197
|
signing_key:
|
170
198
|
specification_version: 4
|
171
199
|
summary: This example input streams a string at a definable interval.
|