From fe603e9163ac6bf03a4709f6ee655c11013a4806 Mon Sep 17 00:00:00 2001 From: Tal Levy Date: Tue, 27 Nov 2018 13:28:58 -0800 Subject: [PATCH] [ILM] add HLRC docs to remove-policy-from-index (#35759) This primarily introduces documentation for the HLRC remove-policy-from-index action. --- .../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 c647e7c01b9..f8e3c62ef71 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 @@ -43,12 +43,15 @@ import org.elasticsearch.client.indexlifecycle.OperationMode; 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; @@ -59,8 +62,10 @@ import org.elasticsearch.common.xcontent.json.JsonXContent; 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; @@ -163,19 +168,19 @@ public class ILMDocumentationIT extends ESRestHighLevelClientTestCase { 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); @@ -186,7 +191,7 @@ public class ILMDocumentationIT extends ESRestHighLevelClientTestCase { assertTrue(putResponse.isAcknowledged()); } - // tag::ilm-delete-lifecycle-policy-execute-listener + // tag::ilm-remove-lifecycle-policy-execute-listener ActionListener listener = new ActionListener() { @Override @@ -199,16 +204,16 @@ public class ILMDocumentationIT extends ESRestHighLevelClientTestCase { // <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)); } @@ -643,6 +648,91 @@ public class ILMDocumentationIT extends ESRestHighLevelClientTestCase { 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("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("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 00000000000..ae1521e8fb2 --- /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 cea713a8dd3..c3d35c5e9a7 100644 --- a/docs/java-rest/high-level/supported-apis.asciidoc +++ b/docs/java-rest/high-level/supported-apis.asciidoc @@ -482,6 +482,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[] @@ -492,3 +493,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 0f5c9a18eee..62e708be0ff 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 d05c735c184..b44bb850261 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[]