logstash-integration-kafka 10.5.2-java → 10.5.3-java
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 -0
- data/lib/logstash/inputs/kafka.rb +4 -25
- data/lib/logstash/outputs/kafka.rb +3 -31
- data/lib/logstash/plugin_mixins/kafka_support.rb +29 -0
- data/logstash-integration-kafka.gemspec +1 -1
- data/spec/fixtures/trust-store_stub.jks +0 -0
- data/spec/unit/outputs/kafka_spec.rb +18 -7
- metadata +5 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 4383db6ec7c8fa26ef358d104c490f51620f615afb2f68359b6f6e98d4e58f8b
         | 
| 4 | 
            +
              data.tar.gz: 040637202d15cb1e5784104ff505f10a6610e91187a57f104a8f81cd2b24475a
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 98da085bceebd241a6d45f9166aa4ff1a132551cd2cda8825ceab3c22ebbb5f78579f0d1a0b596aeaf3d504147d656cf2ef784570ef3fd9ab98c792ae6e15be4
         | 
| 7 | 
            +
              data.tar.gz: f552e5ec8d84f3ae7d85b3d4bc4ba4f7309321ea81efaa9bfb69a4a493141868b2576a626f0ee061bb0ebe6cbc8071993dd8592bc53030478baad2b5173e1086
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,3 +1,8 @@ | |
| 1 | 
            +
            ## 10.5.3
         | 
| 2 | 
            +
              - Fix: set (optional) truststore when endpoint id check disabled [#60](https://github.com/logstash-plugins/logstash-integration-kafka/pull/60).
         | 
| 3 | 
            +
                Since **10.1.0** disabling server host-name verification (`ssl_endpoint_identification_algorithm => ""`) did not allow 
         | 
| 4 | 
            +
                the (output) plugin to set `ssl_truststore_location => "..."`.
         | 
| 5 | 
            +
             | 
| 1 6 | 
             
            ## 10.5.2
         | 
| 2 7 | 
             
              - Docs: explain group_id in case of multiple inputs [#59](https://github.com/logstash-plugins/logstash-integration-kafka/pull/59)
         | 
| 3 8 |  | 
| @@ -3,6 +3,7 @@ require 'logstash/inputs/base' | |
| 3 3 | 
             
            require 'stud/interval'
         | 
| 4 4 | 
             
            require 'java'
         | 
| 5 5 | 
             
            require 'logstash-integration-kafka_jars.rb'
         | 
| 6 | 
            +
            require 'logstash/plugin_mixins/kafka_support'
         | 
| 6 7 |  | 
| 7 8 | 
             
            # This input will read events from a Kafka topic. It uses the 0.10 version of
         | 
| 8 9 | 
             
            # the consumer API provided by Kafka to read messages from the broker.
         | 
| @@ -48,6 +49,9 @@ require 'logstash-integration-kafka_jars.rb' | |
| 48 49 | 
             
            # Kafka consumer configuration: http://kafka.apache.org/documentation.html#consumerconfigs
         | 
| 49 50 | 
             
            #
         | 
| 50 51 | 
             
            class LogStash::Inputs::Kafka < LogStash::Inputs::Base
         | 
| 52 | 
            +
             | 
| 53 | 
            +
              include LogStash::PluginMixins::KafkaSupport
         | 
| 54 | 
            +
             | 
| 51 55 | 
             
              config_name 'kafka'
         | 
| 52 56 |  | 
| 53 57 | 
             
              default :codec, 'plain'
         | 
| @@ -370,29 +374,4 @@ class LogStash::Inputs::Kafka < LogStash::Inputs::Base | |
| 370 374 | 
             
                end
         | 
| 371 375 | 
             
              end
         | 
| 372 376 |  | 
| 373 | 
            -
              def set_trustore_keystore_config(props)
         | 
| 374 | 
            -
                props.put("ssl.truststore.type", ssl_truststore_type) unless ssl_truststore_type.nil?
         | 
| 375 | 
            -
                props.put("ssl.truststore.location", ssl_truststore_location) unless ssl_truststore_location.nil?
         | 
| 376 | 
            -
                props.put("ssl.truststore.password", ssl_truststore_password.value) unless ssl_truststore_password.nil?
         | 
| 377 | 
            -
             | 
| 378 | 
            -
                # Client auth stuff
         | 
| 379 | 
            -
                props.put("ssl.keystore.type", ssl_keystore_type) unless ssl_keystore_type.nil?
         | 
| 380 | 
            -
                props.put("ssl.key.password", ssl_key_password.value) unless ssl_key_password.nil?
         | 
| 381 | 
            -
                props.put("ssl.keystore.location", ssl_keystore_location) unless ssl_keystore_location.nil?
         | 
| 382 | 
            -
                props.put("ssl.keystore.password", ssl_keystore_password.value) unless ssl_keystore_password.nil?
         | 
| 383 | 
            -
                props.put("ssl.endpoint.identification.algorithm", ssl_endpoint_identification_algorithm) unless ssl_endpoint_identification_algorithm.nil?
         | 
| 384 | 
            -
              end
         | 
| 385 | 
            -
             | 
| 386 | 
            -
              def set_sasl_config(props)
         | 
| 387 | 
            -
                java.lang.System.setProperty("java.security.auth.login.config", jaas_path) unless jaas_path.nil?
         | 
| 388 | 
            -
                java.lang.System.setProperty("java.security.krb5.conf", kerberos_config) unless kerberos_config.nil?
         | 
| 389 | 
            -
             | 
| 390 | 
            -
                props.put("sasl.mechanism", sasl_mechanism)
         | 
| 391 | 
            -
                if sasl_mechanism == "GSSAPI" && sasl_kerberos_service_name.nil?
         | 
| 392 | 
            -
                  raise LogStash::ConfigurationError, "sasl_kerberos_service_name must be specified when SASL mechanism is GSSAPI"
         | 
| 393 | 
            -
                end
         | 
| 394 | 
            -
             | 
| 395 | 
            -
                props.put("sasl.kerberos.service.name", sasl_kerberos_service_name) unless sasl_kerberos_service_name.nil?
         | 
| 396 | 
            -
                props.put("sasl.jaas.config", sasl_jaas_config) unless sasl_jaas_config.nil?
         | 
| 397 | 
            -
              end
         | 
| 398 377 | 
             
            end #class LogStash::Inputs::Kafka
         | 
| @@ -2,6 +2,7 @@ require 'logstash/namespace' | |
| 2 2 | 
             
            require 'logstash/outputs/base'
         | 
| 3 3 | 
             
            require 'java'
         | 
| 4 4 | 
             
            require 'logstash-integration-kafka_jars.rb'
         | 
| 5 | 
            +
            require 'logstash/plugin_mixins/kafka_support'
         | 
| 5 6 |  | 
| 6 7 | 
             
            # Write events to a Kafka topic. This uses the Kafka Producer API to write messages to a topic on
         | 
| 7 8 | 
             
            # the broker.
         | 
| @@ -50,6 +51,8 @@ class LogStash::Outputs::Kafka < LogStash::Outputs::Base | |
| 50 51 |  | 
| 51 52 | 
             
              java_import org.apache.kafka.clients.producer.ProducerRecord
         | 
| 52 53 |  | 
| 54 | 
            +
              include LogStash::PluginMixins::KafkaSupport
         | 
| 55 | 
            +
             | 
| 53 56 | 
             
              declare_threadsafe!
         | 
| 54 57 |  | 
| 55 58 | 
             
              config_name 'kafka'
         | 
| @@ -389,35 +392,4 @@ class LogStash::Outputs::Kafka < LogStash::Outputs::Base | |
| 389 392 | 
             
                end
         | 
| 390 393 | 
             
              end
         | 
| 391 394 |  | 
| 392 | 
            -
              def set_trustore_keystore_config(props)
         | 
| 393 | 
            -
                unless ssl_endpoint_identification_algorithm.to_s.strip.empty?
         | 
| 394 | 
            -
                  if ssl_truststore_location.nil?
         | 
| 395 | 
            -
                    raise LogStash::ConfigurationError, "ssl_truststore_location must be set when SSL is enabled"
         | 
| 396 | 
            -
                  end
         | 
| 397 | 
            -
                  props.put("ssl.truststore.type", ssl_truststore_type) unless ssl_truststore_type.nil?
         | 
| 398 | 
            -
                  props.put("ssl.truststore.location", ssl_truststore_location)
         | 
| 399 | 
            -
                  props.put("ssl.truststore.password", ssl_truststore_password.value) unless ssl_truststore_password.nil?
         | 
| 400 | 
            -
                end
         | 
| 401 | 
            -
             | 
| 402 | 
            -
                # Client auth stuff
         | 
| 403 | 
            -
                props.put("ssl.keystore.type", ssl_keystore_type) unless ssl_keystore_type.nil?
         | 
| 404 | 
            -
                props.put("ssl.key.password", ssl_key_password.value) unless ssl_key_password.nil?
         | 
| 405 | 
            -
                props.put("ssl.keystore.location", ssl_keystore_location) unless ssl_keystore_location.nil?
         | 
| 406 | 
            -
                props.put("ssl.keystore.password", ssl_keystore_password.value) unless ssl_keystore_password.nil?
         | 
| 407 | 
            -
                props.put("ssl.endpoint.identification.algorithm", ssl_endpoint_identification_algorithm) unless ssl_endpoint_identification_algorithm.nil?
         | 
| 408 | 
            -
              end
         | 
| 409 | 
            -
             | 
| 410 | 
            -
              def set_sasl_config(props)
         | 
| 411 | 
            -
                java.lang.System.setProperty("java.security.auth.login.config", jaas_path) unless jaas_path.nil?
         | 
| 412 | 
            -
                java.lang.System.setProperty("java.security.krb5.conf", kerberos_config) unless kerberos_config.nil?
         | 
| 413 | 
            -
             | 
| 414 | 
            -
                props.put("sasl.mechanism",sasl_mechanism)
         | 
| 415 | 
            -
                if sasl_mechanism == "GSSAPI" && sasl_kerberos_service_name.nil?
         | 
| 416 | 
            -
                  raise LogStash::ConfigurationError, "sasl_kerberos_service_name must be specified when SASL mechanism is GSSAPI"
         | 
| 417 | 
            -
                end
         | 
| 418 | 
            -
             | 
| 419 | 
            -
                props.put("sasl.kerberos.service.name", sasl_kerberos_service_name) unless sasl_kerberos_service_name.nil?
         | 
| 420 | 
            -
                props.put("sasl.jaas.config", sasl_jaas_config) unless sasl_jaas_config.nil?
         | 
| 421 | 
            -
              end
         | 
| 422 | 
            -
             | 
| 423 395 | 
             
            end #class LogStash::Outputs::Kafka
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            module LogStash module PluginMixins module KafkaSupport
         | 
| 2 | 
            +
             | 
| 3 | 
            +
              def set_trustore_keystore_config(props)
         | 
| 4 | 
            +
                props.put("ssl.truststore.type", ssl_truststore_type) unless ssl_truststore_type.nil?
         | 
| 5 | 
            +
                props.put("ssl.truststore.location", ssl_truststore_location) unless ssl_truststore_location.nil?
         | 
| 6 | 
            +
                props.put("ssl.truststore.password", ssl_truststore_password.value) unless ssl_truststore_password.nil?
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                # Client auth stuff
         | 
| 9 | 
            +
                props.put("ssl.keystore.type", ssl_keystore_type) unless ssl_keystore_type.nil?
         | 
| 10 | 
            +
                props.put("ssl.key.password", ssl_key_password.value) unless ssl_key_password.nil?
         | 
| 11 | 
            +
                props.put("ssl.keystore.location", ssl_keystore_location) unless ssl_keystore_location.nil?
         | 
| 12 | 
            +
                props.put("ssl.keystore.password", ssl_keystore_password.value) unless ssl_keystore_password.nil?
         | 
| 13 | 
            +
                props.put("ssl.endpoint.identification.algorithm", ssl_endpoint_identification_algorithm) unless ssl_endpoint_identification_algorithm.nil?
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              def set_sasl_config(props)
         | 
| 17 | 
            +
                java.lang.System.setProperty("java.security.auth.login.config", jaas_path) unless jaas_path.nil?
         | 
| 18 | 
            +
                java.lang.System.setProperty("java.security.krb5.conf", kerberos_config) unless kerberos_config.nil?
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                props.put("sasl.mechanism", sasl_mechanism)
         | 
| 21 | 
            +
                if sasl_mechanism == "GSSAPI" && sasl_kerberos_service_name.nil?
         | 
| 22 | 
            +
                  raise LogStash::ConfigurationError, "sasl_kerberos_service_name must be specified when SASL mechanism is GSSAPI"
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                props.put("sasl.kerberos.service.name", sasl_kerberos_service_name) unless sasl_kerberos_service_name.nil?
         | 
| 26 | 
            +
                props.put("sasl.jaas.config", sasl_jaas_config) unless sasl_jaas_config.nil?
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            end end end
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            Gem::Specification.new do |s|
         | 
| 2 2 | 
             
              s.name            = 'logstash-integration-kafka'
         | 
| 3 | 
            -
              s.version         = '10.5. | 
| 3 | 
            +
              s.version         = '10.5.3'
         | 
| 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 "+
         | 
| 
            File without changes
         | 
| @@ -50,9 +50,10 @@ describe "outputs/kafka" do | |
| 50 50 | 
             
                  kafka.multi_receive([event])
         | 
| 51 51 | 
             
                end
         | 
| 52 52 |  | 
| 53 | 
            -
                it 'should raise config error when truststore location is not set and ssl is enabled' do
         | 
| 53 | 
            +
                it 'should not raise config error when truststore location is not set and ssl is enabled' do
         | 
| 54 54 | 
             
                  kafka = LogStash::Outputs::Kafka.new(simple_kafka_config.merge("security_protocol" => "SSL"))
         | 
| 55 | 
            -
                  expect | 
| 55 | 
            +
                  expect(org.apache.kafka.clients.producer.KafkaProducer).to receive(:new)
         | 
| 56 | 
            +
                  expect { kafka.register }.to_not raise_error
         | 
| 56 57 | 
             
                end
         | 
| 57 58 | 
             
              end
         | 
| 58 59 |  | 
| @@ -225,21 +226,31 @@ describe "outputs/kafka" do | |
| 225 226 | 
             
              context 'when ssl endpoint identification disabled' do
         | 
| 226 227 |  | 
| 227 228 | 
             
                let(:config) do
         | 
| 228 | 
            -
                  simple_kafka_config.merge( | 
| 229 | 
            +
                  simple_kafka_config.merge(
         | 
| 230 | 
            +
                      'security_protocol' => 'SSL',
         | 
| 231 | 
            +
                      'ssl_endpoint_identification_algorithm' => '',
         | 
| 232 | 
            +
                      'ssl_truststore_location' => truststore_path,
         | 
| 233 | 
            +
                  )
         | 
| 234 | 
            +
                end
         | 
| 235 | 
            +
             | 
| 236 | 
            +
                let(:truststore_path) do
         | 
| 237 | 
            +
                  File.join(File.dirname(__FILE__), '../../fixtures/trust-store_stub.jks')
         | 
| 229 238 | 
             
                end
         | 
| 230 239 |  | 
| 231 240 | 
             
                subject { LogStash::Outputs::Kafka.new(config) }
         | 
| 232 241 |  | 
| 233 | 
            -
                it ' | 
| 242 | 
            +
                it 'sets empty ssl.endpoint.identification.algorithm' do
         | 
| 234 243 | 
             
                  expect(org.apache.kafka.clients.producer.KafkaProducer).
         | 
| 235 | 
            -
                      to receive(:new).with( | 
| 244 | 
            +
                      to receive(:new).with(hash_including('ssl.endpoint.identification.algorithm' => ''))
         | 
| 236 245 | 
             
                  subject.register
         | 
| 237 246 | 
             
                end
         | 
| 238 247 |  | 
| 239 | 
            -
                it ' | 
| 248 | 
            +
                it 'configures truststore' do
         | 
| 240 249 | 
             
                  expect(org.apache.kafka.clients.producer.KafkaProducer).
         | 
| 241 | 
            -
                      to receive(:new).with(hash_including('ssl. | 
| 250 | 
            +
                      to receive(:new).with(hash_including('ssl.truststore.location' => truststore_path))
         | 
| 242 251 | 
             
                  subject.register
         | 
| 243 252 | 
             
                end
         | 
| 253 | 
            +
             | 
| 244 254 | 
             
              end
         | 
| 255 | 
            +
             | 
| 245 256 | 
             
            end
         | 
    
        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.5. | 
| 4 | 
            +
              version: 10.5.3
         | 
| 5 5 | 
             
            platform: java
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Elastic
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2020-10- | 
| 11 | 
            +
            date: 2020-10-21 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -183,7 +183,9 @@ files: | |
| 183 183 | 
             
            - lib/logstash-integration-kafka_jars.rb
         | 
| 184 184 | 
             
            - lib/logstash/inputs/kafka.rb
         | 
| 185 185 | 
             
            - lib/logstash/outputs/kafka.rb
         | 
| 186 | 
            +
            - lib/logstash/plugin_mixins/kafka_support.rb
         | 
| 186 187 | 
             
            - logstash-integration-kafka.gemspec
         | 
| 188 | 
            +
            - spec/fixtures/trust-store_stub.jks
         | 
| 187 189 | 
             
            - spec/integration/inputs/kafka_spec.rb
         | 
| 188 190 | 
             
            - spec/integration/outputs/kafka_spec.rb
         | 
| 189 191 | 
             
            - spec/unit/inputs/kafka_spec.rb
         | 
| @@ -222,6 +224,7 @@ signing_key: | |
| 222 224 | 
             
            specification_version: 4
         | 
| 223 225 | 
             
            summary: Integration with Kafka - input and output plugins
         | 
| 224 226 | 
             
            test_files:
         | 
| 227 | 
            +
            - spec/fixtures/trust-store_stub.jks
         | 
| 225 228 | 
             
            - spec/integration/inputs/kafka_spec.rb
         | 
| 226 229 | 
             
            - spec/integration/outputs/kafka_spec.rb
         | 
| 227 230 | 
             
            - spec/unit/inputs/kafka_spec.rb
         |