mirror of
https://github.com/elastic/elasticsearch.git
synced 2025-04-25 07:37:19 -04:00
Add the dry_run query parameter to support simulating of updating of desired nodes. The update request will be validated, but no cluster state updates will be performed. In order to indicate that the response was a result of a dry run, we add the dry_run run field to the JSON representation of a response. See #82975
143 lines
4.3 KiB
Text
143 lines
4.3 KiB
Text
[[update-desired-nodes]]
|
|
=== Create or update desired nodes API
|
|
++++
|
|
<titleabbrev>Create or update desired nodes</titleabbrev>
|
|
++++
|
|
|
|
NOTE: {cloud-only}
|
|
|
|
Creates or updates the desired nodes.
|
|
|
|
[[update-desired-nodes-request]]
|
|
==== {api-request-title}
|
|
|
|
[source,console]
|
|
--------------------------------------------------
|
|
PUT /_internal/desired_nodes/<history_id>/<version>
|
|
{
|
|
"nodes" : [
|
|
{
|
|
"settings" : {
|
|
"node.name" : "instance-000187",
|
|
"node.external_id": "instance-000187",
|
|
"node.roles" : ["data_hot", "master"],
|
|
"node.attr.data" : "hot",
|
|
"node.attr.logical_availability_zone" : "zone-0"
|
|
},
|
|
"processors" : 8.0,
|
|
"memory" : "58gb",
|
|
"storage" : "2tb",
|
|
"node_version" : "{version}"
|
|
}
|
|
]
|
|
}
|
|
--------------------------------------------------
|
|
// TEST[s/<history_id>/test/]
|
|
// TEST[s/<version>/1/]
|
|
|
|
//////////////////////////
|
|
|
|
[source,console]
|
|
--------------------------------------------------
|
|
DELETE /_internal/desired_nodes
|
|
--------------------------------------------------
|
|
// TEST[continued]
|
|
|
|
//////////////////////////
|
|
|
|
[[update-desired-nodes-query-params]]
|
|
==== {api-query-parms-title}
|
|
|
|
include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=master-timeout]
|
|
|
|
`dry_run`::
|
|
(Optional, Boolean) If `true`, then the request simulates the update and
|
|
returns a response with `dry_run` field set to `true`.
|
|
|
|
[[update-desired-nodes-desc]]
|
|
==== {api-description-title}
|
|
|
|
This API creates or update the desired nodes. External orchestrators can use
|
|
this API to let Elasticsearch know about the cluster topology, including future
|
|
changes such as adding or removing nodes. Using this information, the system is
|
|
able to take better decisions.
|
|
|
|
It's possible to run the update in "dry run" mode by adding the
|
|
`?dry_run` query parameter. This will validate the request result, but will not actually perform the update.
|
|
|
|
[[update-desired-nodes-examples]]
|
|
==== {api-examples-title}
|
|
|
|
In this example, a new version for the desired nodes with history `Ywkh3INLQcuPT49f6kcppA` is created.
|
|
This API only accepts monotonically increasing versions.
|
|
|
|
[source,console]
|
|
--------------------------------------------------
|
|
PUT /_internal/desired_nodes/Ywkh3INLQcuPT49f6kcppA/100
|
|
{
|
|
"nodes" : [
|
|
{
|
|
"settings" : {
|
|
"node.name" : "instance-000187",
|
|
"node.external_id": "instance-000187",
|
|
"node.roles" : ["data_hot", "master"],
|
|
"node.attr.data" : "hot",
|
|
"node.attr.logical_availability_zone" : "zone-0"
|
|
},
|
|
"processors" : 8.0,
|
|
"memory" : "58gb",
|
|
"storage" : "2tb",
|
|
"node_version" : "{version}"
|
|
}
|
|
]
|
|
}
|
|
--------------------------------------------------
|
|
// TEST
|
|
|
|
The API returns the following result:
|
|
|
|
[source,console-result]
|
|
--------------------------------------------------
|
|
{
|
|
"replaced_existing_history_id": false,
|
|
"dry_run": false
|
|
}
|
|
--------------------------------------------------
|
|
|
|
Additionally, it is possible to specify a processors range.
|
|
This is helpful in environments where Elasticsearch nodes can
|
|
be deployed in hosts where the number of processors that the
|
|
Elasticsearch process can use is guaranteed to be at least the
|
|
lower range and up to the upper range. This is a common scenario
|
|
in Linux deployments where cgroups is used.
|
|
[source,console]
|
|
--------------------------------------------------
|
|
PUT /_internal/desired_nodes/Ywkh3INLQcuPT49f6kcppA/101
|
|
{
|
|
"nodes" : [
|
|
{
|
|
"settings" : {
|
|
"node.name" : "instance-000187",
|
|
"node.external_id": "instance-000187",
|
|
"node.roles" : ["data_hot", "master"],
|
|
"node.attr.data" : "hot",
|
|
"node.attr.logical_availability_zone" : "zone-0"
|
|
},
|
|
"processors_range" : {"min": 8.0, "max": 10.0},
|
|
"memory" : "58gb",
|
|
"storage" : "2tb",
|
|
"node_version" : "{version}"
|
|
}
|
|
]
|
|
}
|
|
--------------------------------------------------
|
|
|
|
//////////////////////////
|
|
|
|
[source,console]
|
|
--------------------------------------------------
|
|
DELETE /_internal/desired_nodes
|
|
--------------------------------------------------
|
|
// TEST[continued]
|
|
|
|
//////////////////////////
|