Remove lenient URL parameter parsing
Today when parsing a request, Elasticsearch silently ignores incorrect (including parameters with typos) or unused parameters. This is bad as it leads to requests having unintended behavior (e.g., if a user hits the _analyze API and misspell the "tokenizer" then Elasticsearch will just use the standard analyzer, completely against intentions). This commit removes lenient URL parameter parsing. The strategy is simple: when a request is handled and a parameter is touched, we mark it as such. Before the request is actually executed, we check to ensure that all parameters have been consumed. If there are remaining parameters yet to be consumed, we fail the request with a list of the unconsumed parameters. An exception has to be made for parameters that format the response (as opposed to controlling the request); for this case, handlers are able to provide a list of parameters that should be excluded from tripping the unconsumed parameters check because those parameters will be used in formatting the response. Additionally, some inconsistencies between the parameters in the code and in the docs are corrected. Relates #20722
This commit is contained in:
parent
2b3760f78b
commit
51d53791fe
|
@ -39,6 +39,8 @@ import org.elasticsearch.rest.RestRequest;
|
|||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.PUT;
|
||||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
|
@ -57,7 +59,7 @@ public class RestNoopBulkAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) throws Exception {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
BulkRequest bulkRequest = Requests.bulkRequest();
|
||||
String defaultIndex = request.param("index");
|
||||
String defaultType = request.param("type");
|
||||
|
@ -75,9 +77,10 @@ public class RestNoopBulkAction extends BaseRestHandler {
|
|||
bulkRequest.add(request.content(), defaultIndex, defaultType, defaultRouting, defaultFields, null, defaultPipeline, null, true);
|
||||
|
||||
// short circuit the call to the transport layer
|
||||
BulkRestBuilderListener listener = new BulkRestBuilderListener(channel, request);
|
||||
listener.onResponse(bulkRequest);
|
||||
|
||||
return channel -> {
|
||||
BulkRestBuilderListener listener = new BulkRestBuilderListener(channel, request);
|
||||
listener.onResponse(bulkRequest);
|
||||
};
|
||||
}
|
||||
|
||||
private static class BulkRestBuilderListener extends RestBuilderListener<BulkRequest> {
|
||||
|
|
|
@ -23,7 +23,6 @@ import org.elasticsearch.client.node.NodeClient;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.RestStatusToXContentListener;
|
||||
|
@ -47,8 +46,8 @@ public class RestNoopSearchAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) throws IOException {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
SearchRequest searchRequest = new SearchRequest();
|
||||
client.execute(NoopSearchAction.INSTANCE, searchRequest, new RestStatusToXContentListener<>(channel));
|
||||
return channel -> client.execute(NoopSearchAction.INSTANCE, searchRequest, new RestStatusToXContentListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -247,32 +247,32 @@ public class BulkRequest extends ActionRequest<BulkRequest> implements Composite
|
|||
/**
|
||||
* Adds a framed data in binary format
|
||||
*/
|
||||
public BulkRequest add(byte[] data, int from, int length) throws Exception {
|
||||
public BulkRequest add(byte[] data, int from, int length) throws IOException {
|
||||
return add(data, from, length, null, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a framed data in binary format
|
||||
*/
|
||||
public BulkRequest add(byte[] data, int from, int length, @Nullable String defaultIndex, @Nullable String defaultType) throws Exception {
|
||||
public BulkRequest add(byte[] data, int from, int length, @Nullable String defaultIndex, @Nullable String defaultType) throws IOException {
|
||||
return add(new BytesArray(data, from, length), defaultIndex, defaultType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a framed data in binary format
|
||||
*/
|
||||
public BulkRequest add(BytesReference data, @Nullable String defaultIndex, @Nullable String defaultType) throws Exception {
|
||||
public BulkRequest add(BytesReference data, @Nullable String defaultIndex, @Nullable String defaultType) throws IOException {
|
||||
return add(data, defaultIndex, defaultType, null, null, null, null, null, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a framed data in binary format
|
||||
*/
|
||||
public BulkRequest add(BytesReference data, @Nullable String defaultIndex, @Nullable String defaultType, boolean allowExplicitIndex) throws Exception {
|
||||
public BulkRequest add(BytesReference data, @Nullable String defaultIndex, @Nullable String defaultType, boolean allowExplicitIndex) throws IOException {
|
||||
return add(data, defaultIndex, defaultType, null, null, null, null, null, allowExplicitIndex);
|
||||
}
|
||||
|
||||
public BulkRequest add(BytesReference data, @Nullable String defaultIndex, @Nullable String defaultType, @Nullable String defaultRouting, @Nullable String[] defaultFields, @Nullable FetchSourceContext defaultFetchSourceContext, @Nullable String defaultPipeline, @Nullable Object payload, boolean allowExplicitIndex) throws Exception {
|
||||
public BulkRequest add(BytesReference data, @Nullable String defaultIndex, @Nullable String defaultType, @Nullable String defaultRouting, @Nullable String[] defaultFields, @Nullable FetchSourceContext defaultFetchSourceContext, @Nullable String defaultPipeline, @Nullable Object payload, boolean allowExplicitIndex) throws IOException {
|
||||
XContent xContent = XContentFactory.xContent(data);
|
||||
int line = 0;
|
||||
int from = 0;
|
||||
|
|
|
@ -335,7 +335,7 @@ public class MultiGetRequest extends ActionRequest<MultiGetRequest> implements I
|
|||
return add(defaultIndex, defaultType, defaultFields, defaultFetchSource, null, data, allowExplicitIndex);
|
||||
}
|
||||
|
||||
public MultiGetRequest add(@Nullable String defaultIndex, @Nullable String defaultType, @Nullable String[] defaultFields, @Nullable FetchSourceContext defaultFetchSource, @Nullable String defaultRouting, BytesReference data, boolean allowExplicitIndex) throws Exception {
|
||||
public MultiGetRequest add(@Nullable String defaultIndex, @Nullable String defaultType, @Nullable String[] defaultFields, @Nullable FetchSourceContext defaultFetchSource, @Nullable String defaultRouting, BytesReference data, boolean allowExplicitIndex) throws IOException {
|
||||
try (XContentParser parser = XContentFactory.xContent(data).createParser(data)) {
|
||||
XContentParser.Token token;
|
||||
String currentFieldName = null;
|
||||
|
|
|
@ -42,7 +42,7 @@ public class BaseTasksRequest<Request extends BaseTasksRequest<Request>> extends
|
|||
|
||||
public static final String[] ALL_NODES = Strings.EMPTY_ARRAY;
|
||||
|
||||
private String[] nodesIds = ALL_NODES;
|
||||
private String[] nodes = ALL_NODES;
|
||||
|
||||
private TimeValue timeout;
|
||||
|
||||
|
@ -58,7 +58,7 @@ public class BaseTasksRequest<Request extends BaseTasksRequest<Request>> extends
|
|||
@Override
|
||||
public ActionRequestValidationException validate() {
|
||||
ActionRequestValidationException validationException = null;
|
||||
if (taskId.isSet() && nodesIds.length > 0) {
|
||||
if (taskId.isSet() && nodes.length > 0) {
|
||||
validationException = addValidationError("task id cannot be used together with node ids",
|
||||
validationException);
|
||||
}
|
||||
|
@ -81,13 +81,13 @@ public class BaseTasksRequest<Request extends BaseTasksRequest<Request>> extends
|
|||
return actions;
|
||||
}
|
||||
|
||||
public final String[] getNodesIds() {
|
||||
return nodesIds;
|
||||
public final String[] getNodes() {
|
||||
return nodes;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public final Request setNodesIds(String... nodesIds) {
|
||||
this.nodesIds = nodesIds;
|
||||
public final Request setNodes(String... nodes) {
|
||||
this.nodes = nodes;
|
||||
return (Request) this;
|
||||
}
|
||||
|
||||
|
@ -142,7 +142,7 @@ public class BaseTasksRequest<Request extends BaseTasksRequest<Request>> extends
|
|||
super.readFrom(in);
|
||||
taskId = TaskId.readFromStream(in);
|
||||
parentTaskId = TaskId.readFromStream(in);
|
||||
nodesIds = in.readStringArray();
|
||||
nodes = in.readStringArray();
|
||||
actions = in.readStringArray();
|
||||
timeout = in.readOptionalWriteable(TimeValue::new);
|
||||
}
|
||||
|
@ -152,7 +152,7 @@ public class BaseTasksRequest<Request extends BaseTasksRequest<Request>> extends
|
|||
super.writeTo(out);
|
||||
taskId.writeTo(out);
|
||||
parentTaskId.writeTo(out);
|
||||
out.writeStringArrayNullable(nodesIds);
|
||||
out.writeStringArrayNullable(nodes);
|
||||
out.writeStringArrayNullable(actions);
|
||||
out.writeOptionalWriteable(timeout);
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ public class TasksRequestBuilder<
|
|||
|
||||
@SuppressWarnings("unchecked")
|
||||
public final RequestBuilder setNodesIds(String... nodesIds) {
|
||||
request.setNodesIds(nodesIds);
|
||||
request.setNodes(nodesIds);
|
||||
return (RequestBuilder) this;
|
||||
}
|
||||
|
||||
|
|
|
@ -125,7 +125,7 @@ public abstract class TransportTasksAction<
|
|||
if (request.getTaskId().isSet()) {
|
||||
return new String[]{request.getTaskId().getNodeId()};
|
||||
} else {
|
||||
return clusterState.nodes().resolveNodes(request.getNodesIds());
|
||||
return clusterState.nodes().resolveNodes(request.getNodes());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -94,7 +94,7 @@ public class MultiTermVectorsRequest extends ActionRequest<MultiTermVectorsReque
|
|||
return requests;
|
||||
}
|
||||
|
||||
public void add(TermVectorsRequest template, BytesReference data) throws Exception {
|
||||
public void add(TermVectorsRequest template, BytesReference data) throws IOException {
|
||||
XContentParser.Token token;
|
||||
String currentFieldName = null;
|
||||
if (data.length() > 0) {
|
||||
|
|
|
@ -715,7 +715,7 @@ public class UpdateRequest extends InstanceShardOperationRequest<UpdateRequest>
|
|||
return detectNoop;
|
||||
}
|
||||
|
||||
public UpdateRequest fromXContent(BytesReference source) throws Exception {
|
||||
public UpdateRequest fromXContent(BytesReference source) throws IOException {
|
||||
Script script = null;
|
||||
try (XContentParser parser = XContentFactory.xContent(source).createParser(source)) {
|
||||
XContentParser.Token token = parser.nextToken();
|
||||
|
|
|
@ -582,6 +582,9 @@ public final class Settings implements ToXContent {
|
|||
return builder;
|
||||
}
|
||||
|
||||
public static final Set<String> FORMAT_PARAMS =
|
||||
Collections.unmodifiableSet(new HashSet<>(Arrays.asList("settings_filter", "flat_settings")));
|
||||
|
||||
/**
|
||||
* Returns <tt>true</tt> if this settings object contains no settings
|
||||
* @return <tt>true</tt> if this settings object contains no settings
|
||||
|
|
|
@ -273,4 +273,5 @@ public class TTLFieldMapper extends MetadataFieldMapper {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -40,12 +40,20 @@ public abstract class AbstractRestChannel implements RestChannel {
|
|||
|
||||
protected final RestRequest request;
|
||||
protected final boolean detailedErrorsEnabled;
|
||||
private final String format;
|
||||
private final String filterPath;
|
||||
private final boolean pretty;
|
||||
private final boolean human;
|
||||
|
||||
private BytesStreamOutput bytesOut;
|
||||
|
||||
protected AbstractRestChannel(RestRequest request, boolean detailedErrorsEnabled) {
|
||||
this.request = request;
|
||||
this.detailedErrorsEnabled = detailedErrorsEnabled;
|
||||
this.format = request.param("format", request.header("Accept"));
|
||||
this.filterPath = request.param("filter_path", null);
|
||||
this.pretty = request.paramAsBoolean("pretty", false);
|
||||
this.human = request.paramAsBoolean("human", false);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -61,7 +69,7 @@ public abstract class AbstractRestChannel implements RestChannel {
|
|||
|
||||
@Override
|
||||
public XContentBuilder newBuilder(@Nullable BytesReference autoDetectSource, boolean useFiltering) throws IOException {
|
||||
XContentType contentType = XContentType.fromMediaTypeOrFormat(request.param("format", request.header("Accept")));
|
||||
XContentType contentType = XContentType.fromMediaTypeOrFormat(format);
|
||||
if (contentType == null) {
|
||||
// try and guess it from the auto detect source
|
||||
if (autoDetectSource != null) {
|
||||
|
@ -76,17 +84,17 @@ public abstract class AbstractRestChannel implements RestChannel {
|
|||
Set<String> includes = Collections.emptySet();
|
||||
Set<String> excludes = Collections.emptySet();
|
||||
if (useFiltering) {
|
||||
Set<String> filters = Strings.splitStringByCommaToSet(request.param("filter_path", null));
|
||||
Set<String> filters = Strings.splitStringByCommaToSet(filterPath);
|
||||
includes = filters.stream().filter(INCLUDE_FILTER).collect(toSet());
|
||||
excludes = filters.stream().filter(EXCLUDE_FILTER).map(f -> f.substring(1)).collect(toSet());
|
||||
}
|
||||
|
||||
XContentBuilder builder = new XContentBuilder(XContentFactory.xContent(contentType), bytesOutput(), includes, excludes);
|
||||
if (request.paramAsBoolean("pretty", false)) {
|
||||
if (pretty) {
|
||||
builder.prettyPrint().lfAtEnd();
|
||||
}
|
||||
|
||||
builder.humanReadable(request.paramAsBoolean("human", builder.humanReadable()));
|
||||
builder.humanReadable(human);
|
||||
return builder;
|
||||
}
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
package org.elasticsearch.rest;
|
||||
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.common.ParseFieldMatcher;
|
||||
import org.elasticsearch.common.component.AbstractComponent;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
|
@ -26,6 +27,12 @@ import org.elasticsearch.common.settings.Setting.Property;
|
|||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.plugins.ActionPlugin;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Base handler for REST requests.
|
||||
* <p>
|
||||
|
@ -35,6 +42,7 @@ import org.elasticsearch.plugins.ActionPlugin;
|
|||
* {@link ActionPlugin#getRestHeaders()}.
|
||||
*/
|
||||
public abstract class BaseRestHandler extends AbstractComponent implements RestHandler {
|
||||
|
||||
public static final Setting<Boolean> MULTI_ALLOW_EXPLICIT_INDEX =
|
||||
Setting.boolSetting("rest.action.multi.allow_explicit_index", true, Property.NodeScope);
|
||||
protected final ParseFieldMatcher parseFieldMatcher;
|
||||
|
@ -43,4 +51,65 @@ public abstract class BaseRestHandler extends AbstractComponent implements RestH
|
|||
super(settings);
|
||||
this.parseFieldMatcher = new ParseFieldMatcher(settings);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void handleRequest(RestRequest request, RestChannel channel, NodeClient client) throws Exception {
|
||||
// prepare the request for execution; has the side effect of touching the request parameters
|
||||
final RestChannelConsumer action = prepareRequest(request, client);
|
||||
|
||||
// validate unconsumed params, but we must exclude params used to format the response
|
||||
final List<String> unconsumedParams =
|
||||
request.unconsumedParams().stream().filter(p -> !responseParams().contains(p)).collect(Collectors.toList());
|
||||
|
||||
// validate the non-response params
|
||||
if (!unconsumedParams.isEmpty()) {
|
||||
throw new IllegalArgumentException("request [" + request.path() + "] contains unused params: " + unconsumedParams.toString());
|
||||
}
|
||||
|
||||
// execute the action
|
||||
action.accept(channel);
|
||||
}
|
||||
|
||||
/**
|
||||
* REST requests are handled by preparing a channel consumer that represents the execution of
|
||||
* the request against a channel.
|
||||
*/
|
||||
@FunctionalInterface
|
||||
protected interface RestChannelConsumer {
|
||||
/**
|
||||
* Executes a request against the given channel.
|
||||
*
|
||||
* @param channel the channel for sending the response
|
||||
* @throws Exception if an exception occurred executing the request
|
||||
*/
|
||||
void accept(RestChannel channel) throws Exception;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the request for execution. Implementations should consume all request params before
|
||||
* returning the runnable for actual execution. Unconsumed params will immediately terminate
|
||||
* execution of the request. However, some params are only used in processing the response;
|
||||
* implementations can override {@link BaseRestHandler#responseParams()} to indicate such
|
||||
* params.
|
||||
*
|
||||
* @param request the request to execute
|
||||
* @param client client for executing actions on the local node
|
||||
* @return the action to execute
|
||||
* @throws IOException if an I/O exception occurred parsing the request and preparing for
|
||||
* execution
|
||||
*/
|
||||
protected abstract RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) throws IOException;
|
||||
|
||||
/**
|
||||
* Parameters used for controlling the response and thus might not be consumed during
|
||||
* preparation of the request execution in
|
||||
* {@link BaseRestHandler#prepareRequest(RestRequest, NodeClient)}.
|
||||
*
|
||||
* @return a set of parameters used to control the response and thus should not trip strict
|
||||
* URL parameter checks.
|
||||
*/
|
||||
protected Set<String> responseParams() {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -220,10 +220,11 @@ public class RestController extends AbstractLifecycleComponent {
|
|||
*/
|
||||
boolean checkRequestParameters(final RestRequest request, final RestChannel channel) {
|
||||
// error_trace cannot be used when we disable detailed errors
|
||||
if (channel.detailedErrorsEnabled() == false && request.paramAsBoolean("error_trace", false)) {
|
||||
// we consume the error_trace parameter first to ensure that it is always consumed
|
||||
if (request.paramAsBoolean("error_trace", false) && channel.detailedErrorsEnabled() == false) {
|
||||
try {
|
||||
XContentBuilder builder = channel.newErrorBuilder();
|
||||
builder.startObject().field("error","error traces in responses are disabled.").endObject().string();
|
||||
builder.startObject().field("error", "error traces in responses are disabled.").endObject().string();
|
||||
RestResponse response = new BytesRestResponse(BAD_REQUEST, builder);
|
||||
response.addHeader("Content-Type", "application/json");
|
||||
channel.sendResponse(response);
|
||||
|
|
|
@ -30,7 +30,11 @@ import org.elasticsearch.common.xcontent.ToXContent;
|
|||
import java.net.SocketAddress;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.elasticsearch.common.unit.ByteSizeValue.parseBytesSizeValue;
|
||||
import static org.elasticsearch.common.unit.TimeValue.parseTimeValue;
|
||||
|
@ -39,6 +43,7 @@ public abstract class RestRequest implements ToXContent.Params {
|
|||
|
||||
private final Map<String, String> params;
|
||||
private final String rawPath;
|
||||
private final Set<String> consumedParams = new HashSet<>();
|
||||
|
||||
public RestRequest(String uri) {
|
||||
final Map<String, String> params = new HashMap<>();
|
||||
|
@ -106,11 +111,13 @@ public abstract class RestRequest implements ToXContent.Params {
|
|||
|
||||
@Override
|
||||
public final String param(String key) {
|
||||
consumedParams.add(key);
|
||||
return params.get(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final String param(String key, String defaultValue) {
|
||||
consumedParams.add(key);
|
||||
String value = params.get(key);
|
||||
if (value == null) {
|
||||
return defaultValue;
|
||||
|
@ -122,6 +129,20 @@ public abstract class RestRequest implements ToXContent.Params {
|
|||
return params;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of parameters that have not yet been consumed. This method returns a copy,
|
||||
* callers are free to modify the returned list.
|
||||
*
|
||||
* @return the list of currently unconsumed parameters.
|
||||
*/
|
||||
List<String> unconsumedParams() {
|
||||
return params
|
||||
.keySet()
|
||||
.stream()
|
||||
.filter(p -> !consumedParams.contains(p))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public float paramAsFloat(String key, float defaultValue) {
|
||||
String sValue = param(key);
|
||||
if (sValue == null) {
|
||||
|
|
|
@ -30,20 +30,18 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.RestStatus;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
import static org.elasticsearch.rest.action.RestActions.buildBroadcastShardsHeader;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class RestFieldStatsAction extends BaseRestHandler {
|
||||
|
||||
@Inject
|
||||
|
@ -56,8 +54,8 @@ public class RestFieldStatsAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request,
|
||||
final RestChannel channel, final NodeClient client) throws Exception {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request,
|
||||
final NodeClient client) throws IOException {
|
||||
if (RestActions.hasBodyContent(request) && request.hasParam("fields")) {
|
||||
throw new IllegalArgumentException("can't specify a request body and [fields] request parameter, " +
|
||||
"either specify a request body or the [fields] request parameter");
|
||||
|
@ -73,7 +71,7 @@ public class RestFieldStatsAction extends BaseRestHandler {
|
|||
fieldStatsRequest.setFields(Strings.splitStringByCommaToArray(request.param("fields")));
|
||||
}
|
||||
|
||||
client.fieldStats(fieldStatsRequest, new RestBuilderListener<FieldStatsResponse>(channel) {
|
||||
return channel -> client.fieldStats(fieldStatsRequest, new RestBuilderListener<FieldStatsResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(FieldStatsResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
|
@ -81,7 +79,7 @@ public class RestFieldStatsAction extends BaseRestHandler {
|
|||
|
||||
builder.startObject("indices");
|
||||
for (Map.Entry<String, Map<String, FieldStats>> entry1 :
|
||||
response.getIndicesMergedFieldStats().entrySet()) {
|
||||
response.getIndicesMergedFieldStats().entrySet()) {
|
||||
builder.startObject(entry1.getKey());
|
||||
builder.startObject("fields");
|
||||
for (Map.Entry<String, FieldStats> entry2 : entry1.getValue().entrySet()) {
|
||||
|
|
|
@ -28,7 +28,6 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -39,9 +38,6 @@ import java.io.IOException;
|
|||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.HEAD;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class RestMainAction extends BaseRestHandler {
|
||||
|
||||
@Inject
|
||||
|
@ -52,8 +48,8 @@ public class RestMainAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) throws Exception {
|
||||
client.execute(MainAction.INSTANCE, new MainRequest(), new RestBuilderListener<MainResponse>(channel) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
return channel -> client.execute(MainAction.INSTANCE, new MainRequest(), new RestBuilderListener<MainResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(MainResponse mainResponse, XContentBuilder builder) throws Exception {
|
||||
return convertMainResponse(mainResponse, request, builder);
|
||||
|
|
|
@ -26,11 +26,12 @@ import org.elasticsearch.common.Strings;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.tasks.TaskId;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
import static org.elasticsearch.rest.action.admin.cluster.RestListTasksAction.listTasksResponseListener;
|
||||
|
||||
|
@ -43,26 +44,29 @@ public class RestCancelTasksAction extends BaseRestHandler {
|
|||
super(settings);
|
||||
this.clusterService = clusterService;
|
||||
controller.registerHandler(POST, "/_tasks/_cancel", this);
|
||||
controller.registerHandler(POST, "/_tasks/{taskId}/_cancel", this);
|
||||
controller.registerHandler(POST, "/_tasks/{task_id}/_cancel", this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
String[] nodesIds = Strings.splitStringByCommaToArray(request.param("nodeId"));
|
||||
TaskId taskId = new TaskId(request.param("taskId"));
|
||||
String[] actions = Strings.splitStringByCommaToArray(request.param("actions"));
|
||||
TaskId parentTaskId = new TaskId(request.param("parent_task_id"));
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
final String[] nodesIds = Strings.splitStringByCommaToArray(request.param("nodes"));
|
||||
final TaskId taskId = new TaskId(request.param("task_id"));
|
||||
final String[] actions = Strings.splitStringByCommaToArray(request.param("actions"));
|
||||
final TaskId parentTaskId = new TaskId(request.param("parent_task_id"));
|
||||
final String groupBy = request.param("group_by", "nodes");
|
||||
|
||||
CancelTasksRequest cancelTasksRequest = new CancelTasksRequest();
|
||||
cancelTasksRequest.setTaskId(taskId);
|
||||
cancelTasksRequest.setNodesIds(nodesIds);
|
||||
cancelTasksRequest.setNodes(nodesIds);
|
||||
cancelTasksRequest.setActions(actions);
|
||||
cancelTasksRequest.setParentTaskId(parentTaskId);
|
||||
client.admin().cluster().cancelTasks(cancelTasksRequest, listTasksResponseListener(clusterService, channel));
|
||||
return channel ->
|
||||
client.admin().cluster().cancelTasks(cancelTasksRequest, listTasksResponseListener(clusterService, groupBy, channel));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canTripCircuitBreaker() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,8 +19,6 @@
|
|||
|
||||
package org.elasticsearch.rest.action.admin.cluster;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.elasticsearch.ExceptionsHelper;
|
||||
import org.elasticsearch.action.admin.cluster.allocation.ClusterAllocationExplainRequest;
|
||||
import org.elasticsearch.action.admin.cluster.allocation.ClusterAllocationExplainResponse;
|
||||
|
@ -35,7 +33,6 @@ import org.elasticsearch.common.xcontent.XContentFactory;
|
|||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -43,6 +40,8 @@ import org.elasticsearch.rest.RestStatus;
|
|||
import org.elasticsearch.rest.action.RestActions;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Class handling cluster allocation explanation at the REST level
|
||||
*/
|
||||
|
@ -56,7 +55,7 @@ public class RestClusterAllocationExplainAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
ClusterAllocationExplainRequest req;
|
||||
if (RestActions.hasBodyContent(request) == false) {
|
||||
// Empty request signals "explain the first unassigned shard you find"
|
||||
|
@ -67,16 +66,16 @@ public class RestClusterAllocationExplainAction extends BaseRestHandler {
|
|||
req = ClusterAllocationExplainRequest.parse(parser);
|
||||
} catch (IOException e) {
|
||||
logger.debug("failed to parse allocation explain request", e);
|
||||
channel.sendResponse(
|
||||
new BytesRestResponse(ExceptionsHelper.status(e), BytesRestResponse.TEXT_CONTENT_TYPE, BytesArray.EMPTY));
|
||||
return;
|
||||
return channel -> channel.sendResponse(
|
||||
new BytesRestResponse(ExceptionsHelper.status(e), BytesRestResponse.TEXT_CONTENT_TYPE, BytesArray.EMPTY));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
req.includeYesDecisions(request.paramAsBoolean("include_yes_decisions", false));
|
||||
req.includeDiskInfo(request.paramAsBoolean("include_disk_info", false));
|
||||
client.admin().cluster().allocationExplain(req, new RestBuilderListener<ClusterAllocationExplainResponse>(channel) {
|
||||
return channel ->
|
||||
client.admin().cluster().allocationExplain(req, new RestBuilderListener<ClusterAllocationExplainResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(ClusterAllocationExplainResponse response, XContentBuilder builder) throws Exception {
|
||||
response.getExplanation().toXContent(builder, ToXContent.EMPTY_PARAMS);
|
||||
|
@ -85,7 +84,9 @@ public class RestClusterAllocationExplainAction extends BaseRestHandler {
|
|||
});
|
||||
} catch (Exception e) {
|
||||
logger.error("failed to explain allocation", e);
|
||||
channel.sendResponse(new BytesRestResponse(ExceptionsHelper.status(e), BytesRestResponse.TEXT_CONTENT_TYPE, BytesArray.EMPTY));
|
||||
return channel ->
|
||||
channel.sendResponse(
|
||||
new BytesRestResponse(ExceptionsHelper.status(e), BytesRestResponse.TEXT_CONTENT_TYPE, BytesArray.EMPTY));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,7 +32,6 @@ import org.elasticsearch.common.xcontent.ToXContent;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -40,6 +39,7 @@ import org.elasticsearch.rest.RestStatus;
|
|||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
|
||||
public class RestClusterGetSettingsAction extends BaseRestHandler {
|
||||
|
||||
|
@ -56,13 +56,13 @@ public class RestClusterGetSettingsAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
ClusterStateRequest clusterStateRequest = Requests.clusterStateRequest()
|
||||
.routingTable(false)
|
||||
.nodes(false);
|
||||
final boolean renderDefaults = request.paramAsBoolean("include_defaults", false);
|
||||
clusterStateRequest.local(request.paramAsBoolean("local", clusterStateRequest.local()));
|
||||
client.admin().cluster().state(clusterStateRequest, new RestBuilderListener<ClusterStateResponse>(channel) {
|
||||
return channel -> client.admin().cluster().state(clusterStateRequest, new RestBuilderListener<ClusterStateResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(ClusterStateResponse response, XContentBuilder builder) throws Exception {
|
||||
return new BytesRestResponse(RestStatus.OK, renderResponse(response.getState(), renderDefaults, builder, request));
|
||||
|
@ -70,6 +70,11 @@ public class RestClusterGetSettingsAction extends BaseRestHandler {
|
|||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Set<String> responseParams() {
|
||||
return Settings.FORMAT_PARAMS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canTripCircuitBreaker() {
|
||||
return false;
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
package org.elasticsearch.rest.action.admin.cluster;
|
||||
|
||||
import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest;
|
||||
import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
|
||||
import org.elasticsearch.action.support.ActiveShardCount;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.cluster.health.ClusterHealthStatus;
|
||||
|
@ -29,12 +28,14 @@ import org.elasticsearch.common.Strings;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.RestStatusToXContentListener;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.elasticsearch.client.Requests.clusterHealthRequest;
|
||||
|
||||
|
@ -49,7 +50,7 @@ public class RestClusterHealthAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
ClusterHealthRequest clusterHealthRequest = clusterHealthRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
||||
clusterHealthRequest.local(request.paramAsBoolean("local", clusterHealthRequest.local()));
|
||||
clusterHealthRequest.masterNodeTimeout(request.paramAsTime("master_timeout", clusterHealthRequest.masterNodeTimeout()));
|
||||
|
@ -73,11 +74,19 @@ public class RestClusterHealthAction extends BaseRestHandler {
|
|||
if (request.param("wait_for_events") != null) {
|
||||
clusterHealthRequest.waitForEvents(Priority.valueOf(request.param("wait_for_events").toUpperCase(Locale.ROOT)));
|
||||
}
|
||||
client.admin().cluster().health(clusterHealthRequest, new RestStatusToXContentListener<ClusterHealthResponse>(channel));
|
||||
return channel -> client.admin().cluster().health(clusterHealthRequest, new RestStatusToXContentListener<>(channel));
|
||||
}
|
||||
|
||||
private static final Set<String> RESPONSE_PARAMS = Collections.singleton("level");
|
||||
|
||||
@Override
|
||||
protected Set<String> responseParams() {
|
||||
return RESPONSE_PARAMS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canTripCircuitBreaker() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -21,8 +21,8 @@ package org.elasticsearch.rest.action.admin.cluster;
|
|||
|
||||
import org.elasticsearch.action.admin.cluster.reroute.ClusterRerouteRequest;
|
||||
import org.elasticsearch.action.admin.cluster.reroute.ClusterRerouteResponse;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.client.Requests;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.cluster.ClusterState;
|
||||
import org.elasticsearch.cluster.routing.allocation.command.AllocationCommandRegistry;
|
||||
import org.elasticsearch.cluster.routing.allocation.command.AllocationCommands;
|
||||
|
@ -40,13 +40,15 @@ import org.elasticsearch.common.xcontent.XContentBuilder;
|
|||
import org.elasticsearch.common.xcontent.XContentHelper;
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
*/
|
||||
|
@ -74,29 +76,47 @@ public class RestClusterRerouteAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) throws Exception {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
ClusterRerouteRequest clusterRerouteRequest = createRequest(request, registry, parseFieldMatcher);
|
||||
client.admin().cluster().reroute(clusterRerouteRequest, new AcknowledgedRestListener<ClusterRerouteResponse>(channel) {
|
||||
@Override
|
||||
protected void addCustomFields(XContentBuilder builder, ClusterRerouteResponse response) throws IOException {
|
||||
builder.startObject("state");
|
||||
// by default, return everything but metadata
|
||||
if (request.param("metric") == null) {
|
||||
request.params().put("metric", DEFAULT_METRICS);
|
||||
|
||||
// by default, return everything but metadata
|
||||
final String metric = request.param("metric");
|
||||
if (metric == null) {
|
||||
request.params().put("metric", DEFAULT_METRICS);
|
||||
}
|
||||
|
||||
return channel ->
|
||||
client.admin().cluster().reroute(clusterRerouteRequest, new AcknowledgedRestListener<ClusterRerouteResponse>(channel) {
|
||||
@Override
|
||||
protected void addCustomFields(XContentBuilder builder, ClusterRerouteResponse response) throws IOException {
|
||||
builder.startObject("state");
|
||||
settingsFilter.addFilterSettingParams(request);
|
||||
response.getState().toXContent(builder, request);
|
||||
builder.endObject();
|
||||
if (clusterRerouteRequest.explain()) {
|
||||
assert response.getExplanations() != null;
|
||||
response.getExplanations().toXContent(builder, ToXContent.EMPTY_PARAMS);
|
||||
}
|
||||
}
|
||||
settingsFilter.addFilterSettingParams(request);
|
||||
response.getState().toXContent(builder, request);
|
||||
builder.endObject();
|
||||
if (clusterRerouteRequest.explain()) {
|
||||
assert response.getExplanations() != null;
|
||||
response.getExplanations().toXContent(builder, ToXContent.EMPTY_PARAMS);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static final Set<String> RESPONSE_PARAMS;
|
||||
|
||||
static {
|
||||
final Set<String> responseParams = new HashSet<>();
|
||||
responseParams.add("metric");
|
||||
responseParams.addAll(Settings.FORMAT_PARAMS);
|
||||
RESPONSE_PARAMS = Collections.unmodifiableSet(responseParams);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Set<String> responseParams() {
|
||||
return RESPONSE_PARAMS;
|
||||
}
|
||||
|
||||
public static ClusterRerouteRequest createRequest(RestRequest request, AllocationCommandRegistry registry,
|
||||
ParseFieldMatcher parseFieldMatcher) throws IOException {
|
||||
ParseFieldMatcher parseFieldMatcher) throws IOException {
|
||||
ClusterRerouteRequest clusterRerouteRequest = Requests.clusterRerouteRequest();
|
||||
clusterRerouteRequest.dryRun(request.paramAsBoolean("dry_run", clusterRerouteRequest.dryRun()));
|
||||
clusterRerouteRequest.explain(request.paramAsBoolean("explain", clusterRerouteRequest.explain()));
|
||||
|
@ -125,4 +145,5 @@ public class RestClusterRerouteAction extends BaseRestHandler {
|
|||
return parseFieldMatcher;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -20,24 +20,22 @@
|
|||
package org.elasticsearch.rest.action.admin.cluster;
|
||||
|
||||
import org.elasticsearch.action.admin.cluster.shards.ClusterSearchShardsRequest;
|
||||
import org.elasticsearch.action.admin.cluster.shards.ClusterSearchShardsResponse;
|
||||
import org.elasticsearch.action.support.IndicesOptions;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.client.Requests;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.common.Strings;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.RestToXContentListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class RestClusterSearchShardsAction extends BaseRestHandler {
|
||||
|
||||
@Inject
|
||||
|
@ -52,7 +50,7 @@ public class RestClusterSearchShardsAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
String[] indices = Strings.splitStringByCommaToArray(request.param("index"));
|
||||
final ClusterSearchShardsRequest clusterSearchShardsRequest = Requests.clusterSearchShardsRequest(indices);
|
||||
clusterSearchShardsRequest.local(request.paramAsBoolean("local", clusterSearchShardsRequest.local()));
|
||||
|
@ -62,6 +60,6 @@ public class RestClusterSearchShardsAction extends BaseRestHandler {
|
|||
clusterSearchShardsRequest.preference(request.param("preference"));
|
||||
clusterSearchShardsRequest.indicesOptions(IndicesOptions.fromRequest(request, clusterSearchShardsRequest.indicesOptions()));
|
||||
|
||||
client.admin().cluster().searchShards(clusterSearchShardsRequest, new RestToXContentListener<ClusterSearchShardsResponse>(channel));
|
||||
return channel -> client.admin().cluster().searchShards(clusterSearchShardsRequest, new RestToXContentListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,8 +22,8 @@ package org.elasticsearch.rest.action.admin.cluster;
|
|||
import org.elasticsearch.action.admin.cluster.state.ClusterStateRequest;
|
||||
import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse;
|
||||
import org.elasticsearch.action.support.IndicesOptions;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.client.Requests;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.cluster.ClusterState;
|
||||
import org.elasticsearch.common.Strings;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
|
@ -32,14 +32,17 @@ import org.elasticsearch.common.settings.SettingsFilter;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.RestStatus;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class RestClusterStateAction extends BaseRestHandler {
|
||||
|
||||
|
@ -56,7 +59,7 @@ public class RestClusterStateAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
final ClusterStateRequest clusterStateRequest = Requests.clusterStateRequest();
|
||||
clusterStateRequest.indicesOptions(IndicesOptions.fromRequest(request, clusterStateRequest.indicesOptions()));
|
||||
clusterStateRequest.local(request.paramAsBoolean("local", clusterStateRequest.local()));
|
||||
|
@ -84,7 +87,7 @@ public class RestClusterStateAction extends BaseRestHandler {
|
|||
}
|
||||
settingsFilter.addFilterSettingParams(request);
|
||||
|
||||
client.admin().cluster().state(clusterStateRequest, new RestBuilderListener<ClusterStateResponse>(channel) {
|
||||
return channel -> client.admin().cluster().state(clusterStateRequest, new RestBuilderListener<ClusterStateResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(ClusterStateResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
|
@ -96,6 +99,20 @@ public class RestClusterStateAction extends BaseRestHandler {
|
|||
});
|
||||
}
|
||||
|
||||
private static final Set<String> RESPONSE_PARAMS;
|
||||
|
||||
static {
|
||||
final Set<String> responseParams = new HashSet<>();
|
||||
responseParams.add("metric");
|
||||
responseParams.addAll(Settings.FORMAT_PARAMS);
|
||||
RESPONSE_PARAMS = Collections.unmodifiableSet(responseParams);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Set<String> responseParams() {
|
||||
return RESPONSE_PARAMS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canTripCircuitBreaker() {
|
||||
return false;
|
||||
|
|
|
@ -24,11 +24,12 @@ import org.elasticsearch.client.node.NodeClient;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.RestActions.NodesResponseRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
@ -42,10 +43,10 @@ public class RestClusterStatsAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
ClusterStatsRequest clusterStatsRequest = new ClusterStatsRequest().nodesIds(request.paramAsStringArray("nodeId", null));
|
||||
clusterStatsRequest.timeout(request.param("timeout"));
|
||||
client.admin().cluster().clusterStats(clusterStatsRequest, new NodesResponseRestListener<>(channel));
|
||||
return channel -> client.admin().cluster().clusterStats(clusterStatsRequest, new NodesResponseRestListener<>(channel));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -21,21 +21,21 @@ package org.elasticsearch.rest.action.admin.cluster;
|
|||
|
||||
import org.elasticsearch.action.admin.cluster.settings.ClusterUpdateSettingsRequest;
|
||||
import org.elasticsearch.action.admin.cluster.settings.ClusterUpdateSettingsResponse;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.client.Requests;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class RestClusterUpdateSettingsAction extends BaseRestHandler {
|
||||
|
||||
|
@ -46,7 +46,7 @@ public class RestClusterUpdateSettingsAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) throws Exception {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
final ClusterUpdateSettingsRequest clusterUpdateSettingsRequest = Requests.clusterUpdateSettingsRequest();
|
||||
clusterUpdateSettingsRequest.timeout(request.paramAsTime("timeout", clusterUpdateSettingsRequest.timeout()));
|
||||
clusterUpdateSettingsRequest.masterNodeTimeout(
|
||||
|
@ -62,7 +62,7 @@ public class RestClusterUpdateSettingsAction extends BaseRestHandler {
|
|||
clusterUpdateSettingsRequest.persistentSettings((Map) source.get("persistent"));
|
||||
}
|
||||
|
||||
client.admin().cluster().updateSettings(clusterUpdateSettingsRequest,
|
||||
return channel -> client.admin().cluster().updateSettings(clusterUpdateSettingsRequest,
|
||||
new AcknowledgedRestListener<ClusterUpdateSettingsResponse>(channel) {
|
||||
@Override
|
||||
protected void addCustomFields(XContentBuilder builder, ClusterUpdateSettingsResponse response) throws IOException {
|
||||
|
@ -77,6 +77,11 @@ public class RestClusterUpdateSettingsAction extends BaseRestHandler {
|
|||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Set<String> responseParams() {
|
||||
return Settings.FORMAT_PARAMS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canTripCircuitBreaker() {
|
||||
return false;
|
||||
|
|
|
@ -20,16 +20,16 @@
|
|||
package org.elasticsearch.rest.action.admin.cluster;
|
||||
|
||||
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotRequest;
|
||||
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotResponse;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.RestToXContentListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.client.Requests.createSnapshotRequest;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.PUT;
|
||||
|
@ -47,11 +47,11 @@ public class RestCreateSnapshotAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
CreateSnapshotRequest createSnapshotRequest = createSnapshotRequest(request.param("repository"), request.param("snapshot"));
|
||||
createSnapshotRequest.source(request.content().utf8ToString());
|
||||
createSnapshotRequest.masterNodeTimeout(request.paramAsTime("master_timeout", createSnapshotRequest.masterNodeTimeout()));
|
||||
createSnapshotRequest.waitForCompletion(request.paramAsBoolean("wait_for_completion", false));
|
||||
client.admin().cluster().createSnapshot(createSnapshotRequest, new RestToXContentListener<CreateSnapshotResponse>(channel));
|
||||
return channel -> client.admin().cluster().createSnapshot(createSnapshotRequest, new RestToXContentListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,16 +20,16 @@
|
|||
package org.elasticsearch.rest.action.admin.cluster;
|
||||
|
||||
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryRequest;
|
||||
import org.elasticsearch.action.admin.cluster.repositories.delete.DeleteRepositoryResponse;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.client.Requests.deleteRepositoryRequest;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.DELETE;
|
||||
|
||||
|
@ -45,11 +45,11 @@ public class RestDeleteRepositoryAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
DeleteRepositoryRequest deleteRepositoryRequest = deleteRepositoryRequest(request.param("repository"));
|
||||
deleteRepositoryRequest.masterNodeTimeout(request.paramAsTime("master_timeout", deleteRepositoryRequest.masterNodeTimeout()));
|
||||
deleteRepositoryRequest.timeout(request.paramAsTime("timeout", deleteRepositoryRequest.timeout()));
|
||||
deleteRepositoryRequest.masterNodeTimeout(request.paramAsTime("master_timeout", deleteRepositoryRequest.masterNodeTimeout()));
|
||||
client.admin().cluster().deleteRepository(deleteRepositoryRequest, new AcknowledgedRestListener<DeleteRepositoryResponse>(channel));
|
||||
return channel -> client.admin().cluster().deleteRepository(deleteRepositoryRequest, new AcknowledgedRestListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,16 +20,16 @@
|
|||
package org.elasticsearch.rest.action.admin.cluster;
|
||||
|
||||
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequest;
|
||||
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotResponse;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.client.Requests.deleteSnapshotRequest;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.DELETE;
|
||||
|
||||
|
@ -45,9 +45,9 @@ public class RestDeleteSnapshotAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
DeleteSnapshotRequest deleteSnapshotRequest = deleteSnapshotRequest(request.param("repository"), request.param("snapshot"));
|
||||
deleteSnapshotRequest.masterNodeTimeout(request.paramAsTime("master_timeout", deleteSnapshotRequest.masterNodeTimeout()));
|
||||
client.admin().cluster().deleteSnapshot(deleteSnapshotRequest, new AcknowledgedRestListener<DeleteSnapshotResponse>(channel));
|
||||
return channel -> client.admin().cluster().deleteSnapshot(deleteSnapshotRequest, new AcknowledgedRestListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,11 +23,12 @@ import org.elasticsearch.client.node.NodeClient;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.DELETE;
|
||||
|
||||
public class RestDeleteStoredScriptAction extends BaseRestHandler {
|
||||
|
@ -49,9 +50,9 @@ public class RestDeleteStoredScriptAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, NodeClient client) throws IOException {
|
||||
DeleteStoredScriptRequest deleteStoredScriptRequest = new DeleteStoredScriptRequest(getScriptLang(request), request.param("id"));
|
||||
client.admin().cluster().deleteStoredScript(deleteStoredScriptRequest, new AcknowledgedRestListener<>(channel));
|
||||
return channel -> client.admin().cluster().deleteStoredScript(deleteStoredScriptRequest, new AcknowledgedRestListener<>(channel));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -31,12 +31,14 @@ import org.elasticsearch.common.settings.SettingsFilter;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.elasticsearch.client.Requests.getRepositoryRequest;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
|
@ -57,23 +59,30 @@ public class RestGetRepositoriesAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
final String[] repositories = request.paramAsStringArray("repository", Strings.EMPTY_ARRAY);
|
||||
GetRepositoriesRequest getRepositoriesRequest = getRepositoryRequest(repositories);
|
||||
getRepositoriesRequest.masterNodeTimeout(request.paramAsTime("master_timeout", getRepositoriesRequest.masterNodeTimeout()));
|
||||
getRepositoriesRequest.local(request.paramAsBoolean("local", getRepositoriesRequest.local()));
|
||||
settingsFilter.addFilterSettingParams(request);
|
||||
client.admin().cluster().getRepositories(getRepositoriesRequest, new RestBuilderListener<GetRepositoriesResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(GetRepositoriesResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
for (RepositoryMetaData repositoryMetaData : response.repositories()) {
|
||||
RepositoriesMetaData.toXContent(repositoryMetaData, builder, request);
|
||||
}
|
||||
builder.endObject();
|
||||
return channel ->
|
||||
client.admin().cluster().getRepositories(getRepositoriesRequest, new RestBuilderListener<GetRepositoriesResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(GetRepositoriesResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
for (RepositoryMetaData repositoryMetaData : response.repositories()) {
|
||||
RepositoriesMetaData.toXContent(repositoryMetaData, builder, request);
|
||||
}
|
||||
builder.endObject();
|
||||
|
||||
return new BytesRestResponse(OK, builder);
|
||||
}
|
||||
return new BytesRestResponse(OK, builder);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Set<String> responseParams() {
|
||||
return Settings.FORMAT_PARAMS;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -20,17 +20,17 @@
|
|||
package org.elasticsearch.rest.action.admin.cluster;
|
||||
|
||||
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsRequest;
|
||||
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsResponse;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.common.Strings;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.RestToXContentListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.client.Requests.getSnapshotsRequest;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
|
||||
|
@ -47,7 +47,7 @@ public class RestGetSnapshotsAction extends BaseRestHandler {
|
|||
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
String repository = request.param("repository");
|
||||
String[] snapshots = request.paramAsStringArray("snapshot", Strings.EMPTY_ARRAY);
|
||||
|
||||
|
@ -55,6 +55,6 @@ public class RestGetSnapshotsAction extends BaseRestHandler {
|
|||
getSnapshotsRequest.ignoreUnavailable(request.paramAsBoolean("ignore_unavailable", getSnapshotsRequest.ignoreUnavailable()));
|
||||
|
||||
getSnapshotsRequest.masterNodeTimeout(request.paramAsTime("master_timeout", getSnapshotsRequest.masterNodeTimeout()));
|
||||
client.admin().cluster().getSnapshots(getSnapshotsRequest, new RestToXContentListener<GetSnapshotsResponse>(channel));
|
||||
return channel -> client.admin().cluster().getSnapshots(getSnapshotsRequest, new RestToXContentListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,13 +26,14 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.RestStatus;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
|
||||
public class RestGetStoredScriptAction extends BaseRestHandler {
|
||||
|
@ -58,9 +59,9 @@ public class RestGetStoredScriptAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, NodeClient client) throws IOException {
|
||||
final GetStoredScriptRequest getRequest = new GetStoredScriptRequest(getScriptLang(request), request.param("id"));
|
||||
client.admin().cluster().getStoredScript(getRequest, new RestBuilderListener<GetStoredScriptResponse>(channel) {
|
||||
return channel -> client.admin().cluster().getStoredScript(getRequest, new RestBuilderListener<GetStoredScriptResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(GetStoredScriptResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
|
|
|
@ -25,12 +25,13 @@ import org.elasticsearch.common.inject.Inject;
|
|||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.unit.TimeValue;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.RestToXContentListener;
|
||||
import org.elasticsearch.tasks.TaskId;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
|
||||
public class RestGetTaskAction extends BaseRestHandler {
|
||||
|
@ -41,7 +42,7 @@ public class RestGetTaskAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
TaskId taskId = new TaskId(request.param("taskId"));
|
||||
boolean waitForCompletion = request.paramAsBoolean("wait_for_completion", false);
|
||||
TimeValue timeout = request.paramAsTime("timeout", null);
|
||||
|
@ -50,6 +51,6 @@ public class RestGetTaskAction extends BaseRestHandler {
|
|||
getTaskRequest.setTaskId(taskId);
|
||||
getTaskRequest.setWaitForCompletion(waitForCompletion);
|
||||
getTaskRequest.setTimeout(timeout);
|
||||
client.admin().cluster().getTask(getTaskRequest, new RestToXContentListener<>(channel));
|
||||
return channel -> client.admin().cluster().getTask(getTaskRequest, new RestToXContentListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,10 +40,13 @@ import org.elasticsearch.rest.action.RestBuilderListener;
|
|||
import org.elasticsearch.rest.action.RestToXContentListener;
|
||||
import org.elasticsearch.tasks.TaskId;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
|
||||
|
||||
public class RestListTasksAction extends BaseRestHandler {
|
||||
|
||||
private final ClusterService clusterService;
|
||||
|
||||
@Inject
|
||||
|
@ -53,16 +56,23 @@ public class RestListTasksAction extends BaseRestHandler {
|
|||
controller.registerHandler(GET, "/_tasks", this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
final ListTasksRequest listTasksRequest = generateListTasksRequest(request);
|
||||
final String groupBy = request.param("group_by", "nodes");
|
||||
return channel -> client.admin().cluster().listTasks(listTasksRequest, listTasksResponseListener(clusterService, groupBy, channel));
|
||||
}
|
||||
|
||||
public static ListTasksRequest generateListTasksRequest(RestRequest request) {
|
||||
boolean detailed = request.paramAsBoolean("detailed", false);
|
||||
String[] nodesIds = Strings.splitStringByCommaToArray(request.param("node_id"));
|
||||
String[] nodes = Strings.splitStringByCommaToArray(request.param("nodes"));
|
||||
String[] actions = Strings.splitStringByCommaToArray(request.param("actions"));
|
||||
TaskId parentTaskId = new TaskId(request.param("parent_task_id"));
|
||||
boolean waitForCompletion = request.paramAsBoolean("wait_for_completion", false);
|
||||
TimeValue timeout = request.paramAsTime("timeout", null);
|
||||
|
||||
ListTasksRequest listTasksRequest = new ListTasksRequest();
|
||||
listTasksRequest.setNodesIds(nodesIds);
|
||||
listTasksRequest.setNodes(nodes);
|
||||
listTasksRequest.setDetailed(detailed);
|
||||
listTasksRequest.setActions(actions);
|
||||
listTasksRequest.setParentTaskId(parentTaskId);
|
||||
|
@ -71,17 +81,13 @@ public class RestListTasksAction extends BaseRestHandler {
|
|||
return listTasksRequest;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
client.admin().cluster().listTasks(generateListTasksRequest(request), listTasksResponseListener(clusterService, channel));
|
||||
}
|
||||
|
||||
/**
|
||||
* Standard listener for extensions of {@link ListTasksResponse} that supports {@code group_by=nodes}.
|
||||
*/
|
||||
public static <T extends ListTasksResponse> ActionListener<T> listTasksResponseListener(ClusterService clusterService,
|
||||
RestChannel channel) {
|
||||
String groupBy = channel.request().param("group_by", "nodes");
|
||||
public static <T extends ListTasksResponse> ActionListener<T> listTasksResponseListener(
|
||||
ClusterService clusterService,
|
||||
String groupBy,
|
||||
final RestChannel channel) {
|
||||
if ("nodes".equals(groupBy)) {
|
||||
return new RestBuilderListener<T>(channel) {
|
||||
@Override
|
||||
|
|
|
@ -29,13 +29,14 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.unit.TimeValue;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.RestStatus;
|
||||
import org.elasticsearch.rest.action.RestResponseListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
|
||||
/**
|
||||
*/
|
||||
|
@ -56,7 +57,7 @@ public class RestNodesHotThreadsAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
String[] nodesIds = Strings.splitStringByCommaToArray(request.param("nodeId"));
|
||||
NodesHotThreadsRequest nodesHotThreadsRequest = new NodesHotThreadsRequest(nodesIds);
|
||||
nodesHotThreadsRequest.threads(request.paramAsInt("threads", nodesHotThreadsRequest.threads()));
|
||||
|
@ -65,18 +66,20 @@ public class RestNodesHotThreadsAction extends BaseRestHandler {
|
|||
nodesHotThreadsRequest.interval(TimeValue.parseTimeValue(request.param("interval"), nodesHotThreadsRequest.interval(), "interval"));
|
||||
nodesHotThreadsRequest.snapshots(request.paramAsInt("snapshots", nodesHotThreadsRequest.snapshots()));
|
||||
nodesHotThreadsRequest.timeout(request.param("timeout"));
|
||||
client.admin().cluster().nodesHotThreads(nodesHotThreadsRequest, new RestResponseListener<NodesHotThreadsResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(NodesHotThreadsResponse response) throws Exception {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (NodeHotThreads node : response.getNodes()) {
|
||||
sb.append("::: ").append(node.getNode().toString()).append("\n");
|
||||
Strings.spaceify(3, node.getHotThreads(), sb);
|
||||
sb.append('\n');
|
||||
}
|
||||
return new BytesRestResponse(RestStatus.OK, sb.toString());
|
||||
}
|
||||
});
|
||||
return channel -> client.admin().cluster().nodesHotThreads(
|
||||
nodesHotThreadsRequest,
|
||||
new RestResponseListener<NodesHotThreadsResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(NodesHotThreadsResponse response) throws Exception {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (NodeHotThreads node : response.getNodes()) {
|
||||
sb.append("::: ").append(node.getNode().toString()).append("\n");
|
||||
Strings.spaceify(3, node.getHotThreads(), sb);
|
||||
sb.append('\n');
|
||||
}
|
||||
return new BytesRestResponse(RestStatus.OK, sb.toString());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -27,11 +27,11 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.settings.SettingsFilter;
|
||||
import org.elasticsearch.common.util.set.Sets;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.RestActions.NodesResponseRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
|
@ -65,7 +65,7 @@ public class RestNodesInfoAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
String[] nodeIds;
|
||||
Set<String> metrics;
|
||||
|
||||
|
@ -108,7 +108,12 @@ public class RestNodesInfoAction extends BaseRestHandler {
|
|||
|
||||
settingsFilter.addFilterSettingParams(request);
|
||||
|
||||
client.admin().cluster().nodesInfo(nodesInfoRequest, new NodesResponseRestListener<>(channel));
|
||||
return channel -> client.admin().cluster().nodesInfo(nodesInfoRequest, new NodesResponseRestListener<>(channel));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Set<String> responseParams() {
|
||||
return Settings.FORMAT_PARAMS;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -27,11 +27,11 @@ import org.elasticsearch.common.Strings;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.RestActions.NodesResponseRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
|
@ -53,7 +53,7 @@ public class RestNodesStatsAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
String[] nodesIds = Strings.splitStringByCommaToArray(request.param("nodeId"));
|
||||
Set<String> metrics = Strings.splitStringByCommaToSet(request.param("metric", "_all"));
|
||||
|
||||
|
@ -111,7 +111,7 @@ public class RestNodesStatsAction extends BaseRestHandler {
|
|||
nodesStatsRequest.indices().includeSegmentFileSizes(true);
|
||||
}
|
||||
|
||||
client.admin().cluster().nodesStats(nodesStatsRequest, new NodesResponseRestListener<>(channel));
|
||||
return channel -> client.admin().cluster().nodesStats(nodesStatsRequest, new NodesResponseRestListener<>(channel));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -24,11 +24,12 @@ import org.elasticsearch.client.node.NodeClient;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.RestToXContentListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class RestPendingClusterTasksAction extends BaseRestHandler {
|
||||
|
||||
@Inject
|
||||
|
@ -38,10 +39,10 @@ public class RestPendingClusterTasksAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
PendingClusterTasksRequest pendingClusterTasksRequest = new PendingClusterTasksRequest();
|
||||
pendingClusterTasksRequest.masterNodeTimeout(request.paramAsTime("master_timeout", pendingClusterTasksRequest.masterNodeTimeout()));
|
||||
pendingClusterTasksRequest.local(request.paramAsBoolean("local", pendingClusterTasksRequest.local()));
|
||||
client.admin().cluster().pendingClusterTasks(pendingClusterTasksRequest, new RestToXContentListener<>(channel));
|
||||
return channel -> client.admin().cluster().pendingClusterTasks(pendingClusterTasksRequest, new RestToXContentListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,16 +20,16 @@
|
|||
package org.elasticsearch.rest.action.admin.cluster;
|
||||
|
||||
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryRequest;
|
||||
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryResponse;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.client.Requests.putRepositoryRequest;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.PUT;
|
||||
|
@ -48,12 +48,12 @@ public class RestPutRepositoryAction extends BaseRestHandler {
|
|||
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
PutRepositoryRequest putRepositoryRequest = putRepositoryRequest(request.param("repository"));
|
||||
putRepositoryRequest.source(request.content().utf8ToString());
|
||||
putRepositoryRequest.verify(request.paramAsBoolean("verify", true));
|
||||
putRepositoryRequest.masterNodeTimeout(request.paramAsTime("master_timeout", putRepositoryRequest.masterNodeTimeout()));
|
||||
putRepositoryRequest.timeout(request.paramAsTime("timeout", putRepositoryRequest.timeout()));
|
||||
client.admin().cluster().putRepository(putRepositoryRequest, new AcknowledgedRestListener<PutRepositoryResponse>(channel));
|
||||
return channel -> client.admin().cluster().putRepository(putRepositoryRequest, new AcknowledgedRestListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,11 +23,12 @@ import org.elasticsearch.client.node.NodeClient;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.PUT;
|
||||
|
||||
|
@ -51,9 +52,9 @@ public class RestPutStoredScriptAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, NodeClient client) throws IOException {
|
||||
PutStoredScriptRequest putRequest = new PutStoredScriptRequest(getScriptLang(request), request.param("id"));
|
||||
putRequest.script(request.content());
|
||||
client.admin().cluster().putStoredScript(putRequest, new AcknowledgedRestListener<>(channel));
|
||||
return channel -> client.admin().cluster().putStoredScript(putRequest, new AcknowledgedRestListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,16 +20,16 @@
|
|||
package org.elasticsearch.rest.action.admin.cluster;
|
||||
|
||||
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotRequest;
|
||||
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotResponse;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.RestToXContentListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.client.Requests.restoreSnapshotRequest;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
|
||||
|
@ -45,11 +45,11 @@ public class RestRestoreSnapshotAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
RestoreSnapshotRequest restoreSnapshotRequest = restoreSnapshotRequest(request.param("repository"), request.param("snapshot"));
|
||||
restoreSnapshotRequest.masterNodeTimeout(request.paramAsTime("master_timeout", restoreSnapshotRequest.masterNodeTimeout()));
|
||||
restoreSnapshotRequest.waitForCompletion(request.paramAsBoolean("wait_for_completion", false));
|
||||
restoreSnapshotRequest.source(request.content().utf8ToString());
|
||||
client.admin().cluster().restoreSnapshot(restoreSnapshotRequest, new RestToXContentListener<RestoreSnapshotResponse>(channel));
|
||||
return channel -> client.admin().cluster().restoreSnapshot(restoreSnapshotRequest, new RestToXContentListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,11 +25,12 @@ import org.elasticsearch.common.Strings;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.RestToXContentListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.client.Requests.snapshotsStatusRequest;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
|
||||
|
@ -47,7 +48,7 @@ public class RestSnapshotsStatusAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
String repository = request.param("repository", "_all");
|
||||
String[] snapshots = request.paramAsStringArray("snapshot", Strings.EMPTY_ARRAY);
|
||||
if (snapshots.length == 1 && "_all".equalsIgnoreCase(snapshots[0])) {
|
||||
|
@ -57,6 +58,6 @@ public class RestSnapshotsStatusAction extends BaseRestHandler {
|
|||
snapshotsStatusRequest.ignoreUnavailable(request.paramAsBoolean("ignore_unavailable", snapshotsStatusRequest.ignoreUnavailable()));
|
||||
|
||||
snapshotsStatusRequest.masterNodeTimeout(request.paramAsTime("master_timeout", snapshotsStatusRequest.masterNodeTimeout()));
|
||||
client.admin().cluster().snapshotsStatus(snapshotsStatusRequest, new RestToXContentListener<>(channel));
|
||||
return channel -> client.admin().cluster().snapshotsStatus(snapshotsStatusRequest, new RestToXContentListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,11 +24,12 @@ import org.elasticsearch.client.node.NodeClient;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.RestToXContentListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.client.Requests.verifyRepositoryRequest;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
|
||||
|
@ -41,10 +42,10 @@ public class RestVerifyRepositoryAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
VerifyRepositoryRequest verifyRepositoryRequest = verifyRepositoryRequest(request.param("repository"));
|
||||
verifyRepositoryRequest.masterNodeTimeout(request.paramAsTime("master_timeout", verifyRepositoryRequest.masterNodeTimeout()));
|
||||
verifyRepositoryRequest.timeout(request.paramAsTime("timeout", verifyRepositoryRequest.timeout()));
|
||||
client.admin().cluster().verifyRepository(verifyRepositoryRequest, new RestToXContentListener<>(channel));
|
||||
return channel -> client.admin().cluster().verifyRepository(verifyRepositoryRequest, new RestToXContentListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,16 +31,15 @@ import org.elasticsearch.common.inject.Inject;
|
|||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.HEAD;
|
||||
import static org.elasticsearch.rest.RestStatus.NOT_FOUND;
|
||||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class RestAliasesExistAction extends BaseRestHandler {
|
||||
|
||||
@Inject
|
||||
|
@ -52,7 +51,7 @@ public class RestAliasesExistAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
String[] aliases = request.paramAsStringArray("name", Strings.EMPTY_ARRAY);
|
||||
final String[] indices = Strings.splitStringByCommaToArray(request.param("index"));
|
||||
GetAliasesRequest getAliasesRequest = new GetAliasesRequest(aliases);
|
||||
|
@ -60,7 +59,7 @@ public class RestAliasesExistAction extends BaseRestHandler {
|
|||
getAliasesRequest.indicesOptions(IndicesOptions.fromRequest(request, getAliasesRequest.indicesOptions()));
|
||||
getAliasesRequest.local(request.paramAsBoolean("local", getAliasesRequest.local()));
|
||||
|
||||
client.admin().indices().aliasesExist(getAliasesRequest, new ActionListener<AliasesExistResponse>() {
|
||||
return channel -> client.admin().indices().aliasesExist(getAliasesRequest, new ActionListener<AliasesExistResponse>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(AliasesExistResponse response) {
|
||||
|
@ -85,6 +84,7 @@ public class RestAliasesExistAction extends BaseRestHandler {
|
|||
logger.error("Failed to send failure response", inner);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,7 +30,6 @@ import org.elasticsearch.common.xcontent.XContentHelper;
|
|||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.common.xcontent.XContentType;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.RestActions;
|
||||
|
@ -66,7 +65,7 @@ public class RestAnalyzeAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
|
||||
String[] texts = request.paramAsStringArrayOrEmptyIfAll("text");
|
||||
|
||||
|
@ -99,7 +98,7 @@ public class RestAnalyzeAction extends BaseRestHandler {
|
|||
}
|
||||
}
|
||||
|
||||
client.admin().indices().analyze(analyzeRequest, new RestToXContentListener<>(channel));
|
||||
return channel -> client.admin().indices().analyze(analyzeRequest, new RestToXContentListener<>(channel));
|
||||
}
|
||||
|
||||
public static void buildFromContent(BytesReference content, AnalyzeRequest analyzeRequest, ParseFieldMatcher parseFieldMatcher) {
|
||||
|
|
|
@ -31,12 +31,12 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
|
@ -57,12 +57,13 @@ public class RestClearIndicesCacheAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
ClearIndicesCacheRequest clearIndicesCacheRequest = new ClearIndicesCacheRequest(
|
||||
Strings.splitStringByCommaToArray(request.param("index")));
|
||||
clearIndicesCacheRequest.indicesOptions(IndicesOptions.fromRequest(request, clearIndicesCacheRequest.indicesOptions()));
|
||||
fromRequest(request, clearIndicesCacheRequest, parseFieldMatcher);
|
||||
client.admin().indices().clearCache(clearIndicesCacheRequest, new RestBuilderListener<ClearIndicesCacheResponse>(channel) {
|
||||
return channel ->
|
||||
client.admin().indices().clearCache(clearIndicesCacheRequest, new RestBuilderListener<ClearIndicesCacheResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(ClearIndicesCacheResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
|
@ -85,6 +86,9 @@ public class RestClearIndicesCacheAction extends BaseRestHandler {
|
|||
if (parseFieldMatcher.match(entry.getKey(), Fields.QUERY)) {
|
||||
clearIndicesCacheRequest.queryCache(request.paramAsBoolean(entry.getKey(), clearIndicesCacheRequest.queryCache()));
|
||||
}
|
||||
if (parseFieldMatcher.match(entry.getKey(), Fields.REQUEST_CACHE)) {
|
||||
clearIndicesCacheRequest.requestCache(request.paramAsBoolean(entry.getKey(), clearIndicesCacheRequest.requestCache()));
|
||||
}
|
||||
if (parseFieldMatcher.match(entry.getKey(), Fields.FIELD_DATA)) {
|
||||
clearIndicesCacheRequest.fieldDataCache(request.paramAsBoolean(entry.getKey(), clearIndicesCacheRequest.fieldDataCache()));
|
||||
}
|
||||
|
@ -101,6 +105,7 @@ public class RestClearIndicesCacheAction extends BaseRestHandler {
|
|||
|
||||
public static class Fields {
|
||||
public static final ParseField QUERY = new ParseField("query", "filter", "filter_cache");
|
||||
public static final ParseField REQUEST_CACHE = new ParseField("request_cache");
|
||||
public static final ParseField FIELD_DATA = new ParseField("field_data", "fielddata");
|
||||
public static final ParseField RECYCLER = new ParseField("recycler");
|
||||
public static final ParseField FIELDS = new ParseField("fields");
|
||||
|
|
|
@ -20,21 +20,18 @@
|
|||
package org.elasticsearch.rest.action.admin.indices;
|
||||
|
||||
import org.elasticsearch.action.admin.indices.close.CloseIndexRequest;
|
||||
import org.elasticsearch.action.admin.indices.close.CloseIndexResponse;
|
||||
import org.elasticsearch.action.support.IndicesOptions;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.common.Strings;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
import java.io.IOException;
|
||||
|
||||
public class RestCloseIndexAction extends BaseRestHandler {
|
||||
|
||||
@Inject
|
||||
|
@ -45,11 +42,12 @@ public class RestCloseIndexAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
CloseIndexRequest closeIndexRequest = new CloseIndexRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
||||
closeIndexRequest.masterNodeTimeout(request.paramAsTime("master_timeout", closeIndexRequest.masterNodeTimeout()));
|
||||
closeIndexRequest.timeout(request.paramAsTime("timeout", closeIndexRequest.timeout()));
|
||||
closeIndexRequest.indicesOptions(IndicesOptions.fromRequest(request, closeIndexRequest.indicesOptions()));
|
||||
client.admin().indices().close(closeIndexRequest, new AcknowledgedRestListener<CloseIndexResponse>(channel));
|
||||
return channel -> client.admin().indices().close(closeIndexRequest, new AcknowledgedRestListener<>(channel));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -21,22 +21,18 @@ package org.elasticsearch.rest.action.admin.indices;
|
|||
|
||||
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
|
||||
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.action.support.ActiveShardCount;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class RestCreateIndexAction extends BaseRestHandler {
|
||||
|
||||
@Inject
|
||||
|
@ -47,7 +43,7 @@ public class RestCreateIndexAction extends BaseRestHandler {
|
|||
|
||||
@SuppressWarnings({"unchecked"})
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
CreateIndexRequest createIndexRequest = new CreateIndexRequest(request.param("index"));
|
||||
if (request.hasContent()) {
|
||||
createIndexRequest.source(request.content());
|
||||
|
@ -56,7 +52,7 @@ public class RestCreateIndexAction extends BaseRestHandler {
|
|||
createIndexRequest.timeout(request.paramAsTime("timeout", createIndexRequest.timeout()));
|
||||
createIndexRequest.masterNodeTimeout(request.paramAsTime("master_timeout", createIndexRequest.masterNodeTimeout()));
|
||||
createIndexRequest.waitForActiveShards(ActiveShardCount.parseString(request.param("wait_for_active_shards")));
|
||||
client.admin().indices().create(createIndexRequest, new AcknowledgedRestListener<CreateIndexResponse>(channel) {
|
||||
return channel -> client.admin().indices().create(createIndexRequest, new AcknowledgedRestListener<CreateIndexResponse>(channel) {
|
||||
@Override
|
||||
public void addCustomFields(XContentBuilder builder, CreateIndexResponse response) throws IOException {
|
||||
response.addCustomFields(builder);
|
||||
|
|
|
@ -20,21 +20,18 @@
|
|||
package org.elasticsearch.rest.action.admin.indices;
|
||||
|
||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
|
||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;
|
||||
import org.elasticsearch.action.support.IndicesOptions;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.common.Strings;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
import java.io.IOException;
|
||||
|
||||
public class RestDeleteIndexAction extends BaseRestHandler {
|
||||
|
||||
@Inject
|
||||
|
@ -45,11 +42,11 @@ public class RestDeleteIndexAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
||||
deleteIndexRequest.timeout(request.paramAsTime("timeout", deleteIndexRequest.timeout()));
|
||||
deleteIndexRequest.masterNodeTimeout(request.paramAsTime("master_timeout", deleteIndexRequest.masterNodeTimeout()));
|
||||
deleteIndexRequest.indicesOptions(IndicesOptions.fromRequest(request, deleteIndexRequest.indicesOptions()));
|
||||
client.admin().indices().delete(deleteIndexRequest, new AcknowledgedRestListener<DeleteIndexResponse>(channel));
|
||||
return channel -> client.admin().indices().delete(deleteIndexRequest, new AcknowledgedRestListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,11 +23,12 @@ import org.elasticsearch.client.node.NodeClient;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class RestDeleteIndexTemplateAction extends BaseRestHandler {
|
||||
|
||||
@Inject
|
||||
|
@ -37,9 +38,9 @@ public class RestDeleteIndexTemplateAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
DeleteIndexTemplateRequest deleteIndexTemplateRequest = new DeleteIndexTemplateRequest(request.param("name"));
|
||||
deleteIndexTemplateRequest.masterNodeTimeout(request.paramAsTime("master_timeout", deleteIndexTemplateRequest.masterNodeTimeout()));
|
||||
client.admin().indices().deleteTemplate(deleteIndexTemplateRequest, new AcknowledgedRestListener<>(channel));
|
||||
return channel -> client.admin().indices().deleteTemplate(deleteIndexTemplateRequest, new AcknowledgedRestListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,12 +29,13 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
|
@ -56,12 +57,12 @@ public class RestFlushAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
FlushRequest flushRequest = new FlushRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
||||
flushRequest.indicesOptions(IndicesOptions.fromRequest(request, flushRequest.indicesOptions()));
|
||||
flushRequest.force(request.paramAsBoolean("force", flushRequest.force()));
|
||||
flushRequest.waitIfOngoing(request.paramAsBoolean("wait_if_ongoing", flushRequest.waitIfOngoing()));
|
||||
client.admin().indices().flush(flushRequest, new RestBuilderListener<FlushResponse>(channel) {
|
||||
return channel -> client.admin().indices().flush(flushRequest, new RestBuilderListener<FlushResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(FlushResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
|
|
|
@ -29,12 +29,13 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
import static org.elasticsearch.rest.action.RestActions.buildBroadcastShardsHeader;
|
||||
|
@ -52,13 +53,13 @@ public class RestForceMergeAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
ForceMergeRequest mergeRequest = new ForceMergeRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
||||
mergeRequest.indicesOptions(IndicesOptions.fromRequest(request, mergeRequest.indicesOptions()));
|
||||
mergeRequest.maxNumSegments(request.paramAsInt("max_num_segments", mergeRequest.maxNumSegments()));
|
||||
mergeRequest.onlyExpungeDeletes(request.paramAsBoolean("only_expunge_deletes", mergeRequest.onlyExpungeDeletes()));
|
||||
mergeRequest.flush(request.paramAsBoolean("flush", mergeRequest.flush()));
|
||||
client.admin().indices().forceMerge(mergeRequest, new RestBuilderListener<ForceMergeResponse>(channel) {
|
||||
return channel -> client.admin().indices().forceMerge(mergeRequest, new RestBuilderListener<ForceMergeResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(ForceMergeResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
|
|
|
@ -32,13 +32,13 @@ import org.elasticsearch.common.xcontent.ToXContent;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.RestStatus;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
|
@ -57,7 +57,7 @@ public class RestGetAliasesAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
final String[] aliases = request.paramAsStringArrayOrEmptyIfAll("name");
|
||||
final String[] indices = Strings.splitStringByCommaToArray(request.param("index"));
|
||||
final GetAliasesRequest getAliasesRequest = new GetAliasesRequest(aliases);
|
||||
|
@ -65,7 +65,7 @@ public class RestGetAliasesAction extends BaseRestHandler {
|
|||
getAliasesRequest.indicesOptions(IndicesOptions.fromRequest(request, getAliasesRequest.indicesOptions()));
|
||||
getAliasesRequest.local(request.paramAsBoolean("local", getAliasesRequest.local()));
|
||||
|
||||
client.admin().indices().getAliases(getAliasesRequest, new RestBuilderListener<GetAliasesResponse>(channel) {
|
||||
return channel -> client.admin().indices().getAliases(getAliasesRequest, new RestBuilderListener<GetAliasesResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(GetAliasesResponse response, XContentBuilder builder) throws Exception {
|
||||
// empty body, if indices were specified but no aliases were
|
||||
|
|
|
@ -30,13 +30,13 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.RestStatus;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
|
@ -56,7 +56,7 @@ public class RestGetFieldMappingAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
final String[] indices = Strings.splitStringByCommaToArray(request.param("index"));
|
||||
final String[] types = request.paramAsStringArrayOrEmptyIfAll("type");
|
||||
final String[] fields = Strings.splitStringByCommaToArray(request.param("fields"));
|
||||
|
@ -64,26 +64,27 @@ public class RestGetFieldMappingAction extends BaseRestHandler {
|
|||
getMappingsRequest.indices(indices).types(types).fields(fields).includeDefaults(request.paramAsBoolean("include_defaults", false));
|
||||
getMappingsRequest.indicesOptions(IndicesOptions.fromRequest(request, getMappingsRequest.indicesOptions()));
|
||||
getMappingsRequest.local(request.paramAsBoolean("local", getMappingsRequest.local()));
|
||||
client.admin().indices().getFieldMappings(getMappingsRequest, new RestBuilderListener<GetFieldMappingsResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(GetFieldMappingsResponse response, XContentBuilder builder) throws Exception {
|
||||
Map<String, Map<String, Map<String, FieldMappingMetaData>>> mappingsByIndex = response.mappings();
|
||||
return channel ->
|
||||
client.admin().indices().getFieldMappings(getMappingsRequest, new RestBuilderListener<GetFieldMappingsResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(GetFieldMappingsResponse response, XContentBuilder builder) throws Exception {
|
||||
Map<String, Map<String, Map<String, FieldMappingMetaData>>> mappingsByIndex = response.mappings();
|
||||
|
||||
boolean isPossibleSingleFieldRequest = indices.length == 1 && types.length == 1 && fields.length == 1;
|
||||
if (isPossibleSingleFieldRequest && isFieldMappingMissingField(mappingsByIndex)) {
|
||||
return new BytesRestResponse(OK, builder.startObject().endObject());
|
||||
}
|
||||
boolean isPossibleSingleFieldRequest = indices.length == 1 && types.length == 1 && fields.length == 1;
|
||||
if (isPossibleSingleFieldRequest && isFieldMappingMissingField(mappingsByIndex)) {
|
||||
return new BytesRestResponse(OK, builder.startObject().endObject());
|
||||
}
|
||||
|
||||
RestStatus status = OK;
|
||||
if (mappingsByIndex.isEmpty() && fields.length > 0) {
|
||||
status = NOT_FOUND;
|
||||
}
|
||||
builder.startObject();
|
||||
response.toXContent(builder, request);
|
||||
builder.endObject();
|
||||
return new BytesRestResponse(status, builder);
|
||||
}
|
||||
});
|
||||
RestStatus status = OK;
|
||||
if (mappingsByIndex.isEmpty() && fields.length > 0) {
|
||||
status = NOT_FOUND;
|
||||
}
|
||||
builder.startObject();
|
||||
response.toXContent(builder, request);
|
||||
builder.endObject();
|
||||
return new BytesRestResponse(status, builder);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.elasticsearch.rest.action.admin.indices;
|
||||
|
||||
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequest;
|
||||
|
@ -25,12 +26,14 @@ import org.elasticsearch.common.Strings;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestStatus;
|
||||
import org.elasticsearch.rest.action.RestToXContentListener;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
import static org.elasticsearch.rest.RestStatus.NOT_FOUND;
|
||||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
|
@ -46,7 +49,7 @@ public class RestGetIndexTemplateAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
final String[] names = Strings.splitStringByCommaToArray(request.param("name"));
|
||||
|
||||
GetIndexTemplatesRequest getIndexTemplatesRequest = new GetIndexTemplatesRequest(names);
|
||||
|
@ -55,13 +58,22 @@ public class RestGetIndexTemplateAction extends BaseRestHandler {
|
|||
|
||||
final boolean implicitAll = getIndexTemplatesRequest.names().length == 0;
|
||||
|
||||
client.admin().indices().getTemplates(getIndexTemplatesRequest, new RestToXContentListener<GetIndexTemplatesResponse>(channel) {
|
||||
@Override
|
||||
protected RestStatus getStatus(GetIndexTemplatesResponse response) {
|
||||
boolean templateExists = false == response.getIndexTemplates().isEmpty();
|
||||
return channel ->
|
||||
client.admin()
|
||||
.indices()
|
||||
.getTemplates(getIndexTemplatesRequest, new RestToXContentListener<GetIndexTemplatesResponse>(channel) {
|
||||
@Override
|
||||
protected RestStatus getStatus(GetIndexTemplatesResponse response) {
|
||||
boolean templateExists = false == response.getIndexTemplates().isEmpty();
|
||||
|
||||
return (templateExists || implicitAll) ? OK : NOT_FOUND;
|
||||
}
|
||||
});
|
||||
return (templateExists || implicitAll) ? OK : NOT_FOUND;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Set<String> responseParams() {
|
||||
return Settings.FORMAT_PARAMS;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -36,7 +36,6 @@ import org.elasticsearch.common.xcontent.ToXContent.Params;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -44,6 +43,7 @@ import org.elasticsearch.rest.action.RestBuilderListener;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
|
@ -64,7 +64,7 @@ public class RestGetIndicesAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
String[] indices = Strings.splitStringByCommaToArray(request.param("index"));
|
||||
String[] featureParams = request.paramAsStringArray("type", null);
|
||||
// Work out if the indices is a list of features
|
||||
|
@ -81,7 +81,8 @@ public class RestGetIndicesAction extends BaseRestHandler {
|
|||
getIndexRequest.indicesOptions(IndicesOptions.fromRequest(request, getIndexRequest.indicesOptions()));
|
||||
getIndexRequest.local(request.paramAsBoolean("local", getIndexRequest.local()));
|
||||
getIndexRequest.humanReadable(request.paramAsBoolean("human", false));
|
||||
client.admin().indices().getIndex(getIndexRequest, new RestBuilderListener<GetIndexResponse>(channel) {
|
||||
final boolean defaults = request.paramAsBoolean("include_defaults", false);
|
||||
return channel -> client.admin().indices().getIndex(getIndexRequest, new RestBuilderListener<GetIndexResponse>(channel) {
|
||||
|
||||
@Override
|
||||
public RestResponse buildResponse(GetIndexResponse response, XContentBuilder builder) throws Exception {
|
||||
|
@ -100,7 +101,7 @@ public class RestGetIndicesAction extends BaseRestHandler {
|
|||
writeMappings(response.mappings().get(index), builder, request);
|
||||
break;
|
||||
case SETTINGS:
|
||||
writeSettings(response.settings().get(index), builder, request);
|
||||
writeSettings(response.settings().get(index), builder, request, defaults);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalStateException("feature [" + feature + "] is not valid");
|
||||
|
@ -136,15 +137,15 @@ public class RestGetIndicesAction extends BaseRestHandler {
|
|||
builder.endObject();
|
||||
}
|
||||
|
||||
private void writeSettings(Settings settings, XContentBuilder builder, Params params) throws IOException {
|
||||
final boolean renderDefaults = request.paramAsBoolean("include_defaults", false);
|
||||
private void writeSettings(Settings settings, XContentBuilder builder, Params params, boolean defaults) throws IOException {
|
||||
builder.startObject(Fields.SETTINGS);
|
||||
settings.toXContent(builder, params);
|
||||
builder.endObject();
|
||||
if (renderDefaults) {
|
||||
if (defaults) {
|
||||
builder.startObject("defaults");
|
||||
settingsFilter.filter(indexScopedSettings.diff(settings, RestGetIndicesAction.this.settings)).toXContent(builder,
|
||||
request);
|
||||
settingsFilter
|
||||
.filter(indexScopedSettings.diff(settings, RestGetIndicesAction.this.settings))
|
||||
.toXContent(builder, request);
|
||||
builder.endObject();
|
||||
}
|
||||
}
|
||||
|
@ -152,6 +153,11 @@ public class RestGetIndicesAction extends BaseRestHandler {
|
|||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Set<String> responseParams() {
|
||||
return Settings.FORMAT_PARAMS;
|
||||
}
|
||||
|
||||
static class Fields {
|
||||
static final String ALIASES = "aliases";
|
||||
static final String MAPPINGS = "mappings";
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
package org.elasticsearch.rest.action.admin.indices;
|
||||
|
||||
import com.carrotsearch.hppc.cursors.ObjectObjectCursor;
|
||||
|
||||
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsRequest;
|
||||
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
|
||||
import org.elasticsearch.action.support.IndicesOptions;
|
||||
|
@ -35,12 +34,13 @@ import org.elasticsearch.index.IndexNotFoundException;
|
|||
import org.elasticsearch.indices.TypeMissingException;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
|
||||
|
@ -59,14 +59,14 @@ public class RestGetMappingAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
final String[] indices = Strings.splitStringByCommaToArray(request.param("index"));
|
||||
final String[] types = request.paramAsStringArrayOrEmptyIfAll("type");
|
||||
GetMappingsRequest getMappingsRequest = new GetMappingsRequest();
|
||||
getMappingsRequest.indices(indices).types(types);
|
||||
getMappingsRequest.indicesOptions(IndicesOptions.fromRequest(request, getMappingsRequest.indicesOptions()));
|
||||
getMappingsRequest.local(request.paramAsBoolean("local", getMappingsRequest.local()));
|
||||
client.admin().indices().getMappings(getMappingsRequest, new RestBuilderListener<GetMappingsResponse>(channel) {
|
||||
return channel -> client.admin().indices().getMappings(getMappingsRequest, new RestBuilderListener<GetMappingsResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(GetMappingsResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
|
|
|
@ -32,12 +32,13 @@ import org.elasticsearch.common.settings.SettingsFilter;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
|
||||
|
@ -58,7 +59,7 @@ public class RestGetSettingsAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
final String[] names = request.paramAsStringArrayOrEmptyIfAll("name");
|
||||
final boolean renderDefaults = request.paramAsBoolean("include_defaults", false);
|
||||
GetSettingsRequest getSettingsRequest = new GetSettingsRequest()
|
||||
|
@ -68,7 +69,7 @@ public class RestGetSettingsAction extends BaseRestHandler {
|
|||
.names(names);
|
||||
getSettingsRequest.local(request.paramAsBoolean("local", getSettingsRequest.local()));
|
||||
|
||||
client.admin().indices().getSettings(getSettingsRequest, new RestBuilderListener<GetSettingsResponse>(channel) {
|
||||
return channel -> client.admin().indices().getSettings(getSettingsRequest, new RestBuilderListener<GetSettingsResponse>(channel) {
|
||||
|
||||
@Override
|
||||
public RestResponse buildResponse(GetSettingsResponse getSettingsResponse, XContentBuilder builder) throws Exception {
|
||||
|
@ -94,4 +95,5 @@ public class RestGetSettingsAction extends BaseRestHandler {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -26,19 +26,18 @@ import org.elasticsearch.common.inject.Inject;
|
|||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestResponseListener;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.HEAD;
|
||||
import static org.elasticsearch.rest.RestStatus.NOT_FOUND;
|
||||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class RestHeadIndexTemplateAction extends BaseRestHandler {
|
||||
|
||||
@Inject
|
||||
|
@ -49,20 +48,29 @@ public class RestHeadIndexTemplateAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
GetIndexTemplatesRequest getIndexTemplatesRequest = new GetIndexTemplatesRequest(request.param("name"));
|
||||
getIndexTemplatesRequest.local(request.paramAsBoolean("local", getIndexTemplatesRequest.local()));
|
||||
getIndexTemplatesRequest.masterNodeTimeout(request.paramAsTime("master_timeout", getIndexTemplatesRequest.masterNodeTimeout()));
|
||||
client.admin().indices().getTemplates(getIndexTemplatesRequest, new RestResponseListener<GetIndexTemplatesResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(GetIndexTemplatesResponse getIndexTemplatesResponse) {
|
||||
boolean templateExists = getIndexTemplatesResponse.getIndexTemplates().size() > 0;
|
||||
if (templateExists) {
|
||||
return new BytesRestResponse(OK, BytesRestResponse.TEXT_CONTENT_TYPE, BytesArray.EMPTY);
|
||||
} else {
|
||||
return new BytesRestResponse(NOT_FOUND, BytesRestResponse.TEXT_CONTENT_TYPE, BytesArray.EMPTY);
|
||||
}
|
||||
}
|
||||
});
|
||||
return channel ->
|
||||
client.admin()
|
||||
.indices()
|
||||
.getTemplates(getIndexTemplatesRequest, new RestResponseListener<GetIndexTemplatesResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(GetIndexTemplatesResponse getIndexTemplatesResponse) {
|
||||
boolean templateExists = getIndexTemplatesResponse.getIndexTemplates().size() > 0;
|
||||
if (templateExists) {
|
||||
return new BytesRestResponse(OK, BytesRestResponse.TEXT_CONTENT_TYPE, BytesArray.EMPTY);
|
||||
} else {
|
||||
return new BytesRestResponse(NOT_FOUND, BytesRestResponse.TEXT_CONTENT_TYPE, BytesArray.EMPTY);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Set<String> responseParams() {
|
||||
return Settings.FORMAT_PARAMS;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,18 +19,18 @@
|
|||
package org.elasticsearch.rest.action.admin.indices;
|
||||
|
||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
|
||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesResponse;
|
||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest.AliasActions;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.common.Strings;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.DELETE;
|
||||
|
||||
/**
|
||||
|
@ -45,7 +45,7 @@ public class RestIndexDeleteAliasesAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
final String[] indices = Strings.splitStringByCommaToArray(request.param("index"));
|
||||
final String[] aliases = Strings.splitStringByCommaToArray(request.param("name"));
|
||||
IndicesAliasesRequest indicesAliasesRequest = new IndicesAliasesRequest();
|
||||
|
@ -53,6 +53,6 @@ public class RestIndexDeleteAliasesAction extends BaseRestHandler {
|
|||
indicesAliasesRequest.addAliasAction(AliasActions.remove().indices(indices).aliases(aliases));
|
||||
indicesAliasesRequest.masterNodeTimeout(request.paramAsTime("master_timeout", indicesAliasesRequest.masterNodeTimeout()));
|
||||
|
||||
client.admin().indices().aliases(indicesAliasesRequest, new AcknowledgedRestListener<IndicesAliasesResponse>(channel));
|
||||
return channel -> client.admin().indices().aliases(indicesAliasesRequest, new AcknowledgedRestListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,11 +27,11 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
|
@ -58,7 +58,7 @@ public class RestIndexPutAliasAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) throws Exception {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
String[] indices = Strings.splitStringByCommaToArray(request.param("index"));
|
||||
String alias = request.param("name");
|
||||
Map<String, Object> filter = null;
|
||||
|
@ -117,6 +117,6 @@ public class RestIndexPutAliasAction extends BaseRestHandler {
|
|||
aliasAction.filter(filter);
|
||||
}
|
||||
indicesAliasesRequest.addAliasAction(aliasAction);
|
||||
client.admin().indices().aliases(indicesAliasesRequest, new AcknowledgedRestListener<>(channel));
|
||||
return channel -> client.admin().indices().aliases(indicesAliasesRequest, new AcknowledgedRestListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,11 +32,12 @@ import org.elasticsearch.common.xcontent.ObjectParser;
|
|||
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
|
||||
public class RestIndicesAliasesAction extends BaseRestHandler {
|
||||
|
@ -56,7 +57,7 @@ public class RestIndicesAliasesAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) throws Exception {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
IndicesAliasesRequest indicesAliasesRequest = new IndicesAliasesRequest();
|
||||
indicesAliasesRequest.masterNodeTimeout(request.paramAsTime("master_timeout", indicesAliasesRequest.masterNodeTimeout()));
|
||||
indicesAliasesRequest.timeout(request.paramAsTime("timeout", indicesAliasesRequest.timeout()));
|
||||
|
@ -66,6 +67,6 @@ public class RestIndicesAliasesAction extends BaseRestHandler {
|
|||
if (indicesAliasesRequest.getAliasActions().isEmpty()) {
|
||||
throw new IllegalArgumentException("No action specified");
|
||||
}
|
||||
client.admin().indices().aliases(indicesAliasesRequest, new AcknowledgedRestListener<IndicesAliasesResponse>(channel));
|
||||
return channel -> client.admin().indices().aliases(indicesAliasesRequest, new AcknowledgedRestListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,19 +29,17 @@ import org.elasticsearch.common.inject.Inject;
|
|||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestResponseListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.HEAD;
|
||||
import static org.elasticsearch.rest.RestStatus.NOT_FOUND;
|
||||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class RestIndicesExistsAction extends BaseRestHandler {
|
||||
|
||||
@Inject
|
||||
|
@ -51,11 +49,11 @@ public class RestIndicesExistsAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
IndicesExistsRequest indicesExistsRequest = new IndicesExistsRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
||||
indicesExistsRequest.indicesOptions(IndicesOptions.fromRequest(request, indicesExistsRequest.indicesOptions()));
|
||||
indicesExistsRequest.local(request.paramAsBoolean("local", indicesExistsRequest.local()));
|
||||
client.admin().indices().exists(indicesExistsRequest, new RestResponseListener<IndicesExistsResponse>(channel) {
|
||||
return channel -> client.admin().indices().exists(indicesExistsRequest, new RestResponseListener<IndicesExistsResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(IndicesExistsResponse response) {
|
||||
if (response.isExists()) {
|
||||
|
|
|
@ -29,12 +29,13 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
import static org.elasticsearch.rest.action.RestActions.buildBroadcastShardsHeader;
|
||||
|
@ -49,20 +50,21 @@ public class RestIndicesSegmentsAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
IndicesSegmentsRequest indicesSegmentsRequest = new IndicesSegmentsRequest(
|
||||
Strings.splitStringByCommaToArray(request.param("index")));
|
||||
indicesSegmentsRequest.verbose(request.paramAsBoolean("verbose", false));
|
||||
indicesSegmentsRequest.indicesOptions(IndicesOptions.fromRequest(request, indicesSegmentsRequest.indicesOptions()));
|
||||
client.admin().indices().segments(indicesSegmentsRequest, new RestBuilderListener<IndicesSegmentResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(IndicesSegmentResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
buildBroadcastShardsHeader(builder, request, response);
|
||||
response.toXContent(builder, request);
|
||||
builder.endObject();
|
||||
return new BytesRestResponse(OK, builder);
|
||||
}
|
||||
});
|
||||
return channel ->
|
||||
client.admin().indices().segments(indicesSegmentsRequest, new RestBuilderListener<IndicesSegmentResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(IndicesSegmentResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
buildBroadcastShardsHeader(builder, request, response);
|
||||
response.toXContent(builder, request);
|
||||
builder.endObject();
|
||||
return new BytesRestResponse(OK, builder);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,12 +30,13 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
|
||||
|
@ -52,21 +53,26 @@ public class RestIndicesShardStoresAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
IndicesShardStoresRequest indicesShardStoresRequest = new IndicesShardStoresRequest(
|
||||
Strings.splitStringByCommaToArray(request.param("index")));
|
||||
if (request.hasParam("status")) {
|
||||
indicesShardStoresRequest.shardStatuses(Strings.splitStringByCommaToArray(request.param("status")));
|
||||
}
|
||||
indicesShardStoresRequest.indicesOptions(IndicesOptions.fromRequest(request, indicesShardStoresRequest.indicesOptions()));
|
||||
client.admin().indices().shardStores(indicesShardStoresRequest, new RestBuilderListener<IndicesShardStoresResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(IndicesShardStoresResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
response.toXContent(builder, request);
|
||||
builder.endObject();
|
||||
return new BytesRestResponse(OK, builder);
|
||||
}
|
||||
});
|
||||
return channel ->
|
||||
client.admin()
|
||||
.indices()
|
||||
.shardStores(indicesShardStoresRequest, new RestBuilderListener<IndicesShardStoresResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(
|
||||
IndicesShardStoresResponse response,
|
||||
XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
response.toXContent(builder, request);
|
||||
builder.endObject();
|
||||
return new BytesRestResponse(OK, builder);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,12 +29,13 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
|
@ -54,7 +55,7 @@ public class RestIndicesStatsAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
IndicesStatsRequest indicesStatsRequest = new IndicesStatsRequest();
|
||||
indicesStatsRequest.indicesOptions(IndicesOptions.fromRequest(request, indicesStatsRequest.indicesOptions()));
|
||||
indicesStatsRequest.indices(Strings.splitStringByCommaToArray(request.param("index")));
|
||||
|
@ -106,7 +107,7 @@ public class RestIndicesStatsAction extends BaseRestHandler {
|
|||
indicesStatsRequest.includeSegmentFileSizes(true);
|
||||
}
|
||||
|
||||
client.admin().indices().stats(indicesStatsRequest, new RestBuilderListener<IndicesStatsResponse>(channel) {
|
||||
return channel -> client.admin().indices().stats(indicesStatsRequest, new RestBuilderListener<IndicesStatsResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(IndicesStatsResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
|
@ -122,4 +123,12 @@ public class RestIndicesStatsAction extends BaseRestHandler {
|
|||
public boolean canTripCircuitBreaker() {
|
||||
return false;
|
||||
}
|
||||
|
||||
private static final Set<String> RESPONSE_PARAMS = Collections.singleton("level");
|
||||
|
||||
@Override
|
||||
protected Set<String> responseParams() {
|
||||
return RESPONSE_PARAMS;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -27,11 +27,12 @@ import org.elasticsearch.common.Strings;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
@ -45,11 +46,11 @@ public class RestOpenIndexAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
OpenIndexRequest openIndexRequest = new OpenIndexRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
||||
openIndexRequest.timeout(request.paramAsTime("timeout", openIndexRequest.timeout()));
|
||||
openIndexRequest.masterNodeTimeout(request.paramAsTime("master_timeout", openIndexRequest.masterNodeTimeout()));
|
||||
openIndexRequest.indicesOptions(IndicesOptions.fromRequest(request, openIndexRequest.indicesOptions()));
|
||||
client.admin().indices().open(openIndexRequest, new AcknowledgedRestListener<OpenIndexResponse>(channel));
|
||||
return channel -> client.admin().indices().open(openIndexRequest, new AcknowledgedRestListener<OpenIndexResponse>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.elasticsearch.rest.action.admin.indices;
|
||||
|
||||
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
|
||||
|
@ -23,14 +24,12 @@ import org.elasticsearch.client.node.NodeClient;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
import java.io.IOException;
|
||||
|
||||
public class RestPutIndexTemplateAction extends BaseRestHandler {
|
||||
|
||||
@Inject
|
||||
|
@ -41,7 +40,7 @@ public class RestPutIndexTemplateAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
PutIndexTemplateRequest putRequest = new PutIndexTemplateRequest(request.param("name"));
|
||||
putRequest.template(request.param("template", putRequest.template()));
|
||||
putRequest.order(request.paramAsInt("order", putRequest.order()));
|
||||
|
@ -49,6 +48,7 @@ public class RestPutIndexTemplateAction extends BaseRestHandler {
|
|||
putRequest.create(request.paramAsBoolean("create", false));
|
||||
putRequest.cause(request.param("cause", ""));
|
||||
putRequest.source(request.content());
|
||||
client.admin().indices().putTemplate(putRequest, new AcknowledgedRestListener<>(channel));
|
||||
return channel -> client.admin().indices().putTemplate(putRequest, new AcknowledgedRestListener<>(channel));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -27,11 +27,12 @@ import org.elasticsearch.common.Strings;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.client.Requests.putMappingRequest;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.PUT;
|
||||
|
@ -68,7 +69,7 @@ public class RestPutMappingAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
PutMappingRequest putMappingRequest = putMappingRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
||||
putMappingRequest.type(request.param("type"));
|
||||
putMappingRequest.source(request.content().utf8ToString());
|
||||
|
@ -76,6 +77,6 @@ public class RestPutMappingAction extends BaseRestHandler {
|
|||
putMappingRequest.timeout(request.paramAsTime("timeout", putMappingRequest.timeout()));
|
||||
putMappingRequest.masterNodeTimeout(request.paramAsTime("master_timeout", putMappingRequest.masterNodeTimeout()));
|
||||
putMappingRequest.indicesOptions(IndicesOptions.fromRequest(request, putMappingRequest.indicesOptions()));
|
||||
client.admin().indices().putMapping(putMappingRequest, new AcknowledgedRestListener<PutMappingResponse>(channel));
|
||||
return channel -> client.admin().indices().putMapping(putMappingRequest, new AcknowledgedRestListener<PutMappingResponse>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,12 +29,13 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
|
||||
|
@ -51,14 +52,14 @@ public class RestRecoveryAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
|
||||
final RecoveryRequest recoveryRequest = new RecoveryRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
||||
recoveryRequest.detailed(request.paramAsBoolean("detailed", false));
|
||||
recoveryRequest.activeOnly(request.paramAsBoolean("active_only", false));
|
||||
recoveryRequest.indicesOptions(IndicesOptions.fromRequest(request, recoveryRequest.indicesOptions()));
|
||||
|
||||
client.admin().indices().recoveries(recoveryRequest, new RestBuilderListener<RecoveryResponse>(channel) {
|
||||
return channel -> client.admin().indices().recoveries(recoveryRequest, new RestBuilderListener<RecoveryResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(RecoveryResponse response, XContentBuilder builder) throws Exception {
|
||||
response.detailed(recoveryRequest.detailed());
|
||||
|
|
|
@ -29,20 +29,18 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
import static org.elasticsearch.rest.action.RestActions.buildBroadcastShardsHeader;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class RestRefreshAction extends BaseRestHandler {
|
||||
|
||||
@Inject
|
||||
|
@ -56,10 +54,10 @@ public class RestRefreshAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
RefreshRequest refreshRequest = new RefreshRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
||||
refreshRequest.indicesOptions(IndicesOptions.fromRequest(request, refreshRequest.indicesOptions()));
|
||||
client.admin().indices().refresh(refreshRequest, new RestBuilderListener<RefreshResponse>(channel) {
|
||||
return channel -> client.admin().indices().refresh(refreshRequest, new RestBuilderListener<RefreshResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(RefreshResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
|
|
|
@ -20,16 +20,17 @@
|
|||
package org.elasticsearch.rest.action.admin.indices;
|
||||
|
||||
import org.elasticsearch.action.admin.indices.rollover.RolloverRequest;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.action.support.ActiveShardCount;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.RestToXContentListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
@ -44,7 +45,7 @@ public class RestRolloverIndexAction extends BaseRestHandler {
|
|||
|
||||
@SuppressWarnings({"unchecked"})
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
RolloverRequest rolloverIndexRequest = new RolloverRequest(request.param("index"), request.param("new_index"));
|
||||
if (request.hasContent()) {
|
||||
rolloverIndexRequest.source(request.content());
|
||||
|
@ -53,6 +54,6 @@ public class RestRolloverIndexAction extends BaseRestHandler {
|
|||
rolloverIndexRequest.timeout(request.paramAsTime("timeout", rolloverIndexRequest.timeout()));
|
||||
rolloverIndexRequest.masterNodeTimeout(request.paramAsTime("master_timeout", rolloverIndexRequest.masterNodeTimeout()));
|
||||
rolloverIndexRequest.setWaitForActiveShards(ActiveShardCount.parseString(request.param("wait_for_active_shards")));
|
||||
client.admin().indices().rolloverIndex(rolloverIndexRequest, new RestToXContentListener<>(channel));
|
||||
return channel -> client.admin().indices().rolloverIndex(rolloverIndexRequest, new RestToXContentListener<>(channel));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,23 +20,19 @@
|
|||
package org.elasticsearch.rest.action.admin.indices;
|
||||
|
||||
import org.elasticsearch.action.admin.indices.shrink.ShrinkRequest;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.action.admin.indices.shrink.ShrinkResponse;
|
||||
import org.elasticsearch.action.support.ActiveShardCount;
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class RestShrinkIndexAction extends BaseRestHandler {
|
||||
|
||||
@Inject
|
||||
|
@ -48,7 +44,7 @@ public class RestShrinkIndexAction extends BaseRestHandler {
|
|||
|
||||
@SuppressWarnings({"unchecked"})
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
if (request.param("target") == null) {
|
||||
throw new IllegalArgumentException("no target index");
|
||||
}
|
||||
|
@ -62,7 +58,7 @@ public class RestShrinkIndexAction extends BaseRestHandler {
|
|||
shrinkIndexRequest.timeout(request.paramAsTime("timeout", shrinkIndexRequest.timeout()));
|
||||
shrinkIndexRequest.masterNodeTimeout(request.paramAsTime("master_timeout", shrinkIndexRequest.masterNodeTimeout()));
|
||||
shrinkIndexRequest.setWaitForActiveShards(ActiveShardCount.parseString(request.param("wait_for_active_shards")));
|
||||
client.admin().indices().shrinkIndex(shrinkIndexRequest, new AcknowledgedRestListener<ShrinkResponse>(channel) {
|
||||
return channel -> client.admin().indices().shrinkIndex(shrinkIndexRequest, new AcknowledgedRestListener<ShrinkResponse>(channel) {
|
||||
@Override
|
||||
public void addCustomFields(XContentBuilder builder, ShrinkResponse response) throws IOException {
|
||||
response.addCustomFields(builder);
|
||||
|
|
|
@ -29,12 +29,13 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
|
||||
|
@ -54,11 +55,11 @@ public class RestSyncedFlushAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
IndicesOptions indicesOptions = IndicesOptions.fromRequest(request, IndicesOptions.lenientExpandOpen());
|
||||
SyncedFlushRequest syncedFlushRequest = new SyncedFlushRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
||||
syncedFlushRequest.indicesOptions(indicesOptions);
|
||||
client.admin().indices().syncedFlush(syncedFlushRequest, new RestBuilderListener<SyncedFlushResponse>(channel) {
|
||||
return channel -> client.admin().indices().syncedFlush(syncedFlushRequest, new RestBuilderListener<SyncedFlushResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(SyncedFlushResponse results, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
|
|
|
@ -28,12 +28,13 @@ import org.elasticsearch.common.inject.Inject;
|
|||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestResponseListener;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.HEAD;
|
||||
import static org.elasticsearch.rest.RestStatus.NOT_FOUND;
|
||||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
|
@ -52,13 +53,13 @@ public class RestTypesExistsAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
TypesExistsRequest typesExistsRequest = new TypesExistsRequest(
|
||||
Strings.splitStringByCommaToArray(request.param("index")), Strings.splitStringByCommaToArray(request.param("type"))
|
||||
);
|
||||
typesExistsRequest.local(request.paramAsBoolean("local", typesExistsRequest.local()));
|
||||
typesExistsRequest.indicesOptions(IndicesOptions.fromRequest(request, typesExistsRequest.indicesOptions()));
|
||||
client.admin().indices().typesExists(typesExistsRequest, new RestResponseListener<TypesExistsResponse>(channel) {
|
||||
return channel -> client.admin().indices().typesExists(typesExistsRequest, new RestResponseListener<TypesExistsResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(TypesExistsResponse response) throws Exception {
|
||||
if (response.isExists()) {
|
||||
|
|
|
@ -26,11 +26,11 @@ import org.elasticsearch.common.Strings;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.action.AcknowledgedRestListener;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
|
@ -60,7 +60,7 @@ public class RestUpdateSettingsAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
UpdateSettingsRequest updateSettingsRequest = updateSettingsRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
||||
updateSettingsRequest.timeout(request.paramAsTime("timeout", updateSettingsRequest.timeout()));
|
||||
updateSettingsRequest.setPreserveExisting(request.paramAsBoolean("preserve_existing", updateSettingsRequest.isPreserveExisting()));
|
||||
|
@ -89,6 +89,12 @@ public class RestUpdateSettingsAction extends BaseRestHandler {
|
|||
}
|
||||
updateSettingsRequest.settings(updateSettings);
|
||||
|
||||
client.admin().indices().updateSettings(updateSettingsRequest, new AcknowledgedRestListener<>(channel));
|
||||
return channel -> client.admin().indices().updateSettings(updateSettingsRequest, new AcknowledgedRestListener<>(channel));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Set<String> responseParams() {
|
||||
return Settings.FORMAT_PARAMS;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -31,12 +31,12 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestBuilderListener;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
|
@ -44,7 +44,6 @@ import static org.elasticsearch.rest.RestRequest.Method.POST;
|
|||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
import static org.elasticsearch.rest.action.RestActions.buildBroadcastShardsHeader;
|
||||
|
||||
|
||||
public class RestUpgradeAction extends BaseRestHandler {
|
||||
|
||||
@Inject
|
||||
|
@ -58,31 +57,33 @@ public class RestUpgradeAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(RestRequest request, RestChannel channel, NodeClient client) throws Exception {
|
||||
public RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) throws IOException {
|
||||
if (request.method().equals(RestRequest.Method.GET)) {
|
||||
handleGet(request, channel, client);
|
||||
return handleGet(request, client);
|
||||
} else if (request.method().equals(RestRequest.Method.POST)) {
|
||||
handlePost(request, channel, client);
|
||||
return handlePost(request, client);
|
||||
} else {
|
||||
throw new IllegalArgumentException("illegal method [" + request.method() + "] for request [" + request.path() + "]");
|
||||
}
|
||||
}
|
||||
|
||||
void handleGet(final RestRequest request, RestChannel channel, NodeClient client) {
|
||||
client.admin().indices().prepareUpgradeStatus(Strings.splitStringByCommaToArray(request.param("index")))
|
||||
.execute(new RestBuilderListener<UpgradeStatusResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(UpgradeStatusResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
response.toXContent(builder, request);
|
||||
builder.endObject();
|
||||
return new BytesRestResponse(OK, builder);
|
||||
}
|
||||
});
|
||||
private RestChannelConsumer handleGet(final RestRequest request, NodeClient client) {
|
||||
return channel -> client.admin().indices().prepareUpgradeStatus(Strings.splitStringByCommaToArray(request.param("index")))
|
||||
.execute(new RestBuilderListener<UpgradeStatusResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(UpgradeStatusResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
response.toXContent(builder, request);
|
||||
builder.endObject();
|
||||
return new BytesRestResponse(OK, builder);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void handlePost(final RestRequest request, RestChannel channel, NodeClient client) {
|
||||
private RestChannelConsumer handlePost(final RestRequest request, NodeClient client) {
|
||||
UpgradeRequest upgradeReq = new UpgradeRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
||||
upgradeReq.upgradeOnlyAncientSegments(request.paramAsBoolean("only_ancient_segments", false));
|
||||
client.admin().indices().upgrade(upgradeReq, new RestBuilderListener<UpgradeResponse>(channel) {
|
||||
return channel -> client.admin().indices().upgrade(upgradeReq, new RestBuilderListener<UpgradeResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(UpgradeResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
|
|
|
@ -47,9 +47,6 @@ import static org.elasticsearch.rest.RestRequest.Method.POST;
|
|||
import static org.elasticsearch.rest.RestStatus.OK;
|
||||
import static org.elasticsearch.rest.action.RestActions.buildBroadcastShardsHeader;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class RestValidateQueryAction extends BaseRestHandler {
|
||||
|
||||
private final IndicesQueriesRegistry indicesQueriesRegistry;
|
||||
|
@ -67,58 +64,69 @@ public class RestValidateQueryAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) throws Exception {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
ValidateQueryRequest validateQueryRequest = new ValidateQueryRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
||||
validateQueryRequest.indicesOptions(IndicesOptions.fromRequest(request, validateQueryRequest.indicesOptions()));
|
||||
validateQueryRequest.explain(request.paramAsBoolean("explain", false));
|
||||
if (RestActions.hasBodyContent(request)) {
|
||||
try {
|
||||
validateQueryRequest
|
||||
.query(RestActions.getQueryContent(RestActions.getRestContent(request), indicesQueriesRegistry, parseFieldMatcher));
|
||||
} catch(ParsingException e) {
|
||||
channel.sendResponse(buildErrorResponse(channel.newBuilder(), e.getDetailedMessage(), validateQueryRequest.explain()));
|
||||
return;
|
||||
} catch(Exception e) {
|
||||
channel.sendResponse(buildErrorResponse(channel.newBuilder(), e.getMessage(), validateQueryRequest.explain()));
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
QueryBuilder queryBuilder = RestActions.urlParamsToQueryBuilder(request);
|
||||
if (queryBuilder != null) {
|
||||
validateQueryRequest.query(queryBuilder);
|
||||
}
|
||||
}
|
||||
validateQueryRequest.types(Strings.splitStringByCommaToArray(request.param("type")));
|
||||
validateQueryRequest.rewrite(request.paramAsBoolean("rewrite", false));
|
||||
|
||||
client.admin().indices().validateQuery(validateQueryRequest, new RestBuilderListener<ValidateQueryResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(ValidateQueryResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
builder.field(VALID_FIELD, response.isValid());
|
||||
buildBroadcastShardsHeader(builder, request, response);
|
||||
if (response.getQueryExplanation() != null && !response.getQueryExplanation().isEmpty()) {
|
||||
builder.startArray(EXPLANATIONS_FIELD);
|
||||
for (QueryExplanation explanation : response.getQueryExplanation()) {
|
||||
Exception bodyParsingException = null;
|
||||
if (RestActions.hasBodyContent(request)) {
|
||||
try {
|
||||
validateQueryRequest.query(
|
||||
RestActions.getQueryContent(RestActions.getRestContent(request), indicesQueriesRegistry, parseFieldMatcher));
|
||||
} catch (Exception e) {
|
||||
bodyParsingException = e;
|
||||
}
|
||||
} else if (request.hasParam("q")) {
|
||||
QueryBuilder queryBuilder = RestActions.urlParamsToQueryBuilder(request);
|
||||
validateQueryRequest.query(queryBuilder);
|
||||
}
|
||||
|
||||
final Exception finalBodyParsingException = bodyParsingException;
|
||||
return channel -> {
|
||||
if (finalBodyParsingException != null) {
|
||||
if (finalBodyParsingException instanceof ParsingException) {
|
||||
handleException(validateQueryRequest, ((ParsingException) finalBodyParsingException).getDetailedMessage(), channel);
|
||||
} else {
|
||||
handleException(validateQueryRequest, finalBodyParsingException.getMessage(), channel);
|
||||
}
|
||||
} else {
|
||||
client.admin().indices().validateQuery(validateQueryRequest, new RestBuilderListener<ValidateQueryResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(ValidateQueryResponse response, XContentBuilder builder) throws Exception {
|
||||
builder.startObject();
|
||||
if (explanation.getIndex() != null) {
|
||||
builder.field(INDEX_FIELD, explanation.getIndex());
|
||||
}
|
||||
builder.field(VALID_FIELD, explanation.isValid());
|
||||
if (explanation.getError() != null) {
|
||||
builder.field(ERROR_FIELD, explanation.getError());
|
||||
}
|
||||
if (explanation.getExplanation() != null) {
|
||||
builder.field(EXPLANATION_FIELD, explanation.getExplanation());
|
||||
builder.field(VALID_FIELD, response.isValid());
|
||||
buildBroadcastShardsHeader(builder, request, response);
|
||||
if (response.getQueryExplanation() != null && !response.getQueryExplanation().isEmpty()) {
|
||||
builder.startArray(EXPLANATIONS_FIELD);
|
||||
for (QueryExplanation explanation : response.getQueryExplanation()) {
|
||||
builder.startObject();
|
||||
if (explanation.getIndex() != null) {
|
||||
builder.field(INDEX_FIELD, explanation.getIndex());
|
||||
}
|
||||
builder.field(VALID_FIELD, explanation.isValid());
|
||||
if (explanation.getError() != null) {
|
||||
builder.field(ERROR_FIELD, explanation.getError());
|
||||
}
|
||||
if (explanation.getExplanation() != null) {
|
||||
builder.field(EXPLANATION_FIELD, explanation.getExplanation());
|
||||
}
|
||||
builder.endObject();
|
||||
}
|
||||
builder.endArray();
|
||||
}
|
||||
builder.endObject();
|
||||
return new BytesRestResponse(OK, builder);
|
||||
}
|
||||
builder.endArray();
|
||||
}
|
||||
builder.endObject();
|
||||
return new BytesRestResponse(OK, builder);
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
private void handleException(final ValidateQueryRequest request, final String message, final RestChannel channel) throws IOException {
|
||||
channel.sendResponse(buildErrorResponse(channel.newBuilder(), message, request.explain()));
|
||||
}
|
||||
|
||||
private static BytesRestResponse buildErrorResponse(XContentBuilder builder, String error, boolean explain) throws IOException {
|
||||
|
|
|
@ -25,49 +25,62 @@ import org.elasticsearch.common.io.stream.BytesStreamOutput;
|
|||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestStatus;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.elasticsearch.rest.action.cat.RestTable.buildHelpWidths;
|
||||
import static org.elasticsearch.rest.action.cat.RestTable.pad;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public abstract class AbstractCatAction extends BaseRestHandler {
|
||||
|
||||
public AbstractCatAction(Settings settings) {
|
||||
super(settings);
|
||||
}
|
||||
|
||||
protected abstract void doRequest(final RestRequest request, final RestChannel channel, final NodeClient client);
|
||||
protected abstract RestChannelConsumer doCatRequest(final RestRequest request, final NodeClient client);
|
||||
|
||||
protected abstract void documentation(StringBuilder sb);
|
||||
|
||||
protected abstract Table getTableWithHeader(final RestRequest request);
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) throws Exception {
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
boolean helpWanted = request.paramAsBoolean("help", false);
|
||||
if (helpWanted) {
|
||||
Table table = getTableWithHeader(request);
|
||||
int[] width = buildHelpWidths(table, request);
|
||||
BytesStreamOutput bytesOutput = channel.bytesOutput();
|
||||
UTF8StreamWriter out = new UTF8StreamWriter().setOutput(bytesOutput);
|
||||
for (Table.Cell cell : table.getHeaders()) {
|
||||
// need to do left-align always, so create new cells
|
||||
pad(new Table.Cell(cell.value), width[0], request, out);
|
||||
out.append(" | ");
|
||||
pad(new Table.Cell(cell.attr.containsKey("alias") ? cell.attr.get("alias") : ""), width[1], request, out);
|
||||
out.append(" | ");
|
||||
pad(new Table.Cell(cell.attr.containsKey("desc") ? cell.attr.get("desc") : "not available"), width[2], request, out);
|
||||
out.append("\n");
|
||||
}
|
||||
out.close();
|
||||
channel.sendResponse(new BytesRestResponse(RestStatus.OK, BytesRestResponse.TEXT_CONTENT_TYPE, bytesOutput.bytes()));
|
||||
return channel -> {
|
||||
Table table = getTableWithHeader(request);
|
||||
int[] width = buildHelpWidths(table, request);
|
||||
BytesStreamOutput bytesOutput = channel.bytesOutput();
|
||||
UTF8StreamWriter out = new UTF8StreamWriter().setOutput(bytesOutput);
|
||||
for (Table.Cell cell : table.getHeaders()) {
|
||||
// need to do left-align always, so create new cells
|
||||
pad(new Table.Cell(cell.value), width[0], request, out);
|
||||
out.append(" | ");
|
||||
pad(new Table.Cell(cell.attr.containsKey("alias") ? cell.attr.get("alias") : ""), width[1], request, out);
|
||||
out.append(" | ");
|
||||
pad(new Table.Cell(cell.attr.containsKey("desc") ? cell.attr.get("desc") : "not available"), width[2], request, out);
|
||||
out.append("\n");
|
||||
}
|
||||
out.close();
|
||||
channel.sendResponse(new BytesRestResponse(RestStatus.OK, BytesRestResponse.TEXT_CONTENT_TYPE, bytesOutput.bytes()));
|
||||
};
|
||||
} else {
|
||||
doRequest(request, channel, client);
|
||||
return doCatRequest(request, client);
|
||||
}
|
||||
}
|
||||
|
||||
static Set<String> RESPONSE_PARAMS =
|
||||
Collections.unmodifiableSet(new HashSet<>(Arrays.asList("format", "h", "v", "ts", "pri", "bytes", "size", "time")));
|
||||
|
||||
@Override
|
||||
protected Set<String> responseParams() {
|
||||
return RESPONSE_PARAMS;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -27,7 +27,6 @@ import org.elasticsearch.common.Strings;
|
|||
import org.elasticsearch.common.Table;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -37,9 +36,6 @@ import java.util.List;
|
|||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class RestAliasAction extends AbstractCatAction {
|
||||
|
||||
@Inject
|
||||
|
@ -51,13 +47,13 @@ public class RestAliasAction extends AbstractCatAction {
|
|||
|
||||
|
||||
@Override
|
||||
protected void doRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
protected RestChannelConsumer doCatRequest(final RestRequest request, final NodeClient client) {
|
||||
final GetAliasesRequest getAliasesRequest = request.hasParam("alias") ?
|
||||
new GetAliasesRequest(request.param("alias")) :
|
||||
new GetAliasesRequest();
|
||||
getAliasesRequest.local(request.paramAsBoolean("local", getAliasesRequest.local()));
|
||||
|
||||
client.admin().indices().getAliases(getAliasesRequest, new RestResponseListener<GetAliasesResponse>(channel) {
|
||||
return channel -> client.admin().indices().getAliases(getAliasesRequest, new RestResponseListener<GetAliasesResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(GetAliasesResponse response) throws Exception {
|
||||
Table tab = buildTable(request, response);
|
||||
|
|
|
@ -34,7 +34,6 @@ import org.elasticsearch.common.Table;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.unit.ByteSizeValue;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -59,14 +58,14 @@ public class RestAllocationAction extends AbstractCatAction {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void doRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer doCatRequest(final RestRequest request, final NodeClient client) {
|
||||
final String[] nodes = Strings.splitStringByCommaToArray(request.param("nodes", "data:true"));
|
||||
final ClusterStateRequest clusterStateRequest = new ClusterStateRequest();
|
||||
clusterStateRequest.clear().routingTable(true);
|
||||
clusterStateRequest.local(request.paramAsBoolean("local", clusterStateRequest.local()));
|
||||
clusterStateRequest.masterNodeTimeout(request.paramAsTime("master_timeout", clusterStateRequest.masterNodeTimeout()));
|
||||
|
||||
client.admin().cluster().state(clusterStateRequest, new RestActionListener<ClusterStateResponse>(channel) {
|
||||
return channel -> client.admin().cluster().state(clusterStateRequest, new RestActionListener<ClusterStateResponse>(channel) {
|
||||
@Override
|
||||
public void processResponse(final ClusterStateResponse state) {
|
||||
NodesStatsRequest statsRequest = new NodesStatsRequest(nodes);
|
||||
|
|
|
@ -24,11 +24,11 @@ import org.elasticsearch.common.inject.Inject;
|
|||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.BaseRestHandler;
|
||||
import org.elasticsearch.rest.BytesRestResponse;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestStatus;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
|
@ -52,7 +52,8 @@ public class RestCatAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handleRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
channel.sendResponse(new BytesRestResponse(RestStatus.OK, HELP));
|
||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||
return channel -> channel.sendResponse(new BytesRestResponse(RestStatus.OK, HELP));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -29,7 +29,6 @@ import org.elasticsearch.common.inject.Inject;
|
|||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.index.query.QueryBuilder;
|
||||
import org.elasticsearch.indices.query.IndicesQueriesRegistry;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -58,7 +57,7 @@ public class RestCountAction extends AbstractCatAction {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void doRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer doCatRequest(final RestRequest request, final NodeClient client) {
|
||||
String[] indices = Strings.splitStringByCommaToArray(request.param("index"));
|
||||
SearchRequest countRequest = new SearchRequest(indices);
|
||||
String source = request.param("source");
|
||||
|
@ -72,7 +71,7 @@ public class RestCountAction extends AbstractCatAction {
|
|||
searchSourceBuilder.query(queryBuilder);
|
||||
}
|
||||
}
|
||||
client.search(countRequest, new RestResponseListener<SearchResponse>(channel) {
|
||||
return channel -> client.search(countRequest, new RestResponseListener<SearchResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(SearchResponse countResponse) throws Exception {
|
||||
return RestTable.buildResponse(buildTable(request, countResponse), channel);
|
||||
|
|
|
@ -28,7 +28,6 @@ import org.elasticsearch.common.Table;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.unit.ByteSizeValue;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -49,14 +48,14 @@ public class RestFielddataAction extends AbstractCatAction {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void doRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
protected RestChannelConsumer doCatRequest(final RestRequest request, final NodeClient client) {
|
||||
final NodesStatsRequest nodesStatsRequest = new NodesStatsRequest("data:true");
|
||||
nodesStatsRequest.clear();
|
||||
nodesStatsRequest.indices(true);
|
||||
String[] fields = request.paramAsStringArray("fields", null);
|
||||
nodesStatsRequest.indices().fieldDataFields(fields == null ? new String[] {"*"} : fields);
|
||||
|
||||
client.admin().cluster().nodesStats(nodesStatsRequest, new RestResponseListener<NodesStatsResponse>(channel) {
|
||||
return channel -> client.admin().cluster().nodesStats(nodesStatsRequest, new RestResponseListener<NodesStatsResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(NodesStatsResponse nodeStatses) throws Exception {
|
||||
return RestTable.buildResponse(buildTable(request, nodeStatses), channel);
|
||||
|
|
|
@ -25,7 +25,6 @@ import org.elasticsearch.client.node.NodeClient;
|
|||
import org.elasticsearch.common.Table;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -49,10 +48,10 @@ public class RestHealthAction extends AbstractCatAction {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void doRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer doCatRequest(final RestRequest request, final NodeClient client) {
|
||||
ClusterHealthRequest clusterHealthRequest = new ClusterHealthRequest();
|
||||
|
||||
client.admin().cluster().health(clusterHealthRequest, new RestResponseListener<ClusterHealthResponse>(channel) {
|
||||
return channel -> client.admin().cluster().health(clusterHealthRequest, new RestResponseListener<ClusterHealthResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(final ClusterHealthResponse health) throws Exception {
|
||||
return RestTable.buildResponse(buildTable(health, request), channel);
|
||||
|
|
|
@ -40,7 +40,6 @@ import org.elasticsearch.common.Table;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.index.Index;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -49,7 +48,11 @@ import org.elasticsearch.rest.action.RestResponseListener;
|
|||
import org.joda.time.DateTime;
|
||||
import org.joda.time.DateTimeZone;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
|
||||
|
@ -72,7 +75,7 @@ public class RestIndicesAction extends AbstractCatAction {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void doRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer doCatRequest(final RestRequest request, final NodeClient client) {
|
||||
final String[] indices = Strings.splitStringByCommaToArray(request.param("index"));
|
||||
final ClusterStateRequest clusterStateRequest = new ClusterStateRequest();
|
||||
clusterStateRequest.clear().indices(indices).metaData(true);
|
||||
|
@ -81,7 +84,7 @@ public class RestIndicesAction extends AbstractCatAction {
|
|||
final IndicesOptions strictExpandIndicesOptions = IndicesOptions.strictExpand();
|
||||
clusterStateRequest.indicesOptions(strictExpandIndicesOptions);
|
||||
|
||||
client.admin().cluster().state(clusterStateRequest, new RestActionListener<ClusterStateResponse>(channel) {
|
||||
return channel -> client.admin().cluster().state(clusterStateRequest, new RestActionListener<ClusterStateResponse>(channel) {
|
||||
@Override
|
||||
public void processResponse(final ClusterStateResponse clusterStateResponse) {
|
||||
final ClusterState state = clusterStateResponse.getState();
|
||||
|
@ -123,6 +126,19 @@ public class RestIndicesAction extends AbstractCatAction {
|
|||
});
|
||||
}
|
||||
|
||||
private static final Set<String> RESPONSE_PARAMS;
|
||||
|
||||
static {
|
||||
final Set<String> responseParams = new HashSet<>(Arrays.asList("local", "health"));
|
||||
responseParams.addAll(AbstractCatAction.RESPONSE_PARAMS);
|
||||
RESPONSE_PARAMS = Collections.unmodifiableSet(responseParams);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Set<String> responseParams() {
|
||||
return RESPONSE_PARAMS;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Table getTableWithHeader(final RestRequest request) {
|
||||
Table table = new Table();
|
||||
|
|
|
@ -27,7 +27,6 @@ import org.elasticsearch.cluster.node.DiscoveryNodes;
|
|||
import org.elasticsearch.common.Table;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -49,13 +48,13 @@ public class RestMasterAction extends AbstractCatAction {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void doRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer doCatRequest(final RestRequest request, final NodeClient client) {
|
||||
final ClusterStateRequest clusterStateRequest = new ClusterStateRequest();
|
||||
clusterStateRequest.clear().nodes(true);
|
||||
clusterStateRequest.local(request.paramAsBoolean("local", clusterStateRequest.local()));
|
||||
clusterStateRequest.masterNodeTimeout(request.paramAsTime("master_timeout", clusterStateRequest.masterNodeTimeout()));
|
||||
|
||||
client.admin().cluster().state(clusterStateRequest, new RestResponseListener<ClusterStateResponse>(channel) {
|
||||
return channel -> client.admin().cluster().state(clusterStateRequest, new RestResponseListener<ClusterStateResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(final ClusterStateResponse clusterStateResponse) throws Exception {
|
||||
return RestTable.buildResponse(buildTable(request, clusterStateResponse), channel);
|
||||
|
|
|
@ -32,7 +32,6 @@ import org.elasticsearch.common.Table;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.transport.InetSocketTransportAddress;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -57,13 +56,13 @@ public class RestNodeAttrsAction extends AbstractCatAction {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void doRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer doCatRequest(final RestRequest request, final NodeClient client) {
|
||||
final ClusterStateRequest clusterStateRequest = new ClusterStateRequest();
|
||||
clusterStateRequest.clear().nodes(true);
|
||||
clusterStateRequest.local(request.paramAsBoolean("local", clusterStateRequest.local()));
|
||||
clusterStateRequest.masterNodeTimeout(request.paramAsTime("master_timeout", clusterStateRequest.masterNodeTimeout()));
|
||||
|
||||
client.admin().cluster().state(clusterStateRequest, new RestActionListener<ClusterStateResponse>(channel) {
|
||||
return channel -> client.admin().cluster().state(clusterStateRequest, new RestActionListener<ClusterStateResponse>(channel) {
|
||||
@Override
|
||||
public void processResponse(final ClusterStateResponse clusterStateResponse) {
|
||||
NodesInfoRequest nodesInfoRequest = new NodesInfoRequest();
|
||||
|
|
|
@ -54,7 +54,6 @@ import org.elasticsearch.monitor.jvm.JvmInfo;
|
|||
import org.elasticsearch.monitor.jvm.JvmStats;
|
||||
import org.elasticsearch.monitor.os.OsStats;
|
||||
import org.elasticsearch.monitor.process.ProcessStats;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -82,13 +81,13 @@ public class RestNodesAction extends AbstractCatAction {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void doRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer doCatRequest(final RestRequest request, final NodeClient client) {
|
||||
final ClusterStateRequest clusterStateRequest = new ClusterStateRequest();
|
||||
clusterStateRequest.clear().nodes(true);
|
||||
clusterStateRequest.local(request.paramAsBoolean("local", clusterStateRequest.local()));
|
||||
clusterStateRequest.masterNodeTimeout(request.paramAsTime("master_timeout", clusterStateRequest.masterNodeTimeout()));
|
||||
|
||||
client.admin().cluster().state(clusterStateRequest, new RestActionListener<ClusterStateResponse>(channel) {
|
||||
return channel -> client.admin().cluster().state(clusterStateRequest, new RestActionListener<ClusterStateResponse>(channel) {
|
||||
@Override
|
||||
public void processResponse(final ClusterStateResponse clusterStateResponse) {
|
||||
NodesInfoRequest nodesInfoRequest = new NodesInfoRequest();
|
||||
|
|
|
@ -26,7 +26,6 @@ import org.elasticsearch.cluster.service.PendingClusterTask;
|
|||
import org.elasticsearch.common.Table;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -47,17 +46,20 @@ public class RestPendingClusterTasksAction extends AbstractCatAction {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void doRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer doCatRequest(final RestRequest request, final NodeClient client) {
|
||||
PendingClusterTasksRequest pendingClusterTasksRequest = new PendingClusterTasksRequest();
|
||||
pendingClusterTasksRequest.masterNodeTimeout(request.paramAsTime("master_timeout", pendingClusterTasksRequest.masterNodeTimeout()));
|
||||
pendingClusterTasksRequest.local(request.paramAsBoolean("local", pendingClusterTasksRequest.local()));
|
||||
client.admin().cluster().pendingClusterTasks(pendingClusterTasksRequest, new RestResponseListener<PendingClusterTasksResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(PendingClusterTasksResponse pendingClusterTasks) throws Exception {
|
||||
Table tab = buildTable(request, pendingClusterTasks);
|
||||
return RestTable.buildResponse(tab, channel);
|
||||
}
|
||||
});
|
||||
return channel ->
|
||||
client.admin()
|
||||
.cluster()
|
||||
.pendingClusterTasks(pendingClusterTasksRequest, new RestResponseListener<PendingClusterTasksResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(PendingClusterTasksResponse pendingClusterTasks) throws Exception {
|
||||
Table tab = buildTable(request, pendingClusterTasks);
|
||||
return RestTable.buildResponse(tab, channel);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -31,7 +31,6 @@ import org.elasticsearch.common.Table;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.plugins.PluginInfo;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -54,13 +53,13 @@ public class RestPluginsAction extends AbstractCatAction {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void doRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer doCatRequest(final RestRequest request, final NodeClient client) {
|
||||
final ClusterStateRequest clusterStateRequest = new ClusterStateRequest();
|
||||
clusterStateRequest.clear().nodes(true);
|
||||
clusterStateRequest.local(request.paramAsBoolean("local", clusterStateRequest.local()));
|
||||
clusterStateRequest.masterNodeTimeout(request.paramAsTime("master_timeout", clusterStateRequest.masterNodeTimeout()));
|
||||
|
||||
client.admin().cluster().state(clusterStateRequest, new RestActionListener<ClusterStateResponse>(channel) {
|
||||
return channel -> client.admin().cluster().state(clusterStateRequest, new RestActionListener<ClusterStateResponse>(channel) {
|
||||
@Override
|
||||
public void processResponse(final ClusterStateResponse clusterStateResponse) throws Exception {
|
||||
NodesInfoRequest nodesInfoRequest = new NodesInfoRequest();
|
||||
|
|
|
@ -32,7 +32,6 @@ import org.elasticsearch.common.inject.Inject;
|
|||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.unit.TimeValue;
|
||||
import org.elasticsearch.indices.recovery.RecoveryState;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -65,13 +64,13 @@ public class RestRecoveryAction extends AbstractCatAction {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void doRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer doCatRequest(final RestRequest request, final NodeClient client) {
|
||||
final RecoveryRequest recoveryRequest = new RecoveryRequest(Strings.splitStringByCommaToArray(request.param("index")));
|
||||
recoveryRequest.detailed(request.paramAsBoolean("detailed", false));
|
||||
recoveryRequest.activeOnly(request.paramAsBoolean("active_only", false));
|
||||
recoveryRequest.indicesOptions(IndicesOptions.fromRequest(request, recoveryRequest.indicesOptions()));
|
||||
|
||||
client.admin().indices().recoveries(recoveryRequest, new RestResponseListener<RecoveryResponse>(channel) {
|
||||
return channel -> client.admin().indices().recoveries(recoveryRequest, new RestResponseListener<RecoveryResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(final RecoveryResponse response) throws Exception {
|
||||
return RestTable.buildResponse(buildRecoveryTable(request, response), channel);
|
||||
|
|
|
@ -26,7 +26,6 @@ import org.elasticsearch.cluster.metadata.RepositoryMetaData;
|
|||
import org.elasticsearch.common.Table;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -45,17 +44,20 @@ public class RestRepositoriesAction extends AbstractCatAction {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void doRequest(RestRequest request, RestChannel channel, NodeClient client) {
|
||||
protected RestChannelConsumer doCatRequest(RestRequest request, NodeClient client) {
|
||||
GetRepositoriesRequest getRepositoriesRequest = new GetRepositoriesRequest();
|
||||
getRepositoriesRequest.local(request.paramAsBoolean("local", getRepositoriesRequest.local()));
|
||||
getRepositoriesRequest.masterNodeTimeout(request.paramAsTime("master_timeout", getRepositoriesRequest.masterNodeTimeout()));
|
||||
|
||||
client.admin().cluster().getRepositories(getRepositoriesRequest, new RestResponseListener<GetRepositoriesResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(GetRepositoriesResponse getRepositoriesResponse) throws Exception {
|
||||
return RestTable.buildResponse(buildTable(request, getRepositoriesResponse), channel);
|
||||
}
|
||||
});
|
||||
return channel ->
|
||||
client.admin()
|
||||
.cluster()
|
||||
.getRepositories(getRepositoriesRequest, new RestResponseListener<GetRepositoriesResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(GetRepositoriesResponse getRepositoriesResponse) throws Exception {
|
||||
return RestTable.buildResponse(buildTable(request, getRepositoriesResponse), channel);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -33,7 +33,6 @@ import org.elasticsearch.common.Table;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.index.engine.Segment;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -55,7 +54,7 @@ public class RestSegmentsAction extends AbstractCatAction {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void doRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
protected RestChannelConsumer doCatRequest(final RestRequest request, final NodeClient client) {
|
||||
final String[] indices = Strings.splitStringByCommaToArray(request.param("index"));
|
||||
|
||||
final ClusterStateRequest clusterStateRequest = new ClusterStateRequest();
|
||||
|
@ -63,7 +62,7 @@ public class RestSegmentsAction extends AbstractCatAction {
|
|||
clusterStateRequest.masterNodeTimeout(request.paramAsTime("master_timeout", clusterStateRequest.masterNodeTimeout()));
|
||||
clusterStateRequest.clear().nodes(true).routingTable(true).indices(indices);
|
||||
|
||||
client.admin().cluster().state(clusterStateRequest, new RestActionListener<ClusterStateResponse>(channel) {
|
||||
return channel -> client.admin().cluster().state(clusterStateRequest, new RestActionListener<ClusterStateResponse>(channel) {
|
||||
@Override
|
||||
public void processResponse(final ClusterStateResponse clusterStateResponse) {
|
||||
final IndicesSegmentsRequest indicesSegmentsRequest = new IndicesSegmentsRequest();
|
||||
|
|
|
@ -36,7 +36,6 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.unit.TimeValue;
|
||||
import org.elasticsearch.index.engine.CommitStats;
|
||||
import org.elasticsearch.index.engine.Engine;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -63,13 +62,13 @@ public class RestShardsAction extends AbstractCatAction {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void doRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
public RestChannelConsumer doCatRequest(final RestRequest request, final NodeClient client) {
|
||||
final String[] indices = Strings.splitStringByCommaToArray(request.param("index"));
|
||||
final ClusterStateRequest clusterStateRequest = new ClusterStateRequest();
|
||||
clusterStateRequest.local(request.paramAsBoolean("local", clusterStateRequest.local()));
|
||||
clusterStateRequest.masterNodeTimeout(request.paramAsTime("master_timeout", clusterStateRequest.masterNodeTimeout()));
|
||||
clusterStateRequest.clear().nodes(true).metaData(true).routingTable(true).indices(indices);
|
||||
client.admin().cluster().state(clusterStateRequest, new RestActionListener<ClusterStateResponse>(channel) {
|
||||
return channel -> client.admin().cluster().state(clusterStateRequest, new RestActionListener<ClusterStateResponse>(channel) {
|
||||
@Override
|
||||
public void processResponse(final ClusterStateResponse clusterStateResponse) {
|
||||
IndicesStatsRequest indicesStatsRequest = new IndicesStatsRequest();
|
||||
|
|
|
@ -27,7 +27,6 @@ import org.elasticsearch.common.Table;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.unit.TimeValue;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -48,11 +47,12 @@ public class RestSnapshotAction extends AbstractCatAction {
|
|||
@Inject
|
||||
public RestSnapshotAction(Settings settings, RestController controller) {
|
||||
super(settings);
|
||||
controller.registerHandler(GET, "/_cat/snapshots", this);
|
||||
controller.registerHandler(GET, "/_cat/snapshots/{repository}", this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doRequest(final RestRequest request, RestChannel channel, NodeClient client) {
|
||||
protected RestChannelConsumer doCatRequest(final RestRequest request, NodeClient client) {
|
||||
GetSnapshotsRequest getSnapshotsRequest = new GetSnapshotsRequest()
|
||||
.repository(request.param("repository"))
|
||||
.snapshots(new String[]{GetSnapshotsRequest.ALL_SNAPSHOTS});
|
||||
|
@ -61,12 +61,13 @@ public class RestSnapshotAction extends AbstractCatAction {
|
|||
|
||||
getSnapshotsRequest.masterNodeTimeout(request.paramAsTime("master_timeout", getSnapshotsRequest.masterNodeTimeout()));
|
||||
|
||||
client.admin().cluster().getSnapshots(getSnapshotsRequest, new RestResponseListener<GetSnapshotsResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(GetSnapshotsResponse getSnapshotsResponse) throws Exception {
|
||||
return RestTable.buildResponse(buildTable(request, getSnapshotsResponse), channel);
|
||||
}
|
||||
});
|
||||
return channel ->
|
||||
client.admin().cluster().getSnapshots(getSnapshotsRequest, new RestResponseListener<GetSnapshotsResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(GetSnapshotsResponse getSnapshotsResponse) throws Exception {
|
||||
return RestTable.buildResponse(buildTable(request, getSnapshotsResponse), channel);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -42,8 +42,6 @@ import java.util.LinkedHashSet;
|
|||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class RestTable {
|
||||
|
||||
public static RestResponse buildResponse(Table table, RestChannel channel) throws Exception {
|
||||
|
|
|
@ -31,7 +31,6 @@ import org.elasticsearch.common.inject.Inject;
|
|||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.transport.InetSocketTransportAddress;
|
||||
import org.elasticsearch.common.unit.TimeValue;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -41,7 +40,10 @@ import org.joda.time.format.DateTimeFormat;
|
|||
import org.joda.time.format.DateTimeFormatter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
import static org.elasticsearch.rest.action.admin.cluster.RestListTasksAction.generateListTasksRequest;
|
||||
|
@ -62,8 +64,9 @@ public class RestTasksAction extends AbstractCatAction {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void doRequest(final RestRequest request, final RestChannel channel, final NodeClient client) {
|
||||
client.admin().cluster().listTasks(generateListTasksRequest(request), new RestResponseListener<ListTasksResponse>(channel) {
|
||||
public RestChannelConsumer doCatRequest(final RestRequest request, final NodeClient client) {
|
||||
return channel ->
|
||||
client.admin().cluster().listTasks(generateListTasksRequest(request), new RestResponseListener<ListTasksResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(ListTasksResponse listTasksResponse) throws Exception {
|
||||
return RestTable.buildResponse(buildTable(request, listTasksResponse), channel);
|
||||
|
@ -71,6 +74,20 @@ public class RestTasksAction extends AbstractCatAction {
|
|||
});
|
||||
}
|
||||
|
||||
private static final Set<String> RESPONSE_PARAMS;
|
||||
|
||||
static {
|
||||
final Set<String> responseParams = new HashSet<>();
|
||||
responseParams.add("detailed");
|
||||
responseParams.addAll(AbstractCatAction.RESPONSE_PARAMS);
|
||||
RESPONSE_PARAMS = Collections.unmodifiableSet(responseParams);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Set<String> responseParams() {
|
||||
return RESPONSE_PARAMS;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Table getTableWithHeader(final RestRequest request) {
|
||||
boolean detailed = request.paramAsBoolean("detailed", false);
|
||||
|
|
|
@ -29,7 +29,6 @@ import org.elasticsearch.common.Table;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.regex.Regex;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.rest.RestChannel;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
|
@ -51,14 +50,14 @@ public class RestTemplatesAction extends AbstractCatAction {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void doRequest(final RestRequest request, RestChannel channel, NodeClient client) {
|
||||
protected RestChannelConsumer doCatRequest(final RestRequest request, NodeClient client) {
|
||||
final String matchPattern = request.hasParam("name") ? request.param("name") : null;
|
||||
final ClusterStateRequest clusterStateRequest = new ClusterStateRequest();
|
||||
clusterStateRequest.clear().metaData(true);
|
||||
clusterStateRequest.local(request.paramAsBoolean("local", clusterStateRequest.local()));
|
||||
clusterStateRequest.masterNodeTimeout(request.paramAsTime("master_timeout", clusterStateRequest.masterNodeTimeout()));
|
||||
|
||||
client.admin().cluster().state(clusterStateRequest, new RestResponseListener<ClusterStateResponse>(channel) {
|
||||
return channel -> client.admin().cluster().state(clusterStateRequest, new RestResponseListener<ClusterStateResponse>(channel) {
|
||||
@Override
|
||||
public RestResponse buildResponse(ClusterStateResponse clusterStateResponse) throws Exception {
|
||||
return RestTable.buildResponse(buildTable(request, clusterStateResponse, matchPattern), channel);
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue