diff --git a/src/main/java/org/opensearch/sdk/SDKClient.java b/src/main/java/org/opensearch/sdk/SDKClient.java index 05a2afd4..149a049f 100644 --- a/src/main/java/org/opensearch/sdk/SDKClient.java +++ b/src/main/java/org/opensearch/sdk/SDKClient.java @@ -26,6 +26,8 @@ import org.opensearch.action.ActionRequest; import org.opensearch.action.ActionResponse; import org.opensearch.action.ActionType; +import org.opensearch.action.admin.cluster.health.ClusterHealthRequest; +import org.opensearch.action.admin.cluster.health.ClusterHealthResponse; import org.opensearch.action.admin.cluster.settings.ClusterUpdateSettingsRequest; import org.opensearch.action.admin.cluster.settings.ClusterUpdateSettingsResponse; import org.opensearch.action.admin.indices.alias.get.GetAliasesRequest; @@ -596,6 +598,18 @@ public Cancellable updateSettings( return clusterClient.putSettingsAsync(clusterUpdateSettingsRequest, options, listener); } + /** + * Asynchronously get cluster health using the Cluster Health API. + * + * If timeout occurred, {@link ClusterHealthResponse} will have isTimedOut() == true and status() == RestStatus.REQUEST_TIMEOUT + * @param clusterHealthRequest the request + * @param listener the listener to be notified upon request completion + * @return cancellable that may be used to cancel the request + */ + public Cancellable health(ClusterHealthRequest clusterHealthRequest, ActionListener listener) { + return clusterClient.healthAsync(clusterHealthRequest, options, listener); + } + // TODO: Implement state() // https://github.com/opensearch-project/opensearch-sdk-java/issues/354 } diff --git a/src/test/java/org/opensearch/sdk/TestSDKClient.java b/src/test/java/org/opensearch/sdk/TestSDKClient.java index 4cb4a52c..0be408f6 100644 --- a/src/test/java/org/opensearch/sdk/TestSDKClient.java +++ b/src/test/java/org/opensearch/sdk/TestSDKClient.java @@ -11,6 +11,7 @@ import org.junit.jupiter.api.Test; import org.opensearch.action.ActionListener; +import org.opensearch.action.admin.cluster.health.ClusterHealthRequest; import org.opensearch.action.admin.cluster.settings.ClusterUpdateSettingsRequest; import org.opensearch.action.admin.indices.alias.get.GetAliasesRequest; import org.opensearch.action.admin.indices.delete.DeleteIndexRequest; @@ -130,6 +131,7 @@ public void testSDKClusterAdminClient() throws Exception { Cancellable.class, clusterAdminClient.updateSettings(new ClusterUpdateSettingsRequest(), ActionListener.wrap(r -> {}, e -> {})) ); + assertInstanceOf(Cancellable.class, clusterAdminClient.health(new ClusterHealthRequest(), ActionListener.wrap(r -> {}, e -> {}))); sdkClient.doCloseHighLevelClient(); }