Skip to content

Commit 858a9ee

Browse files
authored
Merge pull request #326 from github/jherns/follower-info
Adds support for Getting Follower Info
2 parents 283b68a + c68db54 commit 858a9ee

File tree

2 files changed

+39
-15
lines changed

2 files changed

+39
-15
lines changed

lib/elastomer_client/client/ccr.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,22 @@ def initialize(client)
1919

2020
attr_reader :client
2121

22+
# Gets the parameters and status for each follower index.
23+
#
24+
# index_pattern - String name of the index pattern to get follower info for
25+
# params - Hash of query parameters
26+
#
27+
# Examples
28+
#
29+
# ccr.get_follower_info("follower_index")
30+
# ccr.get_follower_info("*")
31+
#
32+
# See https://www.elastic.co/guide/en/elasticsearch/reference/current/ccr-put-follow.html
33+
def get_follower_info(index_pattern, params = {})
34+
response = client.get "/#{index_pattern}/_ccr/info", params.merge(action: "get_follower_info", rest_api: "ccr")
35+
response.body
36+
end
37+
2238
# Creates a new follower index for the provided leader index on the remote cluster.
2339
#
2440
# follower_index - String name of the follower index to create

test/client/ccr_test.rb

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,15 @@
33
require_relative "../test_helper"
44

55
describe ElastomerClient::Client::Ccr do
6-
before :each do
6+
before do
77
skip "Cannot test Ccr API without a replica cluster" unless $replica_client.available?
88

9+
begin
10+
ccr.delete_auto_follow("follower_pattern")
11+
rescue StandardError
12+
puts "No auto-follow pattern to delete"
13+
end
14+
915
@leader_index = $client.index("leader_index")
1016
@follower_index = $replica_client.index("follower_index")
1117
@auto_followed_index = $client.index("followed_index")
@@ -26,15 +32,9 @@
2632

2733
@leader_index.create(default_index_settings)
2834
wait_for_index(@leader_index.name, "green")
29-
30-
begin
31-
ccr.delete_auto_follow("follower_pattern")
32-
rescue StandardError
33-
puts "No auto-follow pattern to delete"
34-
end
3535
end
3636

37-
after :each do
37+
after do
3838
@leader_index.delete if @leader_index.exists?
3939
@follower_index.delete if @follower_index.exists?
4040
@auto_followed_index.delete if @auto_followed_index.exists?
@@ -76,18 +76,26 @@ def create_document(index, type, document)
7676

7777
it "successfully follows a leader index" do
7878
create_document(@leader_index, "book", { _id: 1, title: "Book 1" })
79-
80-
follow_index(@follower_index, @leader_index)
79+
follow_index(@follower_index.name, @leader_index.name)
8180

8281
doc = @follower_index.docs.get(id: 1, type: "book")
8382

8483
assert_equal "Book 1", doc["_source"]["title"]
8584
end
8685

86+
it "successfully gets info for all follower indices" do
87+
follow_index(@follower_index.name, @leader_index.name)
88+
89+
response = $replica_client.ccr.get_follower_info("*")
90+
91+
assert_equal response["follower_indices"][0]["follower_index"], @follower_index.name
92+
assert_equal response["follower_indices"][0]["leader_index"], @leader_index.name
93+
end
94+
8795
it "successfully pauses a follower index" do
88-
follow_index(@follower_index, @leader_index)
96+
follow_index(@follower_index.name, @leader_index.name)
8997

90-
response = pause_follow(@follower_index)
98+
response = pause_follow(@follower_index.name)
9199

92100
assert response["acknowledged"]
93101

@@ -99,13 +107,13 @@ def create_document(index, type, document)
99107
end
100108

101109
it "successfully unfollow a leader index" do
102-
follow_index(@follower_index, @leader_index)
110+
follow_index(@follower_index.name, @leader_index.name)
103111

104-
pause_follow(@follower_index)
112+
pause_follow(@follower_index.name)
105113

106114
@follower_index.close
107115

108-
response = unfollow_index(@follower_index)
116+
response = unfollow_index(@follower_index.name)
109117

110118
assert response["acknowledged"]
111119

0 commit comments

Comments
 (0)