diff --git a/lib/elastomer_client/client/ccr.rb b/lib/elastomer_client/client/ccr.rb index ffc4994e..5a6432da 100644 --- a/lib/elastomer_client/client/ccr.rb +++ b/lib/elastomer_client/client/ccr.rb @@ -19,6 +19,22 @@ def initialize(client) attr_reader :client + # Gets the parameters and status for each follower index. + # + # index_pattern - String name of the index pattern to get follower info for + # params - Hash of query parameters + # + # Examples + # + # ccr.get_follower_info("follower_index") + # ccr.get_follower_info("*") + # + # See https://www.elastic.co/guide/en/elasticsearch/reference/current/ccr-put-follow.html + def get_follower_info(index_pattern, params = {}) + response = client.get "/#{index_pattern}/_ccr/info", params.merge(action: "get_follower_info", rest_api: "ccr") + response.body + end + # Creates a new follower index for the provided leader index on the remote cluster. # # follower_index - String name of the follower index to create diff --git a/test/client/ccr_test.rb b/test/client/ccr_test.rb index 49df6afd..a7e9cb0b 100644 --- a/test/client/ccr_test.rb +++ b/test/client/ccr_test.rb @@ -3,9 +3,15 @@ require_relative "../test_helper" describe ElastomerClient::Client::Ccr do - before :each do + before do skip "Cannot test Ccr API without a replica cluster" unless $replica_client.available? + begin + ccr.delete_auto_follow("follower_pattern") + rescue StandardError + puts "No auto-follow pattern to delete" + end + @leader_index = $client.index("leader_index") @follower_index = $replica_client.index("follower_index") @auto_followed_index = $client.index("followed_index") @@ -26,15 +32,9 @@ @leader_index.create(default_index_settings) wait_for_index(@leader_index.name, "green") - - begin - ccr.delete_auto_follow("follower_pattern") - rescue StandardError - puts "No auto-follow pattern to delete" - end end - after :each do + after do @leader_index.delete if @leader_index.exists? @follower_index.delete if @follower_index.exists? @auto_followed_index.delete if @auto_followed_index.exists? @@ -76,18 +76,26 @@ def create_document(index, type, document) it "successfully follows a leader index" do create_document(@leader_index, "book", { _id: 1, title: "Book 1" }) - - follow_index(@follower_index, @leader_index) + follow_index(@follower_index.name, @leader_index.name) doc = @follower_index.docs.get(id: 1, type: "book") assert_equal "Book 1", doc["_source"]["title"] end + it "successfully gets info for all follower indices" do + follow_index(@follower_index.name, @leader_index.name) + + response = $replica_client.ccr.get_follower_info("*") + + assert_equal response["follower_indices"][0]["follower_index"], @follower_index.name + assert_equal response["follower_indices"][0]["leader_index"], @leader_index.name + end + it "successfully pauses a follower index" do - follow_index(@follower_index, @leader_index) + follow_index(@follower_index.name, @leader_index.name) - response = pause_follow(@follower_index) + response = pause_follow(@follower_index.name) assert response["acknowledged"] @@ -99,13 +107,13 @@ def create_document(index, type, document) end it "successfully unfollow a leader index" do - follow_index(@follower_index, @leader_index) + follow_index(@follower_index.name, @leader_index.name) - pause_follow(@follower_index) + pause_follow(@follower_index.name) @follower_index.close - response = unfollow_index(@follower_index) + response = unfollow_index(@follower_index.name) assert response["acknowledged"]