From b6bc24ef9baf786d131f0c82cb6543926fa70552 Mon Sep 17 00:00:00 2001 From: zacharymorn Date: Wed, 29 Apr 2020 00:34:10 -0700 Subject: [PATCH 1/2] Add API specs for voting config exclusions (#55760) Closes #48131 --- .../client/RestHighLevelClientTests.java | 2 + ...uster.delete_voting_config_exclusions.json | 26 +++++ ...cluster.post_voting_config_exclusions.json | 34 ++++++ .../10_basic.yml | 103 ++++++++++++++++++ 4 files changed, 165 insertions(+) create mode 100644 rest-api-spec/src/main/resources/rest-api-spec/api/cluster.delete_voting_config_exclusions.json create mode 100644 rest-api-spec/src/main/resources/rest-api-spec/api/cluster.post_voting_config_exclusions.json create mode 100644 rest-api-spec/src/main/resources/rest-api-spec/test/cluster.voting_config_exclusions/10_basic.yml diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/RestHighLevelClientTests.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/RestHighLevelClientTests.java index d1a32c93ffdbd..b6440dcddc610 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/RestHighLevelClientTests.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/RestHighLevelClientTests.java @@ -869,6 +869,8 @@ public void testApiNamingConventions() throws Exception { "cluster.reroute", "cluster.state", "cluster.stats", + "cluster.post_voting_config_exclusions", + "cluster.delete_voting_config_exclusions", "indices.shard_stores", "indices.upgrade", "indices.recovery", diff --git a/rest-api-spec/src/main/resources/rest-api-spec/api/cluster.delete_voting_config_exclusions.json b/rest-api-spec/src/main/resources/rest-api-spec/api/cluster.delete_voting_config_exclusions.json new file mode 100644 index 0000000000000..d3db7dedd6ca2 --- /dev/null +++ b/rest-api-spec/src/main/resources/rest-api-spec/api/cluster.delete_voting_config_exclusions.json @@ -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 + } + } + } +} diff --git a/rest-api-spec/src/main/resources/rest-api-spec/api/cluster.post_voting_config_exclusions.json b/rest-api-spec/src/main/resources/rest-api-spec/api/cluster.post_voting_config_exclusions.json new file mode 100644 index 0000000000000..4dbaf80c33b85 --- /dev/null +++ b/rest-api-spec/src/main/resources/rest-api-spec/api/cluster.post_voting_config_exclusions.json @@ -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" + } + } + } +} diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/cluster.voting_config_exclusions/10_basic.yml b/rest-api-spec/src/main/resources/rest-api-spec/test/cluster.voting_config_exclusions/10_basic.yml new file mode 100644 index 0000000000000..0f81942dbae05 --- /dev/null +++ b/rest-api-spec/src/main/resources/rest-api-spec/test/cluster.voting_config_exclusions/10_basic.yml @@ -0,0 +1,103 @@ +teardown: + - do: + cluster.delete_voting_config_exclusions: {} + +--- +"Get cluster state without voting config exclusions": + - 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 + From 9aa0b36b2e9abade8fc0200accfcf32ce9ae77ad Mon Sep 17 00:00:00 2001 From: David Turner Date: Wed, 29 Apr 2020 13:14:10 +0100 Subject: [PATCH 2/2] Skip get test in 6.x --- .../test/cluster.voting_config_exclusions/10_basic.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/cluster.voting_config_exclusions/10_basic.yml b/rest-api-spec/src/main/resources/rest-api-spec/test/cluster.voting_config_exclusions/10_basic.yml index 0f81942dbae05..5474c9bdf4da0 100644 --- a/rest-api-spec/src/main/resources/rest-api-spec/test/cluster.voting_config_exclusions/10_basic.yml +++ b/rest-api-spec/src/main/resources/rest-api-spec/test/cluster.voting_config_exclusions/10_basic.yml @@ -4,6 +4,10 @@ teardown: --- "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: {}