logstash-filter-jdbc_static 1.0.1 → 1.0.2
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 +7 -2
- data/Gemfile +9 -0
- data/docs/index.asciidoc +577 -0
- data/lib/logstash-filter-jdbc_static_jars.rb +4 -4
- data/lib/logstash/filters/jdbc/basic_database.rb +15 -1
- data/lib/logstash/filters/jdbc/column.rb +1 -0
- data/lib/logstash/filters/jdbc/db_object.rb +4 -6
- data/lib/logstash/filters/jdbc/loader.rb +8 -3
- data/lib/logstash/filters/jdbc/loader_schedule.rb +30 -4
- data/lib/logstash/filters/jdbc/lookup.rb +1 -0
- data/lib/logstash/filters/jdbc/lookup_processor.rb +5 -6
- data/lib/logstash/filters/jdbc/lookup_result.rb +1 -0
- data/lib/logstash/filters/jdbc/read_write_database.rb +28 -16
- data/lib/logstash/filters/jdbc/repeating_load_runner.rb +2 -0
- data/lib/logstash/filters/jdbc/single_load_runner.rb +8 -5
- data/lib/logstash/filters/jdbc/validatable.rb +2 -5
- data/lib/logstash/filters/jdbc_static.rb +26 -7
- data/logstash-filter-jdbc_static.gemspec +7 -12
- data/spec/filters/jdbc/column_spec.rb +2 -2
- data/spec/filters/jdbc/loader_spec.rb +1 -0
- data/spec/filters/jdbc/read_only_database_spec.rb +26 -2
- data/spec/filters/jdbc/read_write_database_spec.rb +18 -17
- data/spec/filters/jdbc/repeating_load_runner_spec.rb +1 -1
- data/spec/filters/jdbc_static_spec.rb +95 -17
- data/spec/filters/shared_helpers.rb +3 -4
- data/vendor/jar-dependencies/{runtime-jars → org/apache/derby/derby/10.14.1.0}/derby-10.14.1.0.jar +0 -0
- data/vendor/jar-dependencies/{runtime-jars → org/apache/derby/derbyclient/10.14.1.0}/derbyclient-10.14.1.0.jar +0 -0
- metadata +22 -9
@@ -1,29 +1,23 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-filter-jdbc_static'
|
3
|
-
s.version = '1.0.
|
4
|
-
s.licenses = ['Apache
|
3
|
+
s.version = '1.0.2'
|
4
|
+
s.licenses = ['Apache-2.0']
|
5
5
|
s.summary = "This filter executes a SQL query to fetch a SQL query result, store it locally then use a second SQL query to update an event."
|
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/logstash-plugin install gemname. This gem is not a stand-alone program"
|
7
7
|
s.authors = ["Elastic"]
|
8
8
|
s.email = 'info@elastic.co'
|
9
9
|
s.homepage = "http://www.elastic.co/guide/en/logstash/current/index.html"
|
10
|
-
|
11
|
-
# the rake vendor task removes jars dir and jars downloaded to it
|
12
|
-
s.require_paths = ["lib", "jars"]
|
10
|
+
s.require_paths = ["lib", "vendor/jar-dependencies"]
|
13
11
|
|
14
12
|
# Files
|
15
|
-
s.files = Dir[
|
16
|
-
|
13
|
+
s.files = Dir["lib/**/*","spec/**/*","*.gemspec","*.md","CONTRIBUTORS","Gemfile","LICENSE","NOTICE.TXT", "vendor/jar-dependencies/**/*.jar", "vendor/jar-dependencies/**/*.rb", "VERSION", "docs/**/*"]
|
14
|
+
|
15
|
+
# Tests
|
17
16
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
18
17
|
|
19
18
|
# Special flag to let us know this is actually a logstash plugin
|
20
19
|
s.metadata = { "logstash_plugin" => "true", "logstash_group" => "filter" }
|
21
20
|
|
22
|
-
derby_version = "10.14.1.0"
|
23
|
-
s.requirements << "jar 'org.apache.derby:derby', '#{derby_version}'"
|
24
|
-
s.requirements << "jar 'org.apache.derby:derbyclient', '#{derby_version}'"
|
25
|
-
# we may need 'org.apache.derby:derbynet' in the future, marking this here
|
26
|
-
|
27
21
|
s.add_development_dependency 'jar-dependencies', '~> 0.3'
|
28
22
|
|
29
23
|
# Gem dependencies
|
@@ -34,5 +28,6 @@ Gem::Specification.new do |s|
|
|
34
28
|
s.add_runtime_dependency 'rufus-scheduler'
|
35
29
|
|
36
30
|
s.add_development_dependency 'logstash-devutils'
|
31
|
+
s.add_development_dependency 'timecop'
|
37
32
|
s.add_development_dependency "childprocess"
|
38
33
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
require "logstash/devutils/rspec/spec_helper"
|
3
3
|
require "logstash/filters/jdbc/column"
|
4
4
|
|
5
|
-
describe LogStash::Filters::Jdbc::Column
|
5
|
+
describe LogStash::Filters::Jdbc::Column do
|
6
6
|
let(:invalid_messages) do
|
7
7
|
[
|
8
8
|
"The column options must be an array",
|
@@ -67,4 +67,4 @@ describe LogStash::Filters::Jdbc::Column do
|
|
67
67
|
expect(instance.formatted_errors).to eq("")
|
68
68
|
end
|
69
69
|
end
|
70
|
-
end
|
70
|
+
end
|
@@ -8,13 +8,14 @@ module LogStash module Filters module Jdbc
|
|
8
8
|
let(:db) { Sequel.connect('mock://mydb') }
|
9
9
|
let(:connection_string) { "mock://mydb" }
|
10
10
|
let(:driver_class) { "org.apache.derby.jdbc.EmbeddedDriver" }
|
11
|
-
|
11
|
+
let(:driver_library) { nil }
|
12
|
+
subject(:read_only_db) { described_class.create(connection_string, driver_class, driver_library) }
|
12
13
|
|
13
14
|
describe "basic operations" do
|
14
15
|
describe "initializing" do
|
15
16
|
it "tests the connection with defaults" do
|
16
17
|
expect(Sequel::JDBC).to receive(:load_driver).once.with(driver_class)
|
17
|
-
expect(Sequel).to receive(:connect).once.with(connection_string, {:test => true})
|
18
|
+
expect(Sequel).to receive(:connect).once.with(connection_string, {:test => true})
|
18
19
|
expect(read_only_db.empty_record_set).to eq([])
|
19
20
|
end
|
20
21
|
|
@@ -37,6 +38,29 @@ module LogStash module Filters module Jdbc
|
|
37
38
|
end
|
38
39
|
end
|
39
40
|
|
41
|
+
describe "multiple driver loading" do
|
42
|
+
before :each do
|
43
|
+
allow(Sequel::JDBC).to receive(:load_driver)
|
44
|
+
allow_any_instance_of(described_class).to receive(:make_driver_path_loadable)
|
45
|
+
end
|
46
|
+
|
47
|
+
context "using three drivers" do
|
48
|
+
it "makes all loadable" do
|
49
|
+
expect_any_instance_of(described_class).to receive(:make_driver_path_loadable).with(anything, "/foo/bar.jar")
|
50
|
+
expect_any_instance_of(described_class).to receive(:make_driver_path_loadable).with(anything, "/foo/baz.jar")
|
51
|
+
expect_any_instance_of(described_class).to receive(:make_driver_path_loadable).with(anything, "/foo/biz.jar")
|
52
|
+
described_class.create("mock://mydb", "a driver class", "/foo/bar.jar, /foo/baz.jar, /foo/biz.jar")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context "just one driver" do
|
57
|
+
it "makes one loadable" do
|
58
|
+
expect_any_instance_of(described_class).to receive(:make_driver_path_loadable).once.with(anything, "/foo/bar.jar")
|
59
|
+
described_class.create("mock://mydb", "a driver class", "/foo/bar.jar")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
40
64
|
describe "methods" do
|
41
65
|
let(:dataset) { double("Sequel::Dataset") }
|
42
66
|
|
@@ -4,11 +4,13 @@ require "logstash-filter-jdbc_static_jars"
|
|
4
4
|
require "logstash/util/password"
|
5
5
|
require "logstash/filters/jdbc/db_object"
|
6
6
|
require "logstash/filters/jdbc/read_write_database"
|
7
|
+
require "stud/temporary"
|
7
8
|
|
8
9
|
module LogStash module Filters module Jdbc
|
9
10
|
describe ReadWriteDatabase do
|
10
11
|
let(:db) { Sequel.connect('mock://mydb') }
|
11
12
|
let(:connection_string_regex) { /jdbc:derby:memory:\w+;create=true/ }
|
13
|
+
let(:temp_import_path_plugin) { Stud::Temporary.pathname }
|
12
14
|
subject(:read_write_db) { described_class.create }
|
13
15
|
|
14
16
|
describe "basic operations" do
|
@@ -26,8 +28,8 @@ module LogStash module Filters module Jdbc
|
|
26
28
|
user = "a user"
|
27
29
|
password = Util::Password.new("secret")
|
28
30
|
expect(::Sequel::JDBC).to receive(:load_driver).once.with("a driver class")
|
29
|
-
expect(::Sequel).to receive(:connect).once.with(connection_str, {:user => user, :password =>
|
30
|
-
expect(::Sequel).to receive(:connect).once.with(connection_str, {:user => user, :password =>
|
31
|
+
expect(::Sequel).to receive(:connect).once.with(connection_str, {:user => user, :password => password.value, :test => true}).and_return(db)
|
32
|
+
expect(::Sequel).to receive(:connect).once.with(connection_str, {:user => user, :password => password.value}).and_return(db)
|
31
33
|
described_class.create(connection_str, "a driver class", nil, user, password)
|
32
34
|
end
|
33
35
|
end
|
@@ -37,36 +39,35 @@ module LogStash module Filters module Jdbc
|
|
37
39
|
let(:loaders) { [] }
|
38
40
|
let(:loader) { double("Loader") }
|
39
41
|
let(:table_name) { "users" }
|
40
|
-
let(:temp_name) { "users_temp" }
|
41
42
|
let(:random_table_name) { "foobarbaz" }
|
43
|
+
let(:multi_insert_sql) { "INSERT VALUES (1, 2, 3)" }
|
42
44
|
|
43
45
|
before(:each) do
|
46
|
+
FileUtils.mkdir_p(temp_import_path_plugin)
|
44
47
|
allow(::Sequel::JDBC).to receive(:load_driver)
|
48
|
+
# allow(::Sequel).to receive(:connect).twice.and_return(db)
|
45
49
|
allow(::Sequel).to receive(:connect).twice.and_return(db)
|
46
|
-
allow(loader).to receive(:fetch).and_return([1,2,3])
|
50
|
+
allow(loader).to receive(:fetch).and_return([{:a => 1, :b => 2, :c => 3}])
|
47
51
|
allow(loader).to receive(:table).and_return(table_name)
|
48
|
-
allow(loader).to receive(:
|
52
|
+
allow(loader).to receive(:id).and_return("some_id")
|
53
|
+
allow(loader).to receive(:staging_directory).and_return(temp_import_path_plugin)
|
49
54
|
allow(described_class).to receive(:random_name).and_return(random_table_name)
|
50
55
|
loaders.push(loader)
|
51
56
|
end
|
52
57
|
|
53
58
|
it "the populate_all method fills a local_db from the dataset" do
|
54
|
-
expect(db).to receive(:[]).with(loader.
|
55
|
-
expect(dataset).to receive(:
|
56
|
-
|
57
|
-
expect(db).to receive(:
|
58
|
-
expect(db).to receive(:rename_table).once.with(random_table_name, table_name)
|
59
|
-
expect(dataset).to receive(:truncate).once
|
59
|
+
expect(db).to receive(:[]).with(loader.table).once.and_return(dataset)
|
60
|
+
expect(dataset).to receive(:literal).and_return(1.to_s, 2.to_s, 3.to_s)
|
61
|
+
import_file_path = ::File.join(temp_import_path_plugin, loader.table)
|
62
|
+
expect(db).to receive(:execute_ddl).once.with("CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE (null,'#{loader.table.upcase}','#{import_file_path}',null,'''',null,1)")
|
60
63
|
read_write_db.populate_all(loaders)
|
61
64
|
end
|
62
65
|
|
63
66
|
it "the repopulate_all method fills a local_db from the dataset" do
|
64
|
-
expect(db).to receive(:[]).with(loader.
|
65
|
-
expect(dataset).to receive(:
|
66
|
-
|
67
|
-
expect(db).to receive(:
|
68
|
-
expect(db).to receive(:rename_table).once.with(random_table_name, table_name)
|
69
|
-
expect(dataset).to receive(:truncate).once
|
67
|
+
expect(db).to receive(:[]).with(loader.table).once.and_return(dataset)
|
68
|
+
expect(dataset).to receive(:literal).and_return(1.to_s, 2.to_s, 3.to_s)
|
69
|
+
import_file_path = ::File.join(temp_import_path_plugin, loader.table)
|
70
|
+
expect(db).to receive(:execute_ddl).once.with("CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE (null,'#{loader.table.upcase}','#{import_file_path}',null,'''',null,1)")
|
70
71
|
read_write_db.repopulate_all(loaders)
|
71
72
|
end
|
72
73
|
|
@@ -3,12 +3,25 @@ require "logstash/devutils/rspec/spec_helper"
|
|
3
3
|
require "logstash/filters/jdbc_static"
|
4
4
|
require "sequel"
|
5
5
|
require "sequel/adapters/jdbc"
|
6
|
+
require "stud/temporary"
|
7
|
+
require "timecop"
|
8
|
+
|
9
|
+
LogStash::Logging::Logger::configure_logging("ERROR")
|
6
10
|
|
7
11
|
module LogStash module Filters
|
8
12
|
describe JdbcStatic do
|
13
|
+
|
14
|
+
before(:all) do
|
15
|
+
@thread_abort = Thread.abort_on_exception
|
16
|
+
Thread.abort_on_exception = true
|
17
|
+
end
|
18
|
+
|
9
19
|
let(:db1) { ::Sequel.connect("jdbc:derby:memory:testdb;create=true", :user=> nil, :password=> nil) }
|
10
|
-
let(:
|
11
|
-
|
20
|
+
let(:loader_statement) { "SELECT ip, name, location FROM reference_table" }
|
21
|
+
let(:lookup_statement) { "SELECT * FROM servers WHERE ip LIKE :ip" }
|
22
|
+
let(:parameters_rhs) { "%%{[ip]}" }
|
23
|
+
let(:temp_import_path_plugin) { Stud::Temporary.pathname }
|
24
|
+
let(:temp_import_path_rspec) { Stud::Temporary.pathname }
|
12
25
|
|
13
26
|
let(:local_db_objects) do
|
14
27
|
[
|
@@ -21,15 +34,15 @@ module LogStash module Filters
|
|
21
34
|
"loaders" => [
|
22
35
|
{
|
23
36
|
"id" =>"servers",
|
24
|
-
"query" =>
|
37
|
+
"query" => loader_statement,
|
25
38
|
"local_table" => "servers"
|
26
39
|
}
|
27
40
|
],
|
28
41
|
"local_db_objects" => local_db_objects,
|
29
42
|
"local_lookups" => [
|
30
43
|
{
|
31
|
-
"query" =>
|
32
|
-
"parameters" => {"ip" =>
|
44
|
+
"query" => lookup_statement,
|
45
|
+
"parameters" => {"ip" => parameters_rhs},
|
33
46
|
"target" => "server"
|
34
47
|
}
|
35
48
|
]
|
@@ -38,33 +51,98 @@ module LogStash module Filters
|
|
38
51
|
|
39
52
|
let(:mixin_settings) do
|
40
53
|
{ "jdbc_user" => ENV['USER'], "jdbc_driver_class" => "org.apache.derby.jdbc.EmbeddedDriver",
|
41
|
-
"jdbc_connection_string" => "jdbc:derby:memory:testdb;create=true"
|
54
|
+
"jdbc_connection_string" => "jdbc:derby:memory:testdb;create=true",
|
55
|
+
"staging_directory" => temp_import_path_plugin
|
56
|
+
}
|
42
57
|
end
|
58
|
+
|
59
|
+
let(:add_records) do
|
60
|
+
lambda do |fd|
|
61
|
+
fd.puts "'10.1.1.1', 'ldn-server-1', 'LDN-2-3-4'"
|
62
|
+
fd.puts "'10.2.1.1', 'nyc-server-1', 'NYC-5-2-8'"
|
63
|
+
fd.puts "'10.3.1.1', 'mv-serv''r-1', 'MV-9-6-4'"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
43
67
|
let(:plugin) { JdbcStatic.new(mixin_settings.merge(settings)) }
|
44
68
|
|
45
69
|
before do
|
46
70
|
db1.drop_table(:reference_table) rescue nil
|
47
|
-
db1.create_table
|
71
|
+
db1.create_table(:reference_table) do
|
48
72
|
String :ip
|
49
73
|
String :name
|
50
74
|
String :location
|
51
75
|
end
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
76
|
+
::File.open(temp_import_path_rspec, "w") do |fd|
|
77
|
+
add_records.call(fd)
|
78
|
+
end
|
79
|
+
import_cmd = "CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE (null,'REFERENCE_TABLE','#{temp_import_path_rspec}',null,'''',null,1)"
|
80
|
+
db1.execute_ddl(import_cmd)
|
57
81
|
end
|
58
82
|
|
59
|
-
after { plugin.stop }
|
60
|
-
|
61
83
|
let(:event) { ::LogStash::Event.new("message" => "some text", "ip" => ipaddr) }
|
62
84
|
|
63
85
|
let(:ipaddr) { ".3.1.1" }
|
64
86
|
|
65
|
-
|
66
|
-
plugin.
|
67
|
-
|
87
|
+
describe "non scheduled operation" do
|
88
|
+
after { plugin.stop }
|
89
|
+
|
90
|
+
context "under normal conditions" do
|
91
|
+
it "enhances an event" do
|
92
|
+
plugin.register
|
93
|
+
plugin.filter(event)
|
94
|
+
expect(event.get("server")).to eq([{"ip"=>"10.3.1.1", "name"=>"mv-serv'r-1", "location"=>"MV-9-6-4"}])
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
context "when the loader query returns no results" do
|
99
|
+
let(:loader_statement) { "SELECT ip, name, location FROM reference_table WHERE ip LIKE '20%'" }
|
100
|
+
it "add an empty array to the target field" do
|
101
|
+
plugin.register
|
102
|
+
plugin.filter(event)
|
103
|
+
expect(event.get("server")).to eq([])
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
context "when the loader query returns a large recordset, local db is filled in chunks" do
|
108
|
+
let(:add_records) do
|
109
|
+
lambda do |fd|
|
110
|
+
256.times do |octet3|
|
111
|
+
256.times do |octet4|
|
112
|
+
fd.puts "'10.4.#{octet3}.#{octet4}', 'server-#{octet3}-#{octet4}', 'MV-10-#{octet3}-#{octet4}'"
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
let(:ipaddr) { "10.4.254.255" }
|
118
|
+
let(:lookup_statement) { "SELECT * FROM servers WHERE ip = :ip" }
|
119
|
+
let(:parameters_rhs) { "ip" }
|
120
|
+
it "enhances an event" do
|
121
|
+
plugin.register
|
122
|
+
plugin.filter(event)
|
123
|
+
expect(event.get("server")).to eq([{"ip"=>ipaddr, "name"=>"server-254-255", "location"=>"MV-10-254-255"}])
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
describe "scheduled operation" do
|
129
|
+
context "given a loader_schedule" do
|
130
|
+
it "should properly schedule" do
|
131
|
+
settings["loader_schedule"] = "*/10 * * * * * UTC"
|
132
|
+
Timecop.travel(Time.now.utc - 3600)
|
133
|
+
Timecop.scale(60)
|
134
|
+
static_filter = JdbcStatic.new(mixin_settings.merge(settings))
|
135
|
+
runner = Thread.new(static_filter) do |filter|
|
136
|
+
filter.register
|
137
|
+
end
|
138
|
+
sleep 3
|
139
|
+
static_filter.filter(event)
|
140
|
+
expect(static_filter.loader_runner.reload_count).to be > 1
|
141
|
+
static_filter.stop
|
142
|
+
Timecop.return
|
143
|
+
expect(event.get("server")).to eq([{"ip"=>"10.3.1.1", "name"=>"mv-serv'r-1", "location"=>"MV-9-6-4"}])
|
144
|
+
end
|
145
|
+
end
|
68
146
|
end
|
69
147
|
end
|
70
148
|
end end
|
@@ -12,12 +12,11 @@ RSpec.shared_examples "a single load runner" do
|
|
12
12
|
|
13
13
|
it "builds local db objects and populates the local db" do
|
14
14
|
expect(local_db).to receive(:populate_all).once.with(loaders)
|
15
|
-
expect(local_db).to receive(:build_db_object).
|
15
|
+
expect(local_db).to receive(:build_db_object).once.with(instance_of(LogStash::Filters::Jdbc::DbObject))
|
16
16
|
runner.initial_load
|
17
17
|
expect(runner.preloaders).to be_a(Array)
|
18
|
-
expect(runner.preloaders.size).to eq(
|
18
|
+
expect(runner.preloaders.size).to eq(1)
|
19
19
|
expect(runner.preloaders[0].name).to eq(:servers)
|
20
|
-
expect(runner.preloaders[1].name).to eq(:temp_servers)
|
21
20
|
expect(runner.local).to eq(local_db)
|
22
21
|
expect(runner.loaders).to eq(loaders)
|
23
22
|
end
|
@@ -32,4 +31,4 @@ RSpec.shared_examples "a single load runner" do
|
|
32
31
|
expect(runner.loaders).to eq(loaders)
|
33
32
|
end
|
34
33
|
end
|
35
|
-
end
|
34
|
+
end
|
data/vendor/jar-dependencies/{runtime-jars → org/apache/derby/derby/10.14.1.0}/derby-10.14.1.0.jar
RENAMED
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-filter-jdbc_static
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,6 +114,20 @@ dependencies:
|
|
114
114
|
- - ">="
|
115
115
|
- !ruby/object:Gem::Version
|
116
116
|
version: '0'
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
requirement: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
123
|
+
name: timecop
|
124
|
+
prerelease: false
|
125
|
+
type: :development
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
117
131
|
- !ruby/object:Gem::Dependency
|
118
132
|
requirement: !ruby/object:Gem::Requirement
|
119
133
|
requirements:
|
@@ -141,6 +155,7 @@ files:
|
|
141
155
|
- Gemfile
|
142
156
|
- LICENSE
|
143
157
|
- README.md
|
158
|
+
- docs/index.asciidoc
|
144
159
|
- lib/logstash-filter-jdbc_static_jars.rb
|
145
160
|
- lib/logstash/filters/jdbc/basic_database.rb
|
146
161
|
- lib/logstash/filters/jdbc/column.rb
|
@@ -173,11 +188,11 @@ files:
|
|
173
188
|
- spec/filters/shared_helpers.rb
|
174
189
|
- spec/helpers/WHY-THIS-JAR.txt
|
175
190
|
- spec/helpers/derbyrun.jar
|
176
|
-
- vendor/jar-dependencies/
|
177
|
-
- vendor/jar-dependencies/
|
191
|
+
- vendor/jar-dependencies/org/apache/derby/derby/10.14.1.0/derby-10.14.1.0.jar
|
192
|
+
- vendor/jar-dependencies/org/apache/derby/derbyclient/10.14.1.0/derbyclient-10.14.1.0.jar
|
178
193
|
homepage: http://www.elastic.co/guide/en/logstash/current/index.html
|
179
194
|
licenses:
|
180
|
-
- Apache
|
195
|
+
- Apache-2.0
|
181
196
|
metadata:
|
182
197
|
logstash_plugin: 'true'
|
183
198
|
logstash_group: filter
|
@@ -185,7 +200,7 @@ post_install_message:
|
|
185
200
|
rdoc_options: []
|
186
201
|
require_paths:
|
187
202
|
- lib
|
188
|
-
-
|
203
|
+
- vendor/jar-dependencies
|
189
204
|
required_ruby_version: !ruby/object:Gem::Requirement
|
190
205
|
requirements:
|
191
206
|
- - ">="
|
@@ -196,9 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
211
|
- - ">="
|
197
212
|
- !ruby/object:Gem::Version
|
198
213
|
version: '0'
|
199
|
-
requirements:
|
200
|
-
- jar 'org.apache.derby:derby', '10.14.1.0'
|
201
|
-
- jar 'org.apache.derby:derbyclient', '10.14.1.0'
|
214
|
+
requirements: []
|
202
215
|
rubyforge_project:
|
203
216
|
rubygems_version: 2.6.13
|
204
217
|
signing_key:
|