Fold RestGetAllSettingsAction in RestGetSettingsAction (#30561)
We currently have a separate endpoint for retrieving settings from all indices. We introduced such endpoint when removing comma-separated feature parsing for GetIndicesAction. The RestGetAllSettingsAction duplicates the code to print out the response that we already have in GetSettingsResponse (since it became a ToXContentObject), and uses the get index API internally instead of the get settings API, but the response is the same, hence we can fold get all settings and get settings in a single API, which is what this commit does.
This commit is contained in:
parent
4a4e3d70d5
commit
2f4212b80a
|
@ -253,7 +253,6 @@ import org.elasticsearch.rest.action.admin.indices.RestForceMergeAction;
|
||||||
import org.elasticsearch.rest.action.admin.indices.RestGetAliasesAction;
|
import org.elasticsearch.rest.action.admin.indices.RestGetAliasesAction;
|
||||||
import org.elasticsearch.rest.action.admin.indices.RestGetAllAliasesAction;
|
import org.elasticsearch.rest.action.admin.indices.RestGetAllAliasesAction;
|
||||||
import org.elasticsearch.rest.action.admin.indices.RestGetAllMappingsAction;
|
import org.elasticsearch.rest.action.admin.indices.RestGetAllMappingsAction;
|
||||||
import org.elasticsearch.rest.action.admin.indices.RestGetAllSettingsAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.RestGetFieldMappingAction;
|
import org.elasticsearch.rest.action.admin.indices.RestGetFieldMappingAction;
|
||||||
import org.elasticsearch.rest.action.admin.indices.RestGetIndexTemplateAction;
|
import org.elasticsearch.rest.action.admin.indices.RestGetIndexTemplateAction;
|
||||||
import org.elasticsearch.rest.action.admin.indices.RestGetIndicesAction;
|
import org.elasticsearch.rest.action.admin.indices.RestGetIndicesAction;
|
||||||
|
@ -558,7 +557,6 @@ public class ActionModule extends AbstractModule {
|
||||||
|
|
||||||
registerHandler.accept(new RestGetAllAliasesAction(settings, restController));
|
registerHandler.accept(new RestGetAllAliasesAction(settings, restController));
|
||||||
registerHandler.accept(new RestGetAllMappingsAction(settings, restController));
|
registerHandler.accept(new RestGetAllMappingsAction(settings, restController));
|
||||||
registerHandler.accept(new RestGetAllSettingsAction(settings, restController, indexScopedSettings, settingsFilter));
|
|
||||||
registerHandler.accept(new RestGetIndicesAction(settings, restController, indexScopedSettings, settingsFilter));
|
registerHandler.accept(new RestGetIndicesAction(settings, restController, indexScopedSettings, settingsFilter));
|
||||||
registerHandler.accept(new RestIndicesStatsAction(settings, restController));
|
registerHandler.accept(new RestIndicesStatsAction(settings, restController));
|
||||||
registerHandler.accept(new RestIndicesSegmentsAction(settings, restController));
|
registerHandler.accept(new RestIndicesSegmentsAction(settings, restController));
|
||||||
|
|
|
@ -1,121 +0,0 @@
|
||||||
/*
|
|
||||||
* Licensed to Elasticsearch under one or more contributor
|
|
||||||
* license agreements. See the NOTICE file distributed with
|
|
||||||
* this work for additional information regarding copyright
|
|
||||||
* ownership. Elasticsearch licenses this file to you under
|
|
||||||
* the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
* not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing,
|
|
||||||
* software distributed under the License is distributed on an
|
|
||||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
* KIND, either express or implied. See the License for the
|
|
||||||
* specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.elasticsearch.rest.action.admin.indices;
|
|
||||||
|
|
||||||
import org.elasticsearch.action.admin.indices.get.GetIndexRequest;
|
|
||||||
import org.elasticsearch.action.admin.indices.get.GetIndexRequest.Feature;
|
|
||||||
import org.elasticsearch.action.admin.indices.get.GetIndexResponse;
|
|
||||||
import org.elasticsearch.action.support.IndicesOptions;
|
|
||||||
import org.elasticsearch.client.node.NodeClient;
|
|
||||||
import org.elasticsearch.cluster.metadata.AliasMetaData;
|
|
||||||
import org.elasticsearch.common.Strings;
|
|
||||||
import org.elasticsearch.common.settings.IndexScopedSettings;
|
|
||||||
import org.elasticsearch.common.settings.Settings;
|
|
||||||
import org.elasticsearch.common.settings.SettingsFilter;
|
|
||||||
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.RestController;
|
|
||||||
import org.elasticsearch.rest.RestRequest;
|
|
||||||
import org.elasticsearch.rest.RestResponse;
|
|
||||||
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.RestRequest.Method.HEAD;
|
|
||||||
import static org.elasticsearch.rest.RestStatus.OK;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The REST handler for retrieving all settings
|
|
||||||
*/
|
|
||||||
public class RestGetAllSettingsAction extends BaseRestHandler {
|
|
||||||
|
|
||||||
private final IndexScopedSettings indexScopedSettings;
|
|
||||||
private final SettingsFilter settingsFilter;
|
|
||||||
|
|
||||||
public RestGetAllSettingsAction(final Settings settings, final RestController controller,
|
|
||||||
final IndexScopedSettings indexScopedSettings, final SettingsFilter settingsFilter) {
|
|
||||||
super(settings);
|
|
||||||
this.indexScopedSettings = indexScopedSettings;
|
|
||||||
controller.registerHandler(GET, "/_settings", this);
|
|
||||||
this.settingsFilter = settingsFilter;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return "get_all_settings_action";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
|
||||||
final GetIndexRequest getIndexRequest = new GetIndexRequest();
|
|
||||||
getIndexRequest.indices(Strings.EMPTY_ARRAY);
|
|
||||||
getIndexRequest.features(Feature.SETTINGS);
|
|
||||||
getIndexRequest.indicesOptions(IndicesOptions.fromRequest(request, getIndexRequest.indicesOptions()));
|
|
||||||
getIndexRequest.local(request.paramAsBoolean("local", getIndexRequest.local()));
|
|
||||||
getIndexRequest.humanReadable(request.paramAsBoolean("human", false));
|
|
||||||
// This is required so the "flat_settings" parameter counts as consumed
|
|
||||||
request.paramAsBoolean("flat_settings", false);
|
|
||||||
final boolean defaults = request.paramAsBoolean("include_defaults", false);
|
|
||||||
return channel -> client.admin().indices().getIndex(getIndexRequest, new RestBuilderListener<GetIndexResponse>(channel) {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public RestResponse buildResponse(final GetIndexResponse response, final XContentBuilder builder) throws Exception {
|
|
||||||
builder.startObject();
|
|
||||||
{
|
|
||||||
for (final String index : response.indices()) {
|
|
||||||
builder.startObject(index);
|
|
||||||
{
|
|
||||||
writeSettings(response.settings().get(index), builder, request, defaults);
|
|
||||||
}
|
|
||||||
builder.endObject();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
builder.endObject();
|
|
||||||
|
|
||||||
return new BytesRestResponse(OK, builder);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void writeSettings(final Settings settings, final XContentBuilder builder,
|
|
||||||
final Params params, final boolean defaults) throws IOException {
|
|
||||||
builder.startObject("settings");
|
|
||||||
{
|
|
||||||
settings.toXContent(builder, params);
|
|
||||||
}
|
|
||||||
builder.endObject();
|
|
||||||
if (defaults) {
|
|
||||||
builder.startObject("defaults");
|
|
||||||
{
|
|
||||||
settingsFilter
|
|
||||||
.filter(indexScopedSettings.diff(settings, RestGetAllSettingsAction.this.settings))
|
|
||||||
.toXContent(builder, request);
|
|
||||||
}
|
|
||||||
builder.endObject();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -19,16 +19,12 @@
|
||||||
|
|
||||||
package org.elasticsearch.rest.action.admin.indices;
|
package org.elasticsearch.rest.action.admin.indices;
|
||||||
|
|
||||||
import com.carrotsearch.hppc.cursors.ObjectObjectCursor;
|
|
||||||
|
|
||||||
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequest;
|
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequest;
|
||||||
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsResponse;
|
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsResponse;
|
||||||
import org.elasticsearch.action.support.IndicesOptions;
|
import org.elasticsearch.action.support.IndicesOptions;
|
||||||
import org.elasticsearch.client.node.NodeClient;
|
import org.elasticsearch.client.node.NodeClient;
|
||||||
import org.elasticsearch.common.Strings;
|
import org.elasticsearch.common.Strings;
|
||||||
import org.elasticsearch.common.settings.IndexScopedSettings;
|
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.settings.SettingsFilter;
|
|
||||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||||
import org.elasticsearch.rest.BaseRestHandler;
|
import org.elasticsearch.rest.BaseRestHandler;
|
||||||
import org.elasticsearch.rest.BytesRestResponse;
|
import org.elasticsearch.rest.BytesRestResponse;
|
||||||
|
@ -46,6 +42,7 @@ public class RestGetSettingsAction extends BaseRestHandler {
|
||||||
|
|
||||||
public RestGetSettingsAction(Settings settings, RestController controller) {
|
public RestGetSettingsAction(Settings settings, RestController controller) {
|
||||||
super(settings);
|
super(settings);
|
||||||
|
controller.registerHandler(GET, "/_settings", this);
|
||||||
controller.registerHandler(GET, "/_settings/{name}", this);
|
controller.registerHandler(GET, "/_settings/{name}", this);
|
||||||
controller.registerHandler(GET, "/{index}/_settings", this);
|
controller.registerHandler(GET, "/{index}/_settings", this);
|
||||||
controller.registerHandler(GET, "/{index}/_settings/{name}", this);
|
controller.registerHandler(GET, "/{index}/_settings/{name}", this);
|
||||||
|
|
Loading…
Reference in New Issue