elastomer-client 0.4.0 → 0.4.1
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 +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
|