logstash-integration-kafka 10.6.0-java → 10.7.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/logstash/inputs/kafka.rb +1 -1
- data/lib/logstash/plugin_mixins/common.rb +11 -10
- data/logstash-integration-kafka.gemspec +2 -1
- data/spec/integration/inputs/kafka_spec.rb +18 -18
- metadata +22 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 166b8a4d60aaa51f4c22e6ba98f5ecf9c5991ce853c3dfa8ae15c85ad28ad4bd
|
4
|
+
data.tar.gz: 1fb417190daa76b08596d8c35df7004b0f1ea284eff347ab7bd5eaeabd004e0d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25150a143b4ccd2375572697df7bafadc87b35930f11e9916a7db1a25a69830ab1e3ae4a2d32119bc127c81af557af277188ef705fed24d1c8f1929e5bc1e73d
|
7
|
+
data.tar.gz: 845de0baed1db54a6ec2901b92665deca90a21f40b00400a5ae5490d6355f3771048547b158dbe19b8c7ac66587398640052c6295546793ee95251df276e35af
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## 10.7.0
|
2
|
+
- Switched use from Faraday to Manticore as HTTP client library to access Schema Registry service
|
3
|
+
to fix issue [#63](https://github.com/logstash-plugins/logstash-integration-kafka/issue/63)
|
4
|
+
|
1
5
|
## 10.6.0
|
2
6
|
- Added functionality to Kafka input to use Avro deserializer in retrieving data from Kafka. The schema is retrieved
|
3
7
|
from an instance of Confluent's Schema Registry service [#51](https://github.com/logstash-plugins/logstash-integration-kafka/pull/51)
|
@@ -4,7 +4,7 @@ require 'stud/interval'
|
|
4
4
|
require 'java'
|
5
5
|
require 'logstash-integration-kafka_jars.rb'
|
6
6
|
require 'logstash/plugin_mixins/kafka_support'
|
7
|
-
require
|
7
|
+
require 'manticore'
|
8
8
|
require "json"
|
9
9
|
require "logstash/json"
|
10
10
|
require_relative '../plugin_mixins/common'
|
@@ -45,20 +45,21 @@ module LogStash
|
|
45
45
|
|
46
46
|
private
|
47
47
|
def check_for_schema_registry_connectivity_and_subjects
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
end
|
52
|
-
if schema_registry_key and !schema_registry_key.empty?
|
53
|
-
conn.basic_auth(schema_registry_key, schema_registry_secret.value)
|
54
|
-
end
|
48
|
+
options = {}
|
49
|
+
if schema_registry_proxy && !schema_registry_proxy.empty?
|
50
|
+
options[:proxy] = schema_registry_proxy.to_s
|
55
51
|
end
|
52
|
+
if schema_registry_key and !schema_registry_key.empty?
|
53
|
+
options[:auth] = {:user => schema_registry_key, :password => schema_registry_secret.value}
|
54
|
+
end
|
55
|
+
client = Manticore::Client.new(options)
|
56
|
+
|
56
57
|
begin
|
57
|
-
response = client.get('/subjects')
|
58
|
-
rescue
|
58
|
+
response = client.get(@schema_registry_url.to_s + '/subjects').body
|
59
|
+
rescue Manticore::ManticoreException => e
|
59
60
|
raise LogStash::ConfigurationError.new("Schema registry service doesn't respond, error: #{e.message}")
|
60
61
|
end
|
61
|
-
registered_subjects = JSON.parse response
|
62
|
+
registered_subjects = JSON.parse response
|
62
63
|
expected_subjects = @topics.map { |t| "#{t}-value"}
|
63
64
|
if (expected_subjects & registered_subjects).size != expected_subjects.size
|
64
65
|
undefined_topic_subjects = expected_subjects - registered_subjects
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-integration-kafka'
|
3
|
-
s.version = '10.
|
3
|
+
s.version = '10.7.0'
|
4
4
|
s.licenses = ['Apache-2.0']
|
5
5
|
s.summary = "Integration with Kafka - input and output plugins"
|
6
6
|
s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline "+
|
@@ -46,6 +46,7 @@ Gem::Specification.new do |s|
|
|
46
46
|
s.add_runtime_dependency 'logstash-codec-json'
|
47
47
|
s.add_runtime_dependency 'logstash-codec-plain'
|
48
48
|
s.add_runtime_dependency 'stud', '>= 0.0.22', '< 0.1.0'
|
49
|
+
s.add_runtime_dependency "manticore", '>= 0.5.4', '< 1.0.0'
|
49
50
|
|
50
51
|
s.add_development_dependency 'logstash-devutils'
|
51
52
|
s.add_development_dependency 'rspec-wait'
|
@@ -3,7 +3,7 @@ require "logstash/devutils/rspec/spec_helper"
|
|
3
3
|
require "logstash/inputs/kafka"
|
4
4
|
require "rspec/wait"
|
5
5
|
require "stud/try"
|
6
|
-
require "
|
6
|
+
require "manticore"
|
7
7
|
require "json"
|
8
8
|
|
9
9
|
# Please run kafka_test_setup.sh prior to executing this integration test.
|
@@ -164,11 +164,11 @@ describe "schema registry connection options" do
|
|
164
164
|
|
165
165
|
before(:each) do
|
166
166
|
response = save_avro_schema_to_schema_registry(File.join(Dir.pwd, "spec", "unit", "inputs", "avro_schema_fixture_payment.asvc"), SUBJECT_NAME)
|
167
|
-
expect( response.
|
167
|
+
expect( response.code ).to be(200)
|
168
168
|
end
|
169
169
|
|
170
170
|
after(:each) do
|
171
|
-
schema_registry_client =
|
171
|
+
schema_registry_client = Manticore::Client.new
|
172
172
|
delete_remote_schema(schema_registry_client, SUBJECT_NAME)
|
173
173
|
end
|
174
174
|
|
@@ -187,26 +187,26 @@ end
|
|
187
187
|
def save_avro_schema_to_schema_registry(schema_file, subject_name)
|
188
188
|
raw_schema = File.readlines(schema_file).map(&:chomp).join
|
189
189
|
raw_schema_quoted = raw_schema.gsub('"', '\"')
|
190
|
-
response =
|
191
|
-
'{"schema": "' + raw_schema_quoted + '"}',
|
192
|
-
"Content-Type" => "application/vnd.schemaregistry.v1+json")
|
190
|
+
response = Manticore.post("http://localhost:8081/subjects/#{subject_name}/versions",
|
191
|
+
body: '{"schema": "' + raw_schema_quoted + '"}',
|
192
|
+
headers: {"Content-Type" => "application/vnd.schemaregistry.v1+json"})
|
193
193
|
response
|
194
194
|
end
|
195
195
|
|
196
196
|
def delete_remote_schema(schema_registry_client, subject_name)
|
197
|
-
expect(schema_registry_client.delete("/subjects/#{subject_name}").
|
198
|
-
expect(schema_registry_client.delete("/subjects/#{subject_name}?permanent=true").
|
197
|
+
expect(schema_registry_client.delete("http://localhost:8081/subjects/#{subject_name}").code ).to be(200)
|
198
|
+
expect(schema_registry_client.delete("http://localhost:8081/subjects/#{subject_name}?permanent=true").code ).to be(200)
|
199
199
|
end
|
200
200
|
|
201
201
|
# AdminClientConfig = org.alpache.kafka.clients.admin.AdminClientConfig
|
202
202
|
|
203
203
|
describe "Schema registry API", :integration => true do
|
204
204
|
|
205
|
-
let(:schema_registry) {
|
205
|
+
let(:schema_registry) { Manticore::Client.new }
|
206
206
|
|
207
207
|
context 'listing subject on clean instance' do
|
208
208
|
it "should return an empty set" do
|
209
|
-
subjects = JSON.parse schema_registry.get('/subjects').body
|
209
|
+
subjects = JSON.parse schema_registry.get('http://localhost:8081/subjects').body
|
210
210
|
expect( subjects ).to be_empty
|
211
211
|
end
|
212
212
|
end
|
@@ -214,30 +214,30 @@ describe "Schema registry API", :integration => true do
|
|
214
214
|
context 'send a schema definition' do
|
215
215
|
it "save the definition" do
|
216
216
|
response = save_avro_schema_to_schema_registry(File.join(Dir.pwd, "spec", "unit", "inputs", "avro_schema_fixture_payment.asvc"), "schema_test_1")
|
217
|
-
expect( response.
|
217
|
+
expect( response.code ).to be(200)
|
218
218
|
delete_remote_schema(schema_registry, "schema_test_1")
|
219
219
|
end
|
220
220
|
|
221
221
|
it "delete the schema just added" do
|
222
222
|
response = save_avro_schema_to_schema_registry(File.join(Dir.pwd, "spec", "unit", "inputs", "avro_schema_fixture_payment.asvc"), "schema_test_1")
|
223
|
-
expect( response.
|
223
|
+
expect( response.code ).to be(200)
|
224
224
|
|
225
|
-
expect( schema_registry.delete('/subjects/schema_test_1?permanent=false').
|
225
|
+
expect( schema_registry.delete('http://localhost:8081/subjects/schema_test_1?permanent=false').code ).to be(200)
|
226
226
|
sleep(1)
|
227
|
-
subjects = JSON.parse schema_registry.get('/subjects').body
|
227
|
+
subjects = JSON.parse schema_registry.get('http://localhost:8081/subjects').body
|
228
228
|
expect( subjects ).to be_empty
|
229
229
|
end
|
230
230
|
end
|
231
231
|
|
232
232
|
context 'use the schema to serialize' do
|
233
233
|
after(:each) do
|
234
|
-
expect( schema_registry.delete('/subjects/topic_avro-value').
|
234
|
+
expect( schema_registry.delete('http://localhost:8081/subjects/topic_avro-value').code ).to be(200)
|
235
235
|
sleep 1
|
236
|
-
expect( schema_registry.delete('/subjects/topic_avro-value?permanent=true').
|
236
|
+
expect( schema_registry.delete('http://localhost:8081/subjects/topic_avro-value?permanent=true').code ).to be(200)
|
237
237
|
|
238
238
|
Stud.try(3.times, [StandardError, RSpec::Expectations::ExpectationNotMetError]) do
|
239
239
|
wait(10).for do
|
240
|
-
subjects = JSON.parse schema_registry.get('/subjects').body
|
240
|
+
subjects = JSON.parse schema_registry.get('http://localhost:8081/subjects').body
|
241
241
|
subjects.empty?
|
242
242
|
end.to be_truthy
|
243
243
|
end
|
@@ -299,7 +299,7 @@ describe "Schema registry API", :integration => true do
|
|
299
299
|
delete_topic_if_exists avro_topic_name
|
300
300
|
write_some_data_to avro_topic_name
|
301
301
|
|
302
|
-
subjects = JSON.parse schema_registry.get('/subjects').body
|
302
|
+
subjects = JSON.parse schema_registry.get('http://localhost:8081/subjects').body
|
303
303
|
expect( subjects ).to contain_exactly("topic_avro-value")
|
304
304
|
|
305
305
|
num_events = 1
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-integration-kafka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 10.
|
4
|
+
version: 10.7.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,6 +106,26 @@ dependencies:
|
|
106
106
|
- - "<"
|
107
107
|
- !ruby/object:Gem::Version
|
108
108
|
version: 0.1.0
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
requirement: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: 0.5.4
|
115
|
+
- - "<"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 1.0.0
|
118
|
+
name: manticore
|
119
|
+
prerelease: false
|
120
|
+
type: :runtime
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 0.5.4
|
126
|
+
- - "<"
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: 1.0.0
|
109
129
|
- !ruby/object:Gem::Dependency
|
110
130
|
requirement: !ruby/object:Gem::Requirement
|
111
131
|
requirements:
|