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:
David Turner 2020-04-29 14:00:36 +01:00 committed by GitHub
parent 767836c367
commit 5ca511622f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 169 additions and 0 deletions

View File

@ -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",

View File

@ -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
}
}
}
}

View File

@ -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"
}
}
}
}

View File

@ -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