Class: OpenSearch::Transport::Transport::Sniffer
- Inherits:
-
Object
- Object
- OpenSearch::Transport::Transport::Sniffer
- Defined in:
- lib/opensearch/transport/transport/sniffer.rb
Overview
Handles node discovery (“sniffing”)
Constant Summary collapse
- PROTOCOL =
'http'
Instance Attribute Summary collapse
-
#timeout ⇒ Object
Returns the value of attribute timeout.
-
#transport ⇒ Object
readonly
Returns the value of attribute transport.
Instance Method Summary collapse
-
#hosts ⇒ Array<Hash>
Retrieves the node list from the OpenSearch’s _Nodes Info API_ and returns a normalized Array of information suitable for passing to transport.
-
#initialize(transport) ⇒ Sniffer
constructor
A new instance of Sniffer.
Constructor Details
#initialize(transport) ⇒ Sniffer
Returns a new instance of Sniffer.
40 41 42 43 |
# File 'lib/opensearch/transport/transport/sniffer.rb', line 40 def initialize(transport) @transport = transport @timeout = transport.[:sniffer_timeout] || 1 end |
Instance Attribute Details
#timeout ⇒ Object
Returns the value of attribute timeout.
36 37 38 |
# File 'lib/opensearch/transport/transport/sniffer.rb', line 36 def timeout @timeout end |
#transport ⇒ Object (readonly)
Returns the value of attribute transport.
35 36 37 |
# File 'lib/opensearch/transport/transport/sniffer.rb', line 35 def transport @transport end |
Instance Method Details
#hosts ⇒ Array<Hash>
Retrieves the node list from the OpenSearch’s _Nodes Info API_ and returns a normalized Array of information suitable for passing to transport.
Shuffles the collection before returning it when the ‘randomize_hosts` option is set for transport.
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/opensearch/transport/transport/sniffer.rb', line 54 def hosts Timeout.timeout(timeout, SnifferTimeoutError) do nodes = perform_sniff_request.body hosts = nodes['nodes'].map do |id, info| next unless info[PROTOCOL] host, port = parse_publish_address(info[PROTOCOL]['publish_address']) { id: id, name: info['name'], version: info['version'], host: host, port: port, roles: info['roles'], attributes: info['attributes'] } end.compact hosts.shuffle! if transport.[:randomize_hosts] hosts end end |