Add API specs for voting config exclusions (#55919)
Closes #48131 Backport of #55760 Co-authored-by: zacharymorn <zacharymorn@gmail.com>
This commit is contained in:
parent
767836c367
commit
5ca511622f
|
@ -869,6 +869,8 @@ public class RestHighLevelClientTests extends ESTestCase {
|
||||||
"cluster.reroute",
|
"cluster.reroute",
|
||||||
"cluster.state",
|
"cluster.state",
|
||||||
"cluster.stats",
|
"cluster.stats",
|
||||||
|
"cluster.post_voting_config_exclusions",
|
||||||
|
"cluster.delete_voting_config_exclusions",
|
||||||
"indices.shard_stores",
|
"indices.shard_stores",
|
||||||
"indices.upgrade",
|
"indices.upgrade",
|
||||||
"indices.recovery",
|
"indices.recovery",
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
"cluster.delete_voting_config_exclusions":{
|
||||||
|
"documentation":{
|
||||||
|
"url":"https://www.elastic.co/guide/en/elasticsearch/reference/master/voting-config-exclusions.html",
|
||||||
|
"description":"Clears cluster voting config exclusions."
|
||||||
|
},
|
||||||
|
"stability":"stable",
|
||||||
|
"url":{
|
||||||
|
"paths":[
|
||||||
|
{
|
||||||
|
"path":"/_cluster/voting_config_exclusions",
|
||||||
|
"methods":[
|
||||||
|
"DELETE"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params":{
|
||||||
|
"wait_for_removal": {
|
||||||
|
"type":"boolean",
|
||||||
|
"description":"Specifies whether to wait for all excluded nodes to be removed from the cluster before clearing the voting configuration exclusions list.",
|
||||||
|
"default":true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
"cluster.post_voting_config_exclusions":{
|
||||||
|
"documentation":{
|
||||||
|
"url":"https://www.elastic.co/guide/en/elasticsearch/reference/master/voting-config-exclusions.html",
|
||||||
|
"description":"Updates the cluster voting config exclusions by node ids or node names."
|
||||||
|
},
|
||||||
|
"stability":"stable",
|
||||||
|
"url":{
|
||||||
|
"paths":[
|
||||||
|
{
|
||||||
|
"path":"/_cluster/voting_config_exclusions",
|
||||||
|
"methods":[
|
||||||
|
"POST"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params":{
|
||||||
|
"node_ids":{
|
||||||
|
"type":"string",
|
||||||
|
"description":"A comma-separated list of the persistent ids of the nodes to exclude from the voting configuration. If specified, you may not also specify ?node_names."
|
||||||
|
},
|
||||||
|
"node_names":{
|
||||||
|
"type":"string",
|
||||||
|
"description":"A comma-separated list of the names of the nodes to exclude from the voting configuration. If specified, you may not also specify ?node_ids."
|
||||||
|
},
|
||||||
|
"timeout":{
|
||||||
|
"type":"time",
|
||||||
|
"description":"Explicit operation timeout",
|
||||||
|
"default":"30s"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,107 @@
|
||||||
|
teardown:
|
||||||
|
- do:
|
||||||
|
cluster.delete_voting_config_exclusions: {}
|
||||||
|
|
||||||
|
---
|
||||||
|
"Get cluster state without voting config exclusions":
|
||||||
|
- skip:
|
||||||
|
version: " - 6.99.99"
|
||||||
|
reason: Voting config exclusions were introduced in 7.0.0
|
||||||
|
|
||||||
|
- do:
|
||||||
|
cluster.state: {}
|
||||||
|
|
||||||
|
- length: { metadata.cluster_coordination.voting_config_exclusions: 0 }
|
||||||
|
|
||||||
|
---
|
||||||
|
"Add voting config exclusion by unknown node Id":
|
||||||
|
- skip:
|
||||||
|
version: " - 7.7.99"
|
||||||
|
reason: Tests the new voting config exclusions API introduced in 7.8.0
|
||||||
|
|
||||||
|
- do:
|
||||||
|
cluster.post_voting_config_exclusions:
|
||||||
|
node_ids: nodeId
|
||||||
|
|
||||||
|
- do:
|
||||||
|
cluster.state: {}
|
||||||
|
|
||||||
|
- length: { metadata.cluster_coordination.voting_config_exclusions: 1 }
|
||||||
|
- match: { metadata.cluster_coordination.voting_config_exclusions.0.node_id: "nodeId" }
|
||||||
|
- match: { metadata.cluster_coordination.voting_config_exclusions.0.node_name: "_absent_" }
|
||||||
|
|
||||||
|
---
|
||||||
|
"Add voting config exclusion by unknown node Ids":
|
||||||
|
- skip:
|
||||||
|
version: " - 7.7.99"
|
||||||
|
features: contains
|
||||||
|
reason: "contains is a newly added assertion, and this tests the new voting config exclusions API introduced in 7.8.0"
|
||||||
|
|
||||||
|
- do:
|
||||||
|
cluster.post_voting_config_exclusions:
|
||||||
|
node_ids: nodeId1,nodeId2
|
||||||
|
|
||||||
|
- do:
|
||||||
|
cluster.state: {}
|
||||||
|
|
||||||
|
- length: { metadata.cluster_coordination.voting_config_exclusions: 2 }
|
||||||
|
- contains : { metadata.cluster_coordination.voting_config_exclusions: {node_id: "nodeId1", node_name: "_absent_"} }
|
||||||
|
- contains : { metadata.cluster_coordination.voting_config_exclusions: {node_id: "nodeId2", node_name: "_absent_"} }
|
||||||
|
|
||||||
|
---
|
||||||
|
"Add voting config exclusion by unknown node name":
|
||||||
|
- skip:
|
||||||
|
version: " - 7.7.99"
|
||||||
|
reason: Tests the new voting config exclusions API introduced in 7.8.0
|
||||||
|
|
||||||
|
- do:
|
||||||
|
cluster.post_voting_config_exclusions:
|
||||||
|
node_names: nodeName
|
||||||
|
|
||||||
|
- do:
|
||||||
|
cluster.state: {}
|
||||||
|
|
||||||
|
- length: { metadata.cluster_coordination.voting_config_exclusions: 1 }
|
||||||
|
- match: { metadata.cluster_coordination.voting_config_exclusions.0.node_id: "_absent_" }
|
||||||
|
- match: { metadata.cluster_coordination.voting_config_exclusions.0.node_name: "nodeName" }
|
||||||
|
|
||||||
|
---
|
||||||
|
"Add voting config exclusion by unknown node names":
|
||||||
|
- skip:
|
||||||
|
version: " - 7.7.99"
|
||||||
|
features: contains
|
||||||
|
reason: "contains is a newly added assertion, and this tests the new voting config exclusions API introduced in 7.8.0"
|
||||||
|
|
||||||
|
- do:
|
||||||
|
cluster.post_voting_config_exclusions:
|
||||||
|
node_names: nodeName1,nodeName2
|
||||||
|
|
||||||
|
- do:
|
||||||
|
cluster.state: {}
|
||||||
|
|
||||||
|
- length: { metadata.cluster_coordination.voting_config_exclusions: 2 }
|
||||||
|
- contains : { metadata.cluster_coordination.voting_config_exclusions: {node_id: "_absent_", node_name: "nodeName1"} }
|
||||||
|
- contains : { metadata.cluster_coordination.voting_config_exclusions: {node_id: "_absent_", node_name: "nodeName2"} }
|
||||||
|
|
||||||
|
---
|
||||||
|
"Throw exception when adding voting config exclusion without specifying nodes":
|
||||||
|
- skip:
|
||||||
|
version: " - 7.7.99"
|
||||||
|
reason: Tests the new voting config exclusions API introduced in 7.8.0
|
||||||
|
|
||||||
|
- do:
|
||||||
|
catch: /Please set node identifiers correctly. One and only one of \[node_name\], \[node_names\] and \[node_ids\] has to be set/
|
||||||
|
cluster.post_voting_config_exclusions: {}
|
||||||
|
|
||||||
|
---
|
||||||
|
"Throw exception when adding voting config exclusion and specifying both node_ids and node_names":
|
||||||
|
- skip:
|
||||||
|
version: " - 7.7.99"
|
||||||
|
reason: Tests the new voting config exclusions API introduced in 7.8.0
|
||||||
|
|
||||||
|
- do:
|
||||||
|
catch: /Please set node identifiers correctly. One and only one of \[node_name\], \[node_names\] and \[node_ids\] has to be set/
|
||||||
|
cluster.post_voting_config_exclusions:
|
||||||
|
node_ids: nodeId
|
||||||
|
node_names: nodeName
|
||||||
|
|
Loading…
Reference in New Issue