mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-20 03:45:02 +00:00
Fix wait_for_no_initializing_shards params (#58379)
This commit is contained in:
parent
1178f5c6db
commit
5df043d0e0
@ -56,6 +56,11 @@ public class RestClusterHealthAction extends BaseRestHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||||
|
final ClusterHealthRequest clusterHealthRequest = fromRequest(request);
|
||||||
|
return channel -> client.admin().cluster().health(clusterHealthRequest, new RestStatusToXContentListener<>(channel));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ClusterHealthRequest fromRequest(final RestRequest request) {
|
||||||
final ClusterHealthRequest clusterHealthRequest = clusterHealthRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
final ClusterHealthRequest clusterHealthRequest = clusterHealthRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
||||||
clusterHealthRequest.indicesOptions(IndicesOptions.fromRequest(request, clusterHealthRequest.indicesOptions()));
|
clusterHealthRequest.indicesOptions(IndicesOptions.fromRequest(request, clusterHealthRequest.indicesOptions()));
|
||||||
clusterHealthRequest.local(request.paramAsBoolean("local", clusterHealthRequest.local()));
|
clusterHealthRequest.local(request.paramAsBoolean("local", clusterHealthRequest.local()));
|
||||||
@ -68,7 +73,7 @@ public class RestClusterHealthAction extends BaseRestHandler {
|
|||||||
clusterHealthRequest.waitForNoRelocatingShards(
|
clusterHealthRequest.waitForNoRelocatingShards(
|
||||||
request.paramAsBoolean("wait_for_no_relocating_shards", clusterHealthRequest.waitForNoRelocatingShards()));
|
request.paramAsBoolean("wait_for_no_relocating_shards", clusterHealthRequest.waitForNoRelocatingShards()));
|
||||||
clusterHealthRequest.waitForNoInitializingShards(
|
clusterHealthRequest.waitForNoInitializingShards(
|
||||||
request.paramAsBoolean("wait_for_no_initializing_shards", clusterHealthRequest.waitForNoRelocatingShards()));
|
request.paramAsBoolean("wait_for_no_initializing_shards", clusterHealthRequest.waitForNoInitializingShards()));
|
||||||
if (request.hasParam("wait_for_relocating_shards")) {
|
if (request.hasParam("wait_for_relocating_shards")) {
|
||||||
// wait_for_relocating_shards has been removed in favor of wait_for_no_relocating_shards
|
// wait_for_relocating_shards has been removed in favor of wait_for_no_relocating_shards
|
||||||
throw new IllegalArgumentException("wait_for_relocating_shards has been removed, " +
|
throw new IllegalArgumentException("wait_for_relocating_shards has been removed, " +
|
||||||
@ -82,7 +87,7 @@ public class RestClusterHealthAction extends BaseRestHandler {
|
|||||||
if (request.param("wait_for_events") != null) {
|
if (request.param("wait_for_events") != null) {
|
||||||
clusterHealthRequest.waitForEvents(Priority.valueOf(request.param("wait_for_events").toUpperCase(Locale.ROOT)));
|
clusterHealthRequest.waitForEvents(Priority.valueOf(request.param("wait_for_events").toUpperCase(Locale.ROOT)));
|
||||||
}
|
}
|
||||||
return channel -> client.admin().cluster().health(clusterHealthRequest, new RestStatusToXContentListener<>(channel));
|
return clusterHealthRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Set<String> RESPONSE_PARAMS = Collections.singleton("level");
|
private static final Set<String> RESPONSE_PARAMS = Collections.singleton("level");
|
||||||
|
@ -0,0 +1,89 @@
|
|||||||
|
/*
|
||||||
|
* Licensed to Elasticsearch under one or more contributor
|
||||||
|
* license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright
|
||||||
|
* ownership. Elasticsearch licenses this file to you under
|
||||||
|
* the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
* not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.elasticsearch.rest.action.admin.cluster;
|
||||||
|
|
||||||
|
import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest;
|
||||||
|
import org.elasticsearch.action.support.ActiveShardCount;
|
||||||
|
import org.elasticsearch.cluster.health.ClusterHealthStatus;
|
||||||
|
import org.elasticsearch.common.Priority;
|
||||||
|
import org.elasticsearch.common.unit.TimeValue;
|
||||||
|
import org.elasticsearch.rest.RestRequest;
|
||||||
|
import org.elasticsearch.test.ESTestCase;
|
||||||
|
import org.elasticsearch.test.rest.FakeRestRequest;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
|
|
||||||
|
public class RestClusterHealthActionTests extends ESTestCase {
|
||||||
|
|
||||||
|
public void testFromRequest() {
|
||||||
|
Map<String, String> params = new HashMap<>();
|
||||||
|
String index = "index";
|
||||||
|
boolean local = randomBoolean();
|
||||||
|
String masterTimeout = randomTimeValue();
|
||||||
|
String timeout = randomTimeValue();
|
||||||
|
ClusterHealthStatus waitForStatus = randomFrom(ClusterHealthStatus.values());
|
||||||
|
boolean waitForNoRelocatingShards = randomBoolean();
|
||||||
|
boolean waitForNoInitializingShards = randomBoolean();
|
||||||
|
int waitForActiveShards = randomIntBetween(1, 3);
|
||||||
|
String waitForNodes = "node";
|
||||||
|
Priority waitForEvents = randomFrom(Priority.values());
|
||||||
|
|
||||||
|
params.put("index", index);
|
||||||
|
params.put("local", String.valueOf(local));
|
||||||
|
params.put("master_timeout", masterTimeout);
|
||||||
|
params.put("timeout", timeout);
|
||||||
|
params.put("wait_for_status", waitForStatus.name());
|
||||||
|
if (waitForNoRelocatingShards || randomBoolean()) {
|
||||||
|
params.put("wait_for_no_relocating_shards", String.valueOf(waitForNoRelocatingShards));
|
||||||
|
}
|
||||||
|
if (waitForNoInitializingShards || randomBoolean()) {
|
||||||
|
params.put("wait_for_no_initializing_shards", String.valueOf(waitForNoInitializingShards));
|
||||||
|
}
|
||||||
|
params.put("wait_for_active_shards", String.valueOf(waitForActiveShards));
|
||||||
|
params.put("wait_for_nodes", waitForNodes);
|
||||||
|
params.put("wait_for_events", waitForEvents.name());
|
||||||
|
|
||||||
|
FakeRestRequest restRequest = buildRestRequest(params);
|
||||||
|
ClusterHealthRequest clusterHealthRequest = RestClusterHealthAction.fromRequest(restRequest);
|
||||||
|
assertThat(clusterHealthRequest.indices().length, equalTo(1));
|
||||||
|
assertThat(clusterHealthRequest.indices()[0], equalTo(index));
|
||||||
|
assertThat(clusterHealthRequest.local(), equalTo(local));
|
||||||
|
assertThat(clusterHealthRequest.masterNodeTimeout(), equalTo(TimeValue.parseTimeValue(masterTimeout, "test")));
|
||||||
|
assertThat(clusterHealthRequest.timeout(), equalTo(TimeValue.parseTimeValue(timeout, "test")));
|
||||||
|
assertThat(clusterHealthRequest.waitForStatus(), equalTo(waitForStatus));
|
||||||
|
assertThat(clusterHealthRequest.waitForNoRelocatingShards(), equalTo(waitForNoRelocatingShards));
|
||||||
|
assertThat(clusterHealthRequest.waitForNoInitializingShards(), equalTo(waitForNoInitializingShards));
|
||||||
|
assertThat(clusterHealthRequest.waitForActiveShards(), equalTo(ActiveShardCount.parseString(String.valueOf(waitForActiveShards))));
|
||||||
|
assertThat(clusterHealthRequest.waitForNodes(), equalTo(waitForNodes));
|
||||||
|
assertThat(clusterHealthRequest.waitForEvents(), equalTo(waitForEvents));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private FakeRestRequest buildRestRequest(Map<String, String> params) {
|
||||||
|
return new FakeRestRequest.Builder(xContentRegistry())
|
||||||
|
.withMethod(RestRequest.Method.GET)
|
||||||
|
.withPath("/_cluster/health")
|
||||||
|
.withParams(params)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user