-
Notifications
You must be signed in to change notification settings - Fork 614
Closed
Description
Seems adding a transport_options = { :headers => { "User-Agent" => "Custom UA" } }
does not work and the library always uses it's UA default value, sample reproducer:
require 'webrick'
start_wait = Queue.new
Thread.start do
server = WEBrick::HTTPServer.new :Port => 9201, :DocumentRoot => ".",
:StartCallback => Proc.new { start_wait.push :started }
server.mount_proc '/' do |req, res|
puts "\n"
puts "user-agent: #{req.header['user-agent']}"
puts "authorization: #{req.header['authorization']}"
res.body = '''
{
"name": "dummy",
"cluster_name": "dummy-cluster",
"cluster_uuid": "ABCDEFGH",
"version": {
"number": "7.13.1",
"build_flavor": "default",
"build_type": "docker",
"build_hash": "9a7758028e4ea59bcab41c12004603c5a7dd84a9",
"build_date": "2021-05-28T17:40:59.346932922Z",
"build_snapshot": false,
"lucene_version": "8.8.2",
"minimum_wire_compatibility_version": "6.8.0",
"minimum_index_compatibility_version": "6.0.0-beta1"
},
"tagline": "You Know, for Search"
}
'''
res.status = 200
res['Content-Type'] = 'application/json'
end
server.start
end
start_wait.pop # blocks until the server is up
gem 'elasticsearch', ENV['ELASTICSEARCH_VERSION'] if ENV['ELASTICSEARCH_VERSION']
require "elasticsearch"
require "elasticsearch/transport/transport/http/manticore"
puts "Manticore::VERSION: #{Manticore::VERSION}"
es_client_version = Gem.loaded_specs['elasticsearch-transport'].version
puts "elasticsearch-transport version: #{es_client_version}"
transport_options = { :headers => { "User-Agent" => "Custom UA", 'Authorization' => 'Auth Header' } }
client = ::Elasticsearch::Client.new(hosts: ['localhost:9201'], transport_options: transport_options,
transport_class: ::Elasticsearch::Transport::Transport::HTTP::Manticore)
client.ping
NOTE: Logstash filter and input ES plugins have a variation of using lower-case 'user-agent'
to set the header the end result is the same.
prints:
[2022-02-09 08:24:48] INFO WEBrick 1.7.0
[2022-02-09 08:24:48] INFO ruby 2.5.8 (2021-11-02) [java]
[2022-02-09 08:24:48] INFO WEBrick::HTTPServer#start: pid=4015534 port=9201
Manticore::VERSION: 0.8.0
elasticsearch-transport version: 7.17.0
user-agent: ["elasticsearch-ruby/7.17.0 (RUBY_VERSION: 9.2.20.0; linux x86_64; Manticore 0.8.0)"]
authorization: ["Auth Header"]
127.0.0.1 - - [09/Feb/2022:08:24:53 CET] "GET / HTTP/1.1" 200 810
- -> /
user-agent: ["elasticsearch-ruby/7.17.0 (RUBY_VERSION: 9.2.20.0; linux x86_64; Manticore 0.8.0)"]
authorization: ["Auth Header"]
127.0.0.1 - - [09/Feb/2022:08:24:53 CET] "HEAD / HTTP/1.1" 200 0
- -> /
The header was working up till the plugins were using ES < 7.16 due a patch in place (the patch was introduced due a previous issue of not sending header at all).
Tested the above script with every minor down to 7.10 (ELASTICSEARCH_VERSION=7.10.1 jruby repro.rb
) the header override never worked in any of the versions I tried:
[2022-02-09 08:33:51] INFO WEBrick 1.7.0
[2022-02-09 08:33:51] INFO ruby 2.5.8 (2021-11-02) [java]
[2022-02-09 08:33:52] INFO WEBrick::HTTPServer#start: pid=4027356 port=9201
Manticore::VERSION: 0.8.0
elasticsearch-transport version: 7.10.1
user-agent: ["elasticsearch-ruby/7.10.1 (RUBY_VERSION: 9.2.20.0; linux x86_64; Manticore 0.8.0)"]
authorization: []
Metadata
Metadata
Assignees
Labels
No labels