mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-03-01 16:39:11 +00:00
This is the first x-pack API we're adding to the high level REST client so there is a lot to talk about here! = Open source The *client* for these APIs is open source. We're taking the previously Elastic licensed files used for the `Request` and `Response` objects and relicensing them under the Apache 2 license. The implementation of these features is staying under the Elastic license. This lines up with how the rest of the Elasticsearch language clients work. = Location of the new files We're moving all of the `Request` and `Response` objects that we're relicensing to the `x-pack/protocol` directory. We're adding a copy of the Apache 2 license to the root fo the `x-pack/protocol` directory to line up with the language in the root `LICENSE.txt` file. All files in this directory will have the Apache 2 license header as well. We don't want there to be any confusion. Even though the files are under the `x-pack` directory, they are Apache 2 licensed. We chose this particular directory layout because it keeps the X-Pack stuff together and easier to think about. = Location of the API in the REST client We've been following the layout of the rest-api-spec files for other APIs and we plan to do this for the X-Pack APIs with one exception: we're dropping the `xpack` from the name of most of the APIs. So `xpack.graph.explore` will become `graph().explore()` and `xpack.license.get` will become `license().get()`. `xpack.info` and `xpack.usage` are special here though because they don't belong to any proper category. For now I'm just calling `xpack.info` `xPackInfo()` and intend to call usage `xPackUsage` though I'm not convinced that this is the final name for them. But it does get us started. = Jars, jars everywhere! This change makes the `xpack:protocol` project a `compile` scoped dependency of the `x-pack:plugin:core` and `client:rest-high-level` projects. I intend to keep it a compile scoped dependency of `x-pack:plugin:core` but I intend to bundle the contents of the protocol jar into the `client:rest-high-level` jar in a follow up. This change has grown large enough at this point. In that followup I'll address javadoc issues as well. = Breaking-Java This breaks that transport client by a few classes around. We've traditionally been ok with doing this to the transport client.
65 lines
2.7 KiB
Plaintext
65 lines
2.7 KiB
Plaintext
[[java-rest-high-x-pack-info]]
|
|
=== X-Pack Info API
|
|
|
|
[[java-rest-high-x-pack-info-execution]]
|
|
==== Execution
|
|
|
|
General information about the installed {xpack} features can be retrieved
|
|
using the `xPackInfo()` method:
|
|
|
|
["source","java",subs="attributes,callouts,macros"]
|
|
--------------------------------------------------
|
|
include-tagged::{doc-tests}/MiscellaneousDocumentationIT.java[x-pack-info-execute]
|
|
--------------------------------------------------
|
|
<1> Enable verbose mode. The default is `false` but `true` will return
|
|
more information.
|
|
<2> Set the categories of information to retrieve. The the default is to
|
|
return no information which is useful for checking if {xpack} is installed
|
|
but not much else.
|
|
|
|
[[java-rest-high-x-pack-info-response]]
|
|
==== Response
|
|
|
|
The returned `XPackInfoResponse` can contain `BuildInfo`, `LicenseInfo`,
|
|
and `FeatureSetsInfo` depending on the categories requested.
|
|
|
|
["source","java",subs="attributes,callouts,macros"]
|
|
--------------------------------------------------
|
|
include-tagged::{doc-tests}/MiscellaneousDocumentationIT.java[x-pack-info-response]
|
|
--------------------------------------------------
|
|
<1> `BuildInfo` contains the commit hash from which Elasticsearch was
|
|
built and the timestamp that the x-pack module was created.
|
|
<2> `LicenseInfo` contains the type of license that the cluster is using
|
|
and its expiration date.
|
|
<3> Basic licenses do not expire and will return this constant.
|
|
<4> `FeatureSetsInfo` contains a `Map` from the name of a feature to
|
|
information about a feature like whether or not it is available under
|
|
the current license.
|
|
|
|
[[java-rest-high-x-pack-info-async]]
|
|
==== Asynchronous Execution
|
|
|
|
This request can be executed asynchronously:
|
|
|
|
["source","java",subs="attributes,callouts,macros"]
|
|
--------------------------------------------------
|
|
include-tagged::{doc-tests}/MiscellaneousDocumentationIT.java[x-pack-info-execute-async]
|
|
--------------------------------------------------
|
|
<1> The `XPackInfoRequest` to execute and the `ActionListener` to use when
|
|
the execution completes
|
|
|
|
The asynchronous method does not block and returns immediately. Once it is
|
|
completed the `ActionListener` is called back using the `onResponse` method
|
|
if the execution successfully completed or using the `onFailure` method if
|
|
it failed.
|
|
|
|
A typical listener for `XPackInfoResponse` looks like:
|
|
|
|
["source","java",subs="attributes,callouts,macros"]
|
|
--------------------------------------------------
|
|
include-tagged::{doc-tests}/MiscellaneousDocumentationIT.java[x-pack-info-execute-listener]
|
|
--------------------------------------------------
|
|
<1> Called when the execution is successfully completed. The response is
|
|
provided as an argument
|
|
<2> Called in case of failure. The raised exception is provided as an argument
|