elastomer-client 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/docs/notifications.md +1 -0
- data/lib/elastomer/client.rb +4 -16
- data/lib/elastomer/client/cluster.rb +14 -1
- data/lib/elastomer/client/errors.rb +11 -0
- data/lib/elastomer/client/index.rb +13 -0
- data/lib/elastomer/version.rb +1 -1
- data/test/client/index_test.rb +7 -0
- data/test/client/{stubbed_client_tests.rb → stubbed_client_test.rb} +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81dcb0ea764810dd5a824281170423608a0ab5f2
|
4
|
+
data.tar.gz: 089264a40b4574bccf618b35cc258266bb06ec94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd7298fd7537c9bcdc07f7be3bae04bcd77c83c20cbd3b0c7e410d339cc55f2ecaebb4f9dd3bc53305705cd19a44311cbd301f4f813c172035e2f36a1d1dcf12
|
7
|
+
data.tar.gz: 8eb7574b104215ee1a66a346a29c10d8ee00ea1273a4a213c8756b8ebdb1f07a25c8fe118bccfdca073c6a607e4a77e1bb32e14f999d855e5e9a8b7795c05238
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## 0.4.1 (2014-10-14)
|
2
|
+
- Support for index `_recovery` endpoint
|
3
|
+
- Fix Faraday 0.8 support
|
4
|
+
- Wrap all Faraday exceptions
|
5
|
+
- Correctly wrap single-command reroute with a command array
|
6
|
+
|
1
7
|
## 0.4.0 (2014-10-08)
|
2
8
|
- BREAKING: docs.add alias for docs.index removed
|
3
9
|
- BREAKING: Faraday exceptions are now raised as Elastomer exceptions
|
data/docs/notifications.md
CHANGED
data/lib/elastomer/client.rb
CHANGED
@@ -187,23 +187,11 @@ module Elastomer
|
|
187
187
|
|
188
188
|
handle_errors response
|
189
189
|
|
190
|
-
|
191
|
-
raise TimeoutError.new(boom, method.upcase, path)
|
192
|
-
|
193
|
-
rescue Faraday::Error::ConnectionFailed => boom
|
194
|
-
raise ConnectionFailed.new(boom, method.upcase, path)
|
195
|
-
|
196
|
-
rescue Faraday::Error::ResourceNotFound => boom
|
197
|
-
raise ResourceNotFound.new(boom, method.upcase, path)
|
198
|
-
|
199
|
-
rescue Faraday::Error::ParsingError => boom
|
200
|
-
raise ParsingError.new(boom, method.upcase, path)
|
201
|
-
|
202
|
-
rescue Faraday::Error::SSLError => boom
|
203
|
-
raise SSLError.new(boom, method.upcase, path)
|
204
|
-
|
190
|
+
# wrap Faraday errors with appropriate Elastomer::Client error classes
|
205
191
|
rescue Faraday::Error::ClientError => boom
|
206
|
-
|
192
|
+
error_name = boom.class.name.split('::').last
|
193
|
+
error_class = Elastomer::Client.const_get(error_name) rescue Elastomer::Client::Error
|
194
|
+
raise error_class.new(boom, method.upcase, path)
|
207
195
|
|
208
196
|
# ensure
|
209
197
|
# # FIXME: this is here until we get a real logger in place
|
@@ -129,11 +129,24 @@ module Elastomer
|
|
129
129
|
# { :allocate => { :index => 'test', :shard => 1, :node => 'node3' }}
|
130
130
|
# ])
|
131
131
|
#
|
132
|
+
# reroute(:commands => [
|
133
|
+
# { :move => { :index => 'test', :shard => 0, :from_node => 'node1', :to_node => 'node2' }},
|
134
|
+
# { :allocate => { :index => 'test', :shard => 1, :node => 'node3' }}
|
135
|
+
# ])
|
136
|
+
#
|
132
137
|
# See http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/cluster-reroute.html
|
133
138
|
#
|
134
139
|
# Returns the response as a Hash
|
135
140
|
def reroute( commands, params = {} )
|
136
|
-
|
141
|
+
if commands.is_a?(Hash) && commands.key?(:commands)
|
142
|
+
body = commands
|
143
|
+
elsif commands.is_a?(Hash)
|
144
|
+
# Array() on a Hash does not do what you think it does - that is why
|
145
|
+
# we are explicitly wrapping the Hash via [commands] here.
|
146
|
+
body = {:commands => [commands]}
|
147
|
+
else
|
148
|
+
body = {:commands => Array(commands)}
|
149
|
+
end
|
137
150
|
|
138
151
|
response = client.post '/_cluster/reroute', params.merge(:body => body, :action => 'cluster.reroute')
|
139
152
|
response.body
|
@@ -77,5 +77,16 @@ module Elastomer
|
|
77
77
|
TimeoutError.fatal = false
|
78
78
|
ConnectionFailed.fatal = false
|
79
79
|
|
80
|
+
# Define an Elastomer::Client exception class on the fly for
|
81
|
+
# Faraday exception classes that we don't specifically wrap.
|
82
|
+
Faraday::Error.constants.each do |error_name|
|
83
|
+
next if ::Elastomer::Client.const_get(error_name) rescue nil
|
84
|
+
|
85
|
+
error_class = Faraday::Error.const_get(error_name)
|
86
|
+
next unless error_class < Faraday::Error::ClientError
|
87
|
+
|
88
|
+
::Elastomer::Client.const_set(error_name, Class.new(Error))
|
89
|
+
end
|
90
|
+
|
80
91
|
end # Client
|
81
92
|
end # Elastomer
|
@@ -282,6 +282,19 @@ module Elastomer
|
|
282
282
|
response.body
|
283
283
|
end
|
284
284
|
|
285
|
+
# Provides insight into on-going index shard recoveries. Recovery status
|
286
|
+
# may be reported for specific indices, or cluster-wide.
|
287
|
+
#
|
288
|
+
# See http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-recovery.html
|
289
|
+
#
|
290
|
+
# params - Parameters Hash
|
291
|
+
#
|
292
|
+
# Returns the response body as a Hash
|
293
|
+
def recovery( params = {} )
|
294
|
+
response = client.get '{/index}/_recovery', update_params(params, :action => 'index.recovery')
|
295
|
+
response.body
|
296
|
+
end
|
297
|
+
|
285
298
|
# Clear caches for one or more indices. Individual caches can be
|
286
299
|
# specified with parameters.
|
287
300
|
# See http://www.elasticsearch.org/guide/reference/api/admin-indices-clearcache/
|
data/lib/elastomer/version.rb
CHANGED
data/test/client/index_test.rb
CHANGED
@@ -240,6 +240,13 @@ describe Elastomer::Client::Index do
|
|
240
240
|
end
|
241
241
|
end
|
242
242
|
|
243
|
+
if es_version_1_x?
|
244
|
+
it 'recovery' do
|
245
|
+
response = @index.recovery
|
246
|
+
assert_includes response, "elastomer-index-test"
|
247
|
+
end
|
248
|
+
end
|
249
|
+
|
243
250
|
it 'clears caches' do
|
244
251
|
response = @index.clear_cache
|
245
252
|
assert_equal 0, response["_shards"]["failed"]
|
@@ -27,7 +27,7 @@ describe 'stubbed client tests' do
|
|
27
27
|
|
28
28
|
describe Elastomer::Client::Nodes do
|
29
29
|
it 'performs a shutdown of the node(s)' do
|
30
|
-
@stubs.post('/_cluster/nodes/_shutdown')
|
30
|
+
@stubs.post('/_cluster/nodes/_all/_shutdown') { [200, {'Content-Type' => 'application/json'}, '{"nodes":{"1":{"name":"Node1"}}}'] }
|
31
31
|
@stubs.post('/_cluster/nodes/node2/_shutdown') { [200, {'Content-Type' => 'application/json'}, '{"nodes":{"2":{"name":"Node2"}}}'] }
|
32
32
|
|
33
33
|
h = @client.nodes.shutdown
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elastomer-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Pease
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-10-
|
12
|
+
date: 2014-10-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: addressable
|
@@ -176,7 +176,7 @@ files:
|
|
176
176
|
- test/client/repository_test.rb
|
177
177
|
- test/client/scan_test.rb
|
178
178
|
- test/client/snapshot_test.rb
|
179
|
-
- test/client/
|
179
|
+
- test/client/stubbed_client_test.rb
|
180
180
|
- test/client/template_test.rb
|
181
181
|
- test/client/warmer_test.rb
|
182
182
|
- test/client_test.rb
|
@@ -221,7 +221,7 @@ test_files:
|
|
221
221
|
- test/client/repository_test.rb
|
222
222
|
- test/client/scan_test.rb
|
223
223
|
- test/client/snapshot_test.rb
|
224
|
-
- test/client/
|
224
|
+
- test/client/stubbed_client_test.rb
|
225
225
|
- test/client/template_test.rb
|
226
226
|
- test/client/warmer_test.rb
|
227
227
|
- test/client_test.rb
|