From eb8699f031f88fae3eca62b3002d6ba0fc8c99c1 Mon Sep 17 00:00:00 2001 From: Tal Levy Date: Tue, 20 Nov 2018 14:57:55 -0800 Subject: [PATCH 1/2] [ILM] add HLRC docs to remove-policy-from-index This primarily introduces documentation for the HLRC remove-policy-from-index action. While working on these docs, a few other gotchyas were raised: - rename file names to be in line with documentation name of API (delete, not remove) - fix aspect of the Explain API that yields invalid responses --- .../documentation/ILMDocumentationIT.java | 110 ++++++++++++++++-- ...emove_lifecycle_policy_from_index.asciidoc | 38 ++++++ .../high-level/supported-apis.asciidoc | 2 + docs/reference/ilm/apis/ilm-api.asciidoc | 2 +- ...idoc => remove-policy-from-index.asciidoc} | 6 +- 5 files changed, 144 insertions(+), 14 deletions(-) create mode 100644 docs/java-rest/high-level/ilm/remove_lifecycle_policy_from_index.asciidoc rename docs/reference/ilm/apis/{remove-policy.asciidoc => remove-policy-from-index.asciidoc} (94%) diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/ILMDocumentationIT.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/ILMDocumentationIT.java index d3b36c8822ed9..79fd73346edd4 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/ILMDocumentationIT.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/ILMDocumentationIT.java @@ -41,12 +41,15 @@ import org.elasticsearch.client.indexlifecycle.LifecyclePolicyMetadata; import org.elasticsearch.client.indexlifecycle.Phase; import org.elasticsearch.client.indexlifecycle.PutLifecyclePolicyRequest; +import org.elasticsearch.client.indexlifecycle.RemoveIndexLifecyclePolicyRequest; +import org.elasticsearch.client.indexlifecycle.RemoveIndexLifecyclePolicyResponse; import org.elasticsearch.client.indexlifecycle.RetryLifecyclePolicyRequest; import org.elasticsearch.client.indexlifecycle.RolloverAction; import org.elasticsearch.client.indexlifecycle.StartILMRequest; import org.elasticsearch.client.indexlifecycle.StopILMRequest; import org.elasticsearch.client.indexlifecycle.ShrinkAction; import org.elasticsearch.cluster.metadata.IndexMetaData; +import org.elasticsearch.common.Strings; import org.elasticsearch.common.collect.ImmutableOpenMap; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.unit.ByteSizeUnit; @@ -57,8 +60,10 @@ import org.hamcrest.Matchers; import java.io.IOException; +import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -161,19 +166,19 @@ public void testDeletePolicy() throws IOException, InterruptedException { assertTrue(putResponse.isAcknowledged()); } - // tag::ilm-delete-lifecycle-policy-request + // tag::ilm-remove-lifecycle-policy-request DeleteLifecyclePolicyRequest request = new DeleteLifecyclePolicyRequest("my_policy"); // <1> - // end::ilm-delete-lifecycle-policy-request + // end::ilm-remove-lifecycle-policy-request - // tag::ilm-delete-lifecycle-policy-execute + // tag::ilm-remove-lifecycle-policy-execute AcknowledgedResponse response = client.indexLifecycle() .deleteLifecyclePolicy(request, RequestOptions.DEFAULT); - // end::ilm-delete-lifecycle-policy-execute + // end::ilm-remove-lifecycle-policy-execute - // tag::ilm-delete-lifecycle-policy-response + // tag::ilm-remove-lifecycle-policy-response boolean acknowledged = response.isAcknowledged(); // <1> - // end::ilm-delete-lifecycle-policy-response + // end::ilm-remove-lifecycle-policy-response assertTrue(acknowledged); @@ -184,7 +189,7 @@ public void testDeletePolicy() throws IOException, InterruptedException { assertTrue(putResponse.isAcknowledged()); } - // tag::ilm-delete-lifecycle-policy-execute-listener + // tag::ilm-remove-lifecycle-policy-execute-listener ActionListener listener = new ActionListener() { @Override @@ -197,16 +202,16 @@ public void onFailure(Exception e) { // <2> } }; - // end::ilm-delete-lifecycle-policy-execute-listener + // end::ilm-remove-lifecycle-policy-execute-listener // Replace the empty listener by a blocking listener in test final CountDownLatch latch = new CountDownLatch(1); listener = new LatchedActionListener<>(listener, latch); - // tag::ilm-delete-lifecycle-policy-execute-async + // tag::ilm-remove-lifecycle-policy-execute-async client.indexLifecycle().deleteLifecyclePolicyAsync(request, RequestOptions.DEFAULT, listener); // <1> - // end::ilm-delete-lifecycle-policy-execute-async + // end::ilm-remove-lifecycle-policy-execute-async assertTrue(latch.await(30L, TimeUnit.SECONDS)); } @@ -530,6 +535,91 @@ public void onFailure(Exception e) { assertTrue(latch.await(30L, TimeUnit.SECONDS)); } + public void testDeletePolicyFromIndex() throws Exception { + RestHighLevelClient client = highLevelClient(); + + // setup policy for index + Map phases = new HashMap<>(); + phases.put("delete", new Phase("delete", TimeValue.timeValueHours(10L), + Collections.singletonMap(DeleteAction.NAME, new DeleteAction()))); + LifecyclePolicy policy = new LifecyclePolicy("my_policy", phases); + PutLifecyclePolicyRequest putRequest = new PutLifecyclePolicyRequest(policy); + client.indexLifecycle().putLifecyclePolicy(putRequest, RequestOptions.DEFAULT); + CreateIndexRequest createIndexRequest = new CreateIndexRequest("my_index", + Settings.builder() + .put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, 1) + .put("index.lifecycle.name", "my_policy") + .build()); + client.indices().create(createIndexRequest, RequestOptions.DEFAULT); + assertBusy(() -> assertTrue(client.indexLifecycle() + .explainLifecycle(new ExplainLifecycleRequest().indices("my_index"), RequestOptions.DEFAULT) + .getIndexResponses().get("my_index").managedByILM())); + + // tag::ilm-remove-lifecycle-policy-from-index-request + List indices = new ArrayList<>(); + indices.add("my_index"); + RemoveIndexLifecyclePolicyRequest request = + new RemoveIndexLifecyclePolicyRequest(indices); // <1> + // end::ilm-remove-lifecycle-policy-from-index-request + + + // tag::ilm-remove-lifecycle-policy-from-index-execute + RemoveIndexLifecyclePolicyResponse response = client + .indexLifecycle() + .removeIndexLifecyclePolicy(request, RequestOptions.DEFAULT); + // end::ilm-remove-lifecycle-policy-from-index-execute + + // tag::ilm-remove-lifecycle-policy-from-index-response + boolean hasFailures = response.hasFailures(); // <1> + List failedIndexes = response.getFailedIndexes(); // <2> + // end::ilm-remove-lifecycle-policy-from-index-response + + { + assertFalse(hasFailures); + Map indexSettings = getIndexSettings("my_index"); + assertTrue(Strings.isNullOrEmpty((String) indexSettings.get("index.lifecycle.name"))); + } + + // re-apply policy on index + updateIndexSettings("my_index", Settings.builder().put("index.lifecycle.name", "my_policy")); + assertBusy(() -> assertTrue(client.indexLifecycle() + .explainLifecycle(new ExplainLifecycleRequest().indices("my_index"), RequestOptions.DEFAULT) + .getIndexResponses().get("my_index").managedByILM())); + + // tag::ilm-remove-lifecycle-policy-from-index-execute-listener + ActionListener listener = + new ActionListener() { + @Override + public void onResponse( + RemoveIndexLifecyclePolicyResponse response) { + boolean hasFailures = response.hasFailures(); // <1> + List failedIndexes = response.getFailedIndexes(); + } + + @Override + public void onFailure(Exception e) { + // <2> + } + }; + // end::ilm-remove-lifecycle-policy-from-index-execute-listener + + { + Map indexSettings = getIndexSettings("my_index"); + assertTrue(Strings.isNullOrEmpty((String) indexSettings.get("index.lifecycle.name"))); + } + + // Replace the empty listener by a blocking listener in test + final CountDownLatch latch = new CountDownLatch(1); + listener = new LatchedActionListener<>(listener, latch); + + // tag::ilm-remove-lifecycle-policy-from-index-execute-async + client.indexLifecycle().removeIndexLifecyclePolicyAsync(request, + RequestOptions.DEFAULT, listener); // <1> + // end::ilm-remove-lifecycle-policy-from-index-execute-async + + assertTrue(latch.await(30L, TimeUnit.SECONDS)); + } + static Map toMap(Response response) throws IOException { return XContentHelper.convertToMap(JsonXContent.jsonXContent, EntityUtils.toString(response.getEntity()), false); } diff --git a/docs/java-rest/high-level/ilm/remove_lifecycle_policy_from_index.asciidoc b/docs/java-rest/high-level/ilm/remove_lifecycle_policy_from_index.asciidoc new file mode 100644 index 0000000000000..ae1521e8fb2ee --- /dev/null +++ b/docs/java-rest/high-level/ilm/remove_lifecycle_policy_from_index.asciidoc @@ -0,0 +1,38 @@ +-- +:api: ilm-remove-lifecycle-policy-from-index +:request: +:response: AcknowledgedResponse +-- + +[id="{upid}-{api}"] +=== Remove Policy from Index API + + +[id="{upid}-{api}-request"] +==== Request + +Removes the assigned lifecycle policy from an index. + +["source","java",subs="attributes,callouts,macros"] +-------------------------------------------------- +include-tagged::{doc-tests-file}[{api}-request] +-------------------------------------------------- +<1> removes the `my_policy` policy from `my_index` + + +[id="{upid}-{api}-response"] +==== Response + +The returned +{response}+ indicates if the request to remove +the lifecycle policy from the index was received. + +["source","java",subs="attributes,callouts,macros"] +-------------------------------------------------- +include-tagged::{doc-tests-file}[{api}-response] +-------------------------------------------------- +<1> Whether or not there were any policies failed +to be removed from any indices from the request +<2> A list of index names which are still managed +by their policies. + +include::../execution.asciidoc[] diff --git a/docs/java-rest/high-level/supported-apis.asciidoc b/docs/java-rest/high-level/supported-apis.asciidoc index 02158673da210..525ceb796c799 100644 --- a/docs/java-rest/high-level/supported-apis.asciidoc +++ b/docs/java-rest/high-level/supported-apis.asciidoc @@ -475,6 +475,7 @@ Management APIs: * <<{upid}-ilm-stop-ilm>> * <<{upid}-ilm-status>> * <<{upid}-ilm-retry-lifecycle-policy>> +* <<{upid}-ilm-remove-lifecycle-policy-from-index>> include::ilm/put_lifecycle_policy.asciidoc[] @@ -484,3 +485,4 @@ include::ilm/start_lifecycle_management.asciidoc[] include::ilm/stop_lifecycle_management.asciidoc[] include::ilm/lifecycle_management_status.asciidoc[] include::ilm/retry_lifecycle_policy.asciidoc[] +include::ilm/remove_lifecycle_policy_from_index.asciidoc[] diff --git a/docs/reference/ilm/apis/ilm-api.asciidoc b/docs/reference/ilm/apis/ilm-api.asciidoc index 0f5c9a18eeeeb..62e708be0ff5c 100644 --- a/docs/reference/ilm/apis/ilm-api.asciidoc +++ b/docs/reference/ilm/apis/ilm-api.asciidoc @@ -35,7 +35,7 @@ include::get-lifecycle.asciidoc[] include::delete-lifecycle.asciidoc[] include::move-to-step.asciidoc[] -include::remove-policy.asciidoc[] +include::remove-policy-from-index.asciidoc[] include::retry-policy.asciidoc[] include::get-status.asciidoc[] diff --git a/docs/reference/ilm/apis/remove-policy.asciidoc b/docs/reference/ilm/apis/remove-policy-from-index.asciidoc similarity index 94% rename from docs/reference/ilm/apis/remove-policy.asciidoc rename to docs/reference/ilm/apis/remove-policy-from-index.asciidoc index d05c735c1843b..b44bb850261be 100644 --- a/docs/reference/ilm/apis/remove-policy.asciidoc +++ b/docs/reference/ilm/apis/remove-policy-from-index.asciidoc @@ -1,9 +1,9 @@ [role="xpack"] [testenv="basic"] -[[ilm-delete-policy]] -=== Delete Policy from Index API +[[ilm-remove-policy]] +=== Remove Policy from Index API ++++ -Delete Policy +Remove Policy ++++ beta[] From 44bf7ca9198aad94393bb415585dfe8fa77bc53d Mon Sep 17 00:00:00 2001 From: Tal Levy Date: Mon, 26 Nov 2018 16:18:14 -0800 Subject: [PATCH 2/2] fix compilation from upstream --- .../client/documentation/ILMDocumentationIT.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/ILMDocumentationIT.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/ILMDocumentationIT.java index 79fd73346edd4..039a53e5c72f5 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/ILMDocumentationIT.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/ILMDocumentationIT.java @@ -552,7 +552,7 @@ public void testDeletePolicyFromIndex() throws Exception { .build()); client.indices().create(createIndexRequest, RequestOptions.DEFAULT); assertBusy(() -> assertTrue(client.indexLifecycle() - .explainLifecycle(new ExplainLifecycleRequest().indices("my_index"), RequestOptions.DEFAULT) + .explainLifecycle(new ExplainLifecycleRequest("my_index"), RequestOptions.DEFAULT) .getIndexResponses().get("my_index").managedByILM())); // tag::ilm-remove-lifecycle-policy-from-index-request @@ -583,7 +583,7 @@ public void testDeletePolicyFromIndex() throws Exception { // re-apply policy on index updateIndexSettings("my_index", Settings.builder().put("index.lifecycle.name", "my_policy")); assertBusy(() -> assertTrue(client.indexLifecycle() - .explainLifecycle(new ExplainLifecycleRequest().indices("my_index"), RequestOptions.DEFAULT) + .explainLifecycle(new ExplainLifecycleRequest("my_index"), RequestOptions.DEFAULT) .getIndexResponses().get("my_index").managedByILM())); // tag::ilm-remove-lifecycle-policy-from-index-execute-listener