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.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -2
  3. data/Gemfile +9 -0
  4. data/docs/index.asciidoc +577 -0
  5. data/lib/logstash-filter-jdbc_static_jars.rb +4 -4
  6. data/lib/logstash/filters/jdbc/basic_database.rb +15 -1
  7. data/lib/logstash/filters/jdbc/column.rb +1 -0
  8. data/lib/logstash/filters/jdbc/db_object.rb +4 -6
  9. data/lib/logstash/filters/jdbc/loader.rb +8 -3
  10. data/lib/logstash/filters/jdbc/loader_schedule.rb +30 -4
  11. data/lib/logstash/filters/jdbc/lookup.rb +1 -0
  12. data/lib/logstash/filters/jdbc/lookup_processor.rb +5 -6
  13. data/lib/logstash/filters/jdbc/lookup_result.rb +1 -0
  14. data/lib/logstash/filters/jdbc/read_write_database.rb +28 -16
  15. data/lib/logstash/filters/jdbc/repeating_load_runner.rb +2 -0
  16. data/lib/logstash/filters/jdbc/single_load_runner.rb +8 -5
  17. data/lib/logstash/filters/jdbc/validatable.rb +2 -5
  18. data/lib/logstash/filters/jdbc_static.rb +26 -7
  19. data/logstash-filter-jdbc_static.gemspec +7 -12
  20. data/spec/filters/jdbc/column_spec.rb +2 -2
  21. data/spec/filters/jdbc/loader_spec.rb +1 -0
  22. data/spec/filters/jdbc/read_only_database_spec.rb +26 -2
  23. data/spec/filters/jdbc/read_write_database_spec.rb +18 -17
  24. data/spec/filters/jdbc/repeating_load_runner_spec.rb +1 -1
  25. data/spec/filters/jdbc_static_spec.rb +95 -17
  26. data/spec/filters/shared_helpers.rb +3 -4
  27. data/vendor/jar-dependencies/{runtime-jars → org/apache/derby/derby/10.14.1.0}/derby-10.14.1.0.jar +0 -0
  28. data/vendor/jar-dependencies/{runtime-jars → org/apache/derby/derbyclient/10.14.1.0}/derbyclient-10.14.1.0.jar +0 -0
  29. 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.1'
4
- s.licenses = ['Apache License (2.0)']
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
- # to fool jar_dependencies to mimic our other plugin gradle vendor script behaviour
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['lib/**/*','vendor/**/*','spec/**/*','*.gemspec','*.md','CONTRIBUTORS','Gemfile','LICENSE','NOTICE.TXT']
16
- # Tests
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 do
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
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
  require "logstash/devutils/rspec/spec_helper"
2
3
  require "logstash/filters/jdbc/loader"
3
4
 
@@ -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
- subject(:read_only_db) { described_class.create(connection_string, driver_class) }
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}) #.and_return(db)
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 => password.value, :test => true}).and_return(db)
30
- expect(::Sequel).to receive(:connect).once.with(connection_str, {:user => user, :password => password.value}).and_return(db)
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(:temp_table).and_return(temp_name)
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.temp_table).exactly(2).and_return(dataset)
55
- expect(dataset).to receive(:multi_insert).once.with([1,2,3])
56
- expect(db).to receive(:rename_table).once.with(temp_name, random_table_name)
57
- expect(db).to receive(:rename_table).once.with(table_name, temp_name)
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.temp_table).exactly(2).and_return(dataset)
65
- expect(dataset).to receive(:multi_insert).once.with([1,2,3])
66
- expect(db).to receive(:rename_table).once.with(temp_name, random_table_name)
67
- expect(db).to receive(:rename_table).once.with(table_name, temp_name)
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
 
@@ -21,4 +21,4 @@ module LogStash module Filters module Jdbc
21
21
  end
22
22
  end
23
23
  end
24
- end end end
24
+ end end end
@@ -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(:test_loader) { "SELECT * FROM reference_table" }
11
- # let(:test_records) { db1[test_loader].all }
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" => "select ip, name, location from reference_table",
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" => "select * from servers WHERE ip LIKE :ip",
32
- "parameters" => {"ip" => "%%{[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 :reference_table do
71
+ db1.create_table(:reference_table) do
48
72
  String :ip
49
73
  String :name
50
74
  String :location
51
75
  end
52
- db1[:reference_table].insert(:ip => "10.1.1.1", :name => "ldn-server-1", :location => "LDN-2-3-4")
53
- db1[:reference_table].insert(:ip => "10.2.1.1", :name => "nyc-server-1", :location => "NYC-5-2-8")
54
- db1[:reference_table].insert(:ip => "10.3.1.1", :name => "mv-server-1", :location => "MV-9-6-4")
55
-
56
- plugin.register
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
- it "enhances an event" do
66
- plugin.filter(event)
67
- expect(event.get("server")).to eq([{"ip"=>"10.3.1.1", "name"=>"mv-server-1", "location"=>"MV-9-6-4"}])
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).twice.with(instance_of(LogStash::Filters::Jdbc::DbObject))
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(2)
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
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.1
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-03-17 00:00:00.000000000 Z
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/runtime-jars/derby-10.14.1.0.jar
177
- - vendor/jar-dependencies/runtime-jars/derbyclient-10.14.1.0.jar
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 License (2.0)
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
- - jars
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: