Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add HLRC docs for Get Lifecycle Policy #35612

Merged
merged 3 commits into from
Nov 17, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ public class IndexLifecycleClient {
}

/**
* Retrieve one or more lifecycle policy definition
* See <a href="https://fix-me-when-we-have-docs.com">
* Retrieve one or more lifecycle policy definition. See
* <a href="https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-ilm-ilm-get-lifecycle-policy.html">
* the docs</a> for more.
* @param request the request
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
Expand All @@ -62,8 +62,8 @@ public GetLifecyclePolicyResponse getLifecyclePolicy(GetLifecyclePolicyRequest r
}

/**
* Asynchronously retrieve one or more lifecycle policy definition
* See <a href="https://fix-me-when-we-have-docs.com">
* Asynchronously retrieve one or more lifecycle policy definition. See
* <a href="https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-ilm-ilm-get-lifecycle-policy.html">
* the docs</a> for more.
* @param request the request
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,16 @@
import org.elasticsearch.client.core.AcknowledgedResponse;
import org.elasticsearch.client.indexlifecycle.DeleteAction;
import org.elasticsearch.client.indexlifecycle.DeleteLifecyclePolicyRequest;
import org.elasticsearch.client.indexlifecycle.GetLifecyclePolicyRequest;
import org.elasticsearch.client.indexlifecycle.GetLifecyclePolicyResponse;
import org.elasticsearch.client.indexlifecycle.LifecycleAction;
import org.elasticsearch.client.indexlifecycle.LifecyclePolicy;
import org.elasticsearch.client.indexlifecycle.LifecyclePolicyMetadata;
import org.elasticsearch.client.indexlifecycle.Phase;
import org.elasticsearch.client.indexlifecycle.PutLifecyclePolicyRequest;
import org.elasticsearch.client.indexlifecycle.RolloverAction;
import org.elasticsearch.client.indexlifecycle.ShrinkAction;
import org.elasticsearch.common.collect.ImmutableOpenMap;
import org.elasticsearch.common.unit.ByteSizeUnit;
import org.elasticsearch.common.unit.ByteSizeValue;
import org.elasticsearch.common.unit.TimeValue;
Expand Down Expand Up @@ -119,6 +124,108 @@ public void onFailure(Exception e) {

}

public void testGetLifecyclePolicy() throws IOException, InterruptedException {
RestHighLevelClient client = highLevelClient();

LifecyclePolicy myPolicyAsPut;
LifecyclePolicy otherPolicyAsPut;
// Set up some policies so we have something to get
{
Map<String, Phase> phases = new HashMap<>();
Map<String, LifecycleAction> hotActions = new HashMap<>();
hotActions.put(RolloverAction.NAME, new RolloverAction(
new ByteSizeValue(50, ByteSizeUnit.GB), null, null));
phases.put("hot", new Phase("hot", TimeValue.ZERO, hotActions));

Map<String, LifecycleAction> deleteActions =
Collections.singletonMap(DeleteAction.NAME,
new DeleteAction());
phases.put("delete",
new Phase("delete",
new TimeValue(90, TimeUnit.DAYS), deleteActions));

myPolicyAsPut = new LifecyclePolicy("my_policy", phases);
PutLifecyclePolicyRequest putRequest = new PutLifecyclePolicyRequest(myPolicyAsPut);

Map<String, Phase> otherPolicyPhases = new HashMap<>(phases);
Map<String, LifecycleAction> warmActions = Collections.singletonMap(ShrinkAction.NAME, new ShrinkAction(1));
otherPolicyPhases.put("warm", new Phase("warm", new TimeValue(30, TimeUnit.DAYS), warmActions));
otherPolicyAsPut = new LifecyclePolicy("other_policy", otherPolicyPhases);

PutLifecyclePolicyRequest putRequest2 = new PutLifecyclePolicyRequest(otherPolicyAsPut);

AcknowledgedResponse putResponse = client.indexLifecycle().
putLifecyclePolicy(putRequest, RequestOptions.DEFAULT);
assertTrue(putResponse.isAcknowledged());
AcknowledgedResponse putResponse2 = client.indexLifecycle().
putLifecyclePolicy(putRequest2, RequestOptions.DEFAULT);
assertTrue(putResponse2.isAcknowledged());
}

// tag::ilm-get-lifecycle-policy-request
GetLifecyclePolicyRequest allRequest =
new GetLifecyclePolicyRequest(); // <1>
GetLifecyclePolicyRequest request =
new GetLifecyclePolicyRequest("my_policy", "other_policy"); // <2>
// end::ilm-get-lifecycle-policy-request

// tag::ilm-get-lifecycle-policy-execute
GetLifecyclePolicyResponse response = client.indexLifecycle()
.getLifecyclePolicy(request, RequestOptions.DEFAULT);
// end::ilm-get-lifecycle-policy-execute

// tag::ilm-get-lifecycle-policy-response
ImmutableOpenMap<String, LifecyclePolicyMetadata> policies =
response.getPolicies();
LifecyclePolicyMetadata myPolicyMetadata =
policies.get("my_policy"); // <1>
String myPolicyName = myPolicyMetadata.getName();
long version = myPolicyMetadata.getVersion();
String lastModified = myPolicyMetadata.getModifiedDateString();
long lastModifiedDate = myPolicyMetadata.getModifiedDate();
LifecyclePolicy myPolicy = myPolicyMetadata.getPolicy(); // <2>
// end::ilm-get-lifecycle-policy-response
gwbrown marked this conversation as resolved.
Show resolved Hide resolved

assertEquals(myPolicyAsPut, myPolicy);
assertEquals("my_policy", myPolicyName);
assertNotNull(lastModified);
assertNotEquals(0, lastModifiedDate);

LifecyclePolicyMetadata otherPolicyMetadata = policies.get("other_policy");
assertEquals(otherPolicyAsPut, otherPolicyMetadata.getPolicy());
assertEquals("other_policy", otherPolicyMetadata.getName());
assertNotNull(otherPolicyMetadata.getModifiedDateString());
assertNotEquals(0, otherPolicyMetadata.getModifiedDate());

// tag::ilm-get-lifecycle-policy-execute-listener
ActionListener<GetLifecyclePolicyResponse> listener =
new ActionListener<GetLifecyclePolicyResponse>() {
@Override
public void onResponse(GetLifecyclePolicyResponse response)
{
ImmutableOpenMap<String, LifecyclePolicyMetadata>
policies = response.getPolicies(); // <1>
}

@Override
public void onFailure(Exception e) {
// <2>
}
};
// end::ilm-get-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-get-lifecycle-policy-execute-async
client.indexLifecycle().getLifecyclePolicyAsync(request,
RequestOptions.DEFAULT, listener); // <1>
// end::ilm-get-lifecycle-policy-execute-async

assertTrue(latch.await(30L, TimeUnit.SECONDS));
}

static Map<String, Object> toMap(Response response) throws IOException {
return XContentHelper.convertToMap(JsonXContent.jsonXContent, EntityUtils.toString(response.getEntity()), false);
}
Expand Down
40 changes: 40 additions & 0 deletions docs/java-rest/high-level/ilm/get_lifecycle_policy.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
--
:api: ilm-get-lifecycle-policy
:request: GetLifecyclePolicyRequest
:response: GetLifecyclePolicyResponse
--

[id="{upid}-{api}"]
=== Get Lifecycle Policy API


[id="{upid}-{api}-request"]
==== Request

The Get Lifecycle Policy API allows you to retrieve the definition of an Index
Lifecycle Management Policy from the cluster.

["source","java",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{doc-tests-file}[{api}-request]
--------------------------------------------------
<1> Gets all policies.
<2> Gets `my_policy` and `other_policy`

[id="{upid}-{api}-response"]
==== Response

The returned +{response}+ contains a map of `LifecyclePolicyMetadata`,
accessible by the name of the policy, which contains data about each policy,
as well as the policy definition.

["source","java",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{doc-tests-file}[{api}-response]
--------------------------------------------------
<1> The retrieved policies are retrieved by name.
<2> The policy definition itself.

include::../execution.asciidoc[]


3 changes: 3 additions & 0 deletions docs/java-rest/high-level/supported-apis.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -444,5 +444,8 @@ The Java High Level REST Client supports the following Index Lifecycle
Management APIs:

* <<{upid}-ilm-put-lifecycle-policy>>
* <<{upid}-ilm-get-lifecycle-policy>>

include::ilm/put_lifecycle_policy.asciidoc[]
include::ilm/get_lifecycle_policy.asciidoc[]