Use namedObject to parse AllocationCommands (#22489)
This removes `AllocationCommandRegistry` entirely and replaces it with `XContentParser#namedObject`, removing another class from guice.
This commit is contained in:
parent
fc1f7c2147
commit
f75ef7adfd
|
@ -1,31 +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.cluster.routing.allocation.command;
|
|
||||||
|
|
||||||
import org.elasticsearch.common.xcontent.ParseFieldRegistry;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Registry of allocation commands. This is it's own class just to make Guice happy.
|
|
||||||
*/
|
|
||||||
public class AllocationCommandRegistry extends ParseFieldRegistry<AllocationCommand.Parser<?>> {
|
|
||||||
public AllocationCommandRegistry() {
|
|
||||||
super("allocation_command");
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -125,11 +125,10 @@ public class AllocationCommands extends ToXContentToBytes {
|
||||||
* }
|
* }
|
||||||
* </pre>
|
* </pre>
|
||||||
* @param parser {@link XContentParser} to read the commands from
|
* @param parser {@link XContentParser} to read the commands from
|
||||||
* @param registry of allocation command parsers
|
|
||||||
* @return {@link AllocationCommands} read
|
* @return {@link AllocationCommands} read
|
||||||
* @throws IOException if something bad happens while reading the stream
|
* @throws IOException if something bad happens while reading the stream
|
||||||
*/
|
*/
|
||||||
public static AllocationCommands fromXContent(XContentParser parser, AllocationCommandRegistry registry) throws IOException {
|
public static AllocationCommands fromXContent(XContentParser parser) throws IOException {
|
||||||
AllocationCommands commands = new AllocationCommands();
|
AllocationCommands commands = new AllocationCommands();
|
||||||
|
|
||||||
XContentParser.Token token = parser.currentToken();
|
XContentParser.Token token = parser.currentToken();
|
||||||
|
@ -158,7 +157,7 @@ public class AllocationCommands extends ToXContentToBytes {
|
||||||
token = parser.nextToken();
|
token = parser.nextToken();
|
||||||
String commandName = parser.currentName();
|
String commandName = parser.currentName();
|
||||||
token = parser.nextToken();
|
token = parser.nextToken();
|
||||||
commands.add(registry.lookup(commandName, parser.getTokenLocation()).fromXContent(parser));
|
commands.add(parser.namedObject(AllocationCommand.class, commandName, null));
|
||||||
// move to the end object one
|
// move to the end object one
|
||||||
if (parser.nextToken() != XContentParser.Token.END_OBJECT) {
|
if (parser.nextToken() != XContentParser.Token.END_OBJECT) {
|
||||||
throw new ElasticsearchParseException("allocation command is malformed, done parsing a command, but didn't get END_OBJECT, got [{}] instead", token);
|
throw new ElasticsearchParseException("allocation command is malformed, done parsing a command, but didn't get END_OBJECT, got [{}] instead", token);
|
||||||
|
|
|
@ -24,18 +24,17 @@ import org.elasticsearch.cluster.routing.allocation.command.AllocateEmptyPrimary
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.AllocateReplicaAllocationCommand;
|
import org.elasticsearch.cluster.routing.allocation.command.AllocateReplicaAllocationCommand;
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.AllocateStalePrimaryAllocationCommand;
|
import org.elasticsearch.cluster.routing.allocation.command.AllocateStalePrimaryAllocationCommand;
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.AllocationCommand;
|
import org.elasticsearch.cluster.routing.allocation.command.AllocationCommand;
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.AllocationCommandRegistry;
|
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.CancelAllocationCommand;
|
import org.elasticsearch.cluster.routing.allocation.command.CancelAllocationCommand;
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.MoveAllocationCommand;
|
import org.elasticsearch.cluster.routing.allocation.command.MoveAllocationCommand;
|
||||||
import org.elasticsearch.common.ParseField;
|
import org.elasticsearch.common.ParseField;
|
||||||
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
||||||
import org.elasticsearch.common.io.stream.NamedWriteableRegistry.Entry;
|
|
||||||
import org.elasticsearch.common.io.stream.Writeable;
|
import org.elasticsearch.common.io.stream.Writeable;
|
||||||
import org.elasticsearch.common.settings.Setting;
|
import org.elasticsearch.common.settings.Setting;
|
||||||
import org.elasticsearch.common.settings.Setting.Property;
|
import org.elasticsearch.common.settings.Setting.Property;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.util.BigArrays;
|
import org.elasticsearch.common.util.BigArrays;
|
||||||
import org.elasticsearch.common.xcontent.NamedXContentRegistry;
|
import org.elasticsearch.common.xcontent.NamedXContentRegistry;
|
||||||
|
import org.elasticsearch.common.xcontent.NamedXContentRegistry.FromXContent;
|
||||||
import org.elasticsearch.http.HttpServerTransport;
|
import org.elasticsearch.http.HttpServerTransport;
|
||||||
import org.elasticsearch.indices.breaker.CircuitBreakerService;
|
import org.elasticsearch.indices.breaker.CircuitBreakerService;
|
||||||
import org.elasticsearch.plugins.NetworkPlugin;
|
import org.elasticsearch.plugins.NetworkPlugin;
|
||||||
|
@ -76,12 +75,8 @@ public final class NetworkModule {
|
||||||
private final Settings settings;
|
private final Settings settings;
|
||||||
private final boolean transportClient;
|
private final boolean transportClient;
|
||||||
|
|
||||||
private static final AllocationCommandRegistry allocationCommandRegistry = new AllocationCommandRegistry();
|
|
||||||
private static final List<NamedWriteableRegistry.Entry> namedWriteables = new ArrayList<>();
|
private static final List<NamedWriteableRegistry.Entry> namedWriteables = new ArrayList<>();
|
||||||
|
private static final List<NamedXContentRegistry.Entry> namedXContents = new ArrayList<>();
|
||||||
private final Map<String, Supplier<Transport>> transportFactories = new HashMap<>();
|
|
||||||
private final Map<String, Supplier<HttpServerTransport>> transportHttpFactories = new HashMap<>();
|
|
||||||
private final List<TransportInterceptor> transportIntercetors = new ArrayList<>();
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
registerAllocationCommand(CancelAllocationCommand::new, CancelAllocationCommand::fromXContent,
|
registerAllocationCommand(CancelAllocationCommand::new, CancelAllocationCommand::fromXContent,
|
||||||
|
@ -99,6 +94,11 @@ public final class NetworkModule {
|
||||||
namedWriteables.add(
|
namedWriteables.add(
|
||||||
new NamedWriteableRegistry.Entry(Task.Status.class, RawTaskStatus.NAME, RawTaskStatus::new));
|
new NamedWriteableRegistry.Entry(Task.Status.class, RawTaskStatus.NAME, RawTaskStatus::new));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final Map<String, Supplier<Transport>> transportFactories = new HashMap<>();
|
||||||
|
private final Map<String, Supplier<HttpServerTransport>> transportHttpFactories = new HashMap<>();
|
||||||
|
private final List<TransportInterceptor> transportIntercetors = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a network module that custom networking classes can be plugged into.
|
* Creates a network module that custom networking classes can be plugged into.
|
||||||
* @param settings The settings for the node
|
* @param settings The settings for the node
|
||||||
|
@ -165,22 +165,19 @@ public final class NetworkModule {
|
||||||
* it is the name under which the command's reader is registered.
|
* it is the name under which the command's reader is registered.
|
||||||
*/
|
*/
|
||||||
private static <T extends AllocationCommand> void registerAllocationCommand(Writeable.Reader<T> reader,
|
private static <T extends AllocationCommand> void registerAllocationCommand(Writeable.Reader<T> reader,
|
||||||
AllocationCommand.Parser<T> parser, ParseField commandName) {
|
FromXContent<T> parser, ParseField commandName) {
|
||||||
allocationCommandRegistry.register(parser, commandName);
|
namedXContents.add(new NamedXContentRegistry.Entry(AllocationCommand.class, commandName, parser));
|
||||||
namedWriteables.add(new Entry(AllocationCommand.class, commandName.getPreferredName(), reader));
|
namedWriteables.add(new NamedWriteableRegistry.Entry(AllocationCommand.class, commandName.getPreferredName(), reader));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public static List<NamedWriteableRegistry.Entry> getNamedWriteables() {
|
||||||
* The registry of allocation command parsers.
|
|
||||||
*/
|
|
||||||
public static AllocationCommandRegistry getAllocationCommandRegistry() {
|
|
||||||
return allocationCommandRegistry;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<Entry> getNamedWriteables() {
|
|
||||||
return Collections.unmodifiableList(namedWriteables);
|
return Collections.unmodifiableList(namedWriteables);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<NamedXContentRegistry.Entry> getNamedXContents() {
|
||||||
|
return Collections.unmodifiableList(namedXContents);
|
||||||
|
}
|
||||||
|
|
||||||
public Supplier<HttpServerTransport> getHttpServerTransportSupplier() {
|
public Supplier<HttpServerTransport> getHttpServerTransportSupplier() {
|
||||||
final String name;
|
final String name;
|
||||||
if (HTTP_TYPE_SETTING.exists(settings)) {
|
if (HTTP_TYPE_SETTING.exists(settings)) {
|
||||||
|
|
|
@ -47,7 +47,6 @@ import org.elasticsearch.cluster.metadata.MetaDataIndexUpgradeService;
|
||||||
import org.elasticsearch.cluster.node.DiscoveryNode;
|
import org.elasticsearch.cluster.node.DiscoveryNode;
|
||||||
import org.elasticsearch.cluster.routing.RoutingService;
|
import org.elasticsearch.cluster.routing.RoutingService;
|
||||||
import org.elasticsearch.cluster.routing.allocation.AllocationService;
|
import org.elasticsearch.cluster.routing.allocation.AllocationService;
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.AllocationCommandRegistry;
|
|
||||||
import org.elasticsearch.cluster.service.ClusterService;
|
import org.elasticsearch.cluster.service.ClusterService;
|
||||||
import org.elasticsearch.common.StopWatch;
|
import org.elasticsearch.common.StopWatch;
|
||||||
import org.elasticsearch.common.component.Lifecycle;
|
import org.elasticsearch.common.component.Lifecycle;
|
||||||
|
@ -361,6 +360,7 @@ public class Node implements Closeable {
|
||||||
.flatMap(Function.identity()).collect(Collectors.toList());
|
.flatMap(Function.identity()).collect(Collectors.toList());
|
||||||
final NamedWriteableRegistry namedWriteableRegistry = new NamedWriteableRegistry(namedWriteables);
|
final NamedWriteableRegistry namedWriteableRegistry = new NamedWriteableRegistry(namedWriteables);
|
||||||
NamedXContentRegistry xContentRegistry = new NamedXContentRegistry(Stream.of(
|
NamedXContentRegistry xContentRegistry = new NamedXContentRegistry(Stream.of(
|
||||||
|
NetworkModule.getNamedXContents().stream(),
|
||||||
searchModule.getNamedXContents().stream(),
|
searchModule.getNamedXContents().stream(),
|
||||||
pluginsService.filterPlugins(Plugin.class).stream()
|
pluginsService.filterPlugins(Plugin.class).stream()
|
||||||
.flatMap(p -> p.getNamedXContent().stream()),
|
.flatMap(p -> p.getNamedXContent().stream()),
|
||||||
|
@ -437,7 +437,6 @@ public class Node implements Closeable {
|
||||||
b.bind(Transport.class).toInstance(transport);
|
b.bind(Transport.class).toInstance(transport);
|
||||||
b.bind(TransportService.class).toInstance(transportService);
|
b.bind(TransportService.class).toInstance(transportService);
|
||||||
b.bind(NetworkService.class).toInstance(networkService);
|
b.bind(NetworkService.class).toInstance(networkService);
|
||||||
b.bind(AllocationCommandRegistry.class).toInstance(NetworkModule.getAllocationCommandRegistry());
|
|
||||||
b.bind(UpdateHelper.class).toInstance(new UpdateHelper(settings, scriptModule.getScriptService()));
|
b.bind(UpdateHelper.class).toInstance(new UpdateHelper(settings, scriptModule.getScriptService()));
|
||||||
b.bind(MetaDataIndexUpgradeService.class).toInstance(new MetaDataIndexUpgradeService(settings,
|
b.bind(MetaDataIndexUpgradeService.class).toInstance(new MetaDataIndexUpgradeService(settings,
|
||||||
xContentRegistry, indicesModule.getMapperRegistry(), settingsModule.getIndexScopedSettings()));
|
xContentRegistry, indicesModule.getMapperRegistry(), settingsModule.getIndexScopedSettings()));
|
||||||
|
|
|
@ -24,11 +24,8 @@ import org.elasticsearch.action.admin.cluster.reroute.ClusterRerouteResponse;
|
||||||
import org.elasticsearch.client.Requests;
|
import org.elasticsearch.client.Requests;
|
||||||
import org.elasticsearch.client.node.NodeClient;
|
import org.elasticsearch.client.node.NodeClient;
|
||||||
import org.elasticsearch.cluster.ClusterState;
|
import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.AllocationCommandRegistry;
|
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.AllocationCommands;
|
import org.elasticsearch.cluster.routing.allocation.command.AllocationCommands;
|
||||||
import org.elasticsearch.common.ParseField;
|
import org.elasticsearch.common.ParseField;
|
||||||
import org.elasticsearch.common.ParseFieldMatcher;
|
|
||||||
import org.elasticsearch.common.ParseFieldMatcherSupplier;
|
|
||||||
import org.elasticsearch.common.Strings;
|
import org.elasticsearch.common.Strings;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
|
@ -49,10 +46,10 @@ import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class RestClusterRerouteAction extends BaseRestHandler {
|
public class RestClusterRerouteAction extends BaseRestHandler {
|
||||||
private static final ObjectParser<ClusterRerouteRequest, ParseContext> PARSER = new ObjectParser<>("cluster_reroute");
|
private static final ObjectParser<ClusterRerouteRequest, Void> PARSER = new ObjectParser<>("cluster_reroute");
|
||||||
static {
|
static {
|
||||||
PARSER.declareField((p, v, c) -> v.commands(AllocationCommands.fromXContent(p, c.registry)),
|
PARSER.declareField((p, v, c) -> v.commands(AllocationCommands.fromXContent(p)), new ParseField("commands"),
|
||||||
new ParseField("commands"), ValueType.OBJECT_ARRAY);
|
ValueType.OBJECT_ARRAY);
|
||||||
PARSER.declareBoolean(ClusterRerouteRequest::dryRun, new ParseField("dry_run"));
|
PARSER.declareBoolean(ClusterRerouteRequest::dryRun, new ParseField("dry_run"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,20 +57,17 @@ public class RestClusterRerouteAction extends BaseRestHandler {
|
||||||
.arrayToCommaDelimitedString(EnumSet.complementOf(EnumSet.of(ClusterState.Metric.METADATA)).toArray());
|
.arrayToCommaDelimitedString(EnumSet.complementOf(EnumSet.of(ClusterState.Metric.METADATA)).toArray());
|
||||||
|
|
||||||
private final SettingsFilter settingsFilter;
|
private final SettingsFilter settingsFilter;
|
||||||
private final AllocationCommandRegistry registry;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public RestClusterRerouteAction(Settings settings, RestController controller, SettingsFilter settingsFilter,
|
public RestClusterRerouteAction(Settings settings, RestController controller, SettingsFilter settingsFilter) {
|
||||||
AllocationCommandRegistry registry) {
|
|
||||||
super(settings);
|
super(settings);
|
||||||
this.settingsFilter = settingsFilter;
|
this.settingsFilter = settingsFilter;
|
||||||
this.registry = registry;
|
|
||||||
controller.registerHandler(RestRequest.Method.POST, "/_cluster/reroute", this);
|
controller.registerHandler(RestRequest.Method.POST, "/_cluster/reroute", this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
|
||||||
ClusterRerouteRequest clusterRerouteRequest = createRequest(request, registry, parseFieldMatcher);
|
ClusterRerouteRequest clusterRerouteRequest = createRequest(request);
|
||||||
|
|
||||||
// by default, return everything but metadata
|
// by default, return everything but metadata
|
||||||
final String metric = request.param("metric");
|
final String metric = request.param("metric");
|
||||||
|
@ -111,31 +105,14 @@ public class RestClusterRerouteAction extends BaseRestHandler {
|
||||||
return RESPONSE_PARAMS;
|
return RESPONSE_PARAMS;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ClusterRerouteRequest createRequest(RestRequest request, AllocationCommandRegistry registry,
|
public static ClusterRerouteRequest createRequest(RestRequest request) throws IOException {
|
||||||
ParseFieldMatcher parseFieldMatcher) throws IOException {
|
|
||||||
ClusterRerouteRequest clusterRerouteRequest = Requests.clusterRerouteRequest();
|
ClusterRerouteRequest clusterRerouteRequest = Requests.clusterRerouteRequest();
|
||||||
clusterRerouteRequest.dryRun(request.paramAsBoolean("dry_run", clusterRerouteRequest.dryRun()));
|
clusterRerouteRequest.dryRun(request.paramAsBoolean("dry_run", clusterRerouteRequest.dryRun()));
|
||||||
clusterRerouteRequest.explain(request.paramAsBoolean("explain", clusterRerouteRequest.explain()));
|
clusterRerouteRequest.explain(request.paramAsBoolean("explain", clusterRerouteRequest.explain()));
|
||||||
clusterRerouteRequest.timeout(request.paramAsTime("timeout", clusterRerouteRequest.timeout()));
|
clusterRerouteRequest.timeout(request.paramAsTime("timeout", clusterRerouteRequest.timeout()));
|
||||||
clusterRerouteRequest.setRetryFailed(request.paramAsBoolean("retry_failed", clusterRerouteRequest.isRetryFailed()));
|
clusterRerouteRequest.setRetryFailed(request.paramAsBoolean("retry_failed", clusterRerouteRequest.isRetryFailed()));
|
||||||
clusterRerouteRequest.masterNodeTimeout(request.paramAsTime("master_timeout", clusterRerouteRequest.masterNodeTimeout()));
|
clusterRerouteRequest.masterNodeTimeout(request.paramAsTime("master_timeout", clusterRerouteRequest.masterNodeTimeout()));
|
||||||
request.applyContentParser(parser -> PARSER.parse(parser, clusterRerouteRequest, new ParseContext(registry, parseFieldMatcher)));
|
request.applyContentParser(parser -> PARSER.parse(parser, clusterRerouteRequest, null));
|
||||||
return clusterRerouteRequest;
|
return clusterRerouteRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class ParseContext implements ParseFieldMatcherSupplier {
|
|
||||||
private final AllocationCommandRegistry registry;
|
|
||||||
private final ParseFieldMatcher parseFieldMatcher;
|
|
||||||
|
|
||||||
private ParseContext(AllocationCommandRegistry registry, ParseFieldMatcher parseFieldMatcher) {
|
|
||||||
this.registry = registry;
|
|
||||||
this.parseFieldMatcher = parseFieldMatcher;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ParseFieldMatcher getParseFieldMatcher() {
|
|
||||||
return parseFieldMatcher;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,15 +25,14 @@ import org.elasticsearch.cluster.routing.allocation.command.AllocateEmptyPrimary
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.AllocateReplicaAllocationCommand;
|
import org.elasticsearch.cluster.routing.allocation.command.AllocateReplicaAllocationCommand;
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.AllocateStalePrimaryAllocationCommand;
|
import org.elasticsearch.cluster.routing.allocation.command.AllocateStalePrimaryAllocationCommand;
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.AllocationCommand;
|
import org.elasticsearch.cluster.routing.allocation.command.AllocationCommand;
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.AllocationCommandRegistry;
|
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.CancelAllocationCommand;
|
import org.elasticsearch.cluster.routing.allocation.command.CancelAllocationCommand;
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.MoveAllocationCommand;
|
import org.elasticsearch.cluster.routing.allocation.command.MoveAllocationCommand;
|
||||||
import org.elasticsearch.common.ParseFieldMatcher;
|
|
||||||
import org.elasticsearch.common.io.stream.BytesStreamOutput;
|
import org.elasticsearch.common.io.stream.BytesStreamOutput;
|
||||||
import org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput;
|
import org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput;
|
||||||
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
||||||
import org.elasticsearch.common.io.stream.StreamInput;
|
import org.elasticsearch.common.io.stream.StreamInput;
|
||||||
import org.elasticsearch.common.network.NetworkModule;
|
import org.elasticsearch.common.network.NetworkModule;
|
||||||
|
import org.elasticsearch.common.xcontent.NamedXContentRegistry;
|
||||||
import org.elasticsearch.common.xcontent.ToXContent;
|
import org.elasticsearch.common.xcontent.ToXContent;
|
||||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||||
import org.elasticsearch.common.xcontent.XContentFactory;
|
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||||
|
@ -71,10 +70,8 @@ public class ClusterRerouteRequestTests extends ESTestCase {
|
||||||
() -> new MoveAllocationCommand(randomAsciiOfLengthBetween(2, 10), between(0, 1000),
|
() -> new MoveAllocationCommand(randomAsciiOfLengthBetween(2, 10), between(0, 1000),
|
||||||
randomAsciiOfLengthBetween(2, 10), randomAsciiOfLengthBetween(2, 10))));
|
randomAsciiOfLengthBetween(2, 10), randomAsciiOfLengthBetween(2, 10))));
|
||||||
private final NamedWriteableRegistry namedWriteableRegistry;
|
private final NamedWriteableRegistry namedWriteableRegistry;
|
||||||
private final AllocationCommandRegistry allocationCommandRegistry;
|
|
||||||
|
|
||||||
public ClusterRerouteRequestTests() {
|
public ClusterRerouteRequestTests() {
|
||||||
allocationCommandRegistry = NetworkModule.getAllocationCommandRegistry();
|
|
||||||
namedWriteableRegistry = new NamedWriteableRegistry(NetworkModule.getNamedWriteables());
|
namedWriteableRegistry = new NamedWriteableRegistry(NetworkModule.getNamedWriteables());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,7 +173,7 @@ public class ClusterRerouteRequestTests extends ESTestCase {
|
||||||
|
|
||||||
private ClusterRerouteRequest roundTripThroughRestRequest(ClusterRerouteRequest original) throws IOException {
|
private ClusterRerouteRequest roundTripThroughRestRequest(ClusterRerouteRequest original) throws IOException {
|
||||||
RestRequest restRequest = toRestRequest(original);
|
RestRequest restRequest = toRestRequest(original);
|
||||||
return RestClusterRerouteAction.createRequest(restRequest, allocationCommandRegistry, ParseFieldMatcher.STRICT);
|
return RestClusterRerouteAction.createRequest(restRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
private RestRequest toRestRequest(ClusterRerouteRequest original) throws IOException {
|
private RestRequest toRestRequest(ClusterRerouteRequest original) throws IOException {
|
||||||
|
@ -216,4 +213,9 @@ public class ClusterRerouteRequestTests extends ESTestCase {
|
||||||
}
|
}
|
||||||
return requestBuilder.build();
|
return requestBuilder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected NamedXContentRegistry xContentRegistry() {
|
||||||
|
return new NamedXContentRegistry(NetworkModule.getNamedXContents());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,6 @@ import org.elasticsearch.cluster.routing.allocation.command.AbstractAllocateAllo
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.AllocateEmptyPrimaryAllocationCommand;
|
import org.elasticsearch.cluster.routing.allocation.command.AllocateEmptyPrimaryAllocationCommand;
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.AllocateReplicaAllocationCommand;
|
import org.elasticsearch.cluster.routing.allocation.command.AllocateReplicaAllocationCommand;
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.AllocateStalePrimaryAllocationCommand;
|
import org.elasticsearch.cluster.routing.allocation.command.AllocateStalePrimaryAllocationCommand;
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.AllocationCommandRegistry;
|
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.AllocationCommands;
|
import org.elasticsearch.cluster.routing.allocation.command.AllocationCommands;
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.CancelAllocationCommand;
|
import org.elasticsearch.cluster.routing.allocation.command.CancelAllocationCommand;
|
||||||
import org.elasticsearch.cluster.routing.allocation.command.MoveAllocationCommand;
|
import org.elasticsearch.cluster.routing.allocation.command.MoveAllocationCommand;
|
||||||
|
@ -45,6 +44,7 @@ import org.elasticsearch.common.io.stream.StreamInput;
|
||||||
import org.elasticsearch.common.logging.Loggers;
|
import org.elasticsearch.common.logging.Loggers;
|
||||||
import org.elasticsearch.common.network.NetworkModule;
|
import org.elasticsearch.common.network.NetworkModule;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
|
import org.elasticsearch.common.xcontent.NamedXContentRegistry;
|
||||||
import org.elasticsearch.common.xcontent.XContentParser;
|
import org.elasticsearch.common.xcontent.XContentParser;
|
||||||
import org.elasticsearch.common.xcontent.json.JsonXContent;
|
import org.elasticsearch.common.xcontent.json.JsonXContent;
|
||||||
import org.elasticsearch.index.IndexNotFoundException;
|
import org.elasticsearch.index.IndexNotFoundException;
|
||||||
|
@ -488,8 +488,7 @@ public class AllocationCommandsTests extends ESAllocationTestCase {
|
||||||
// move two tokens, parser expected to be "on" `commands` field
|
// move two tokens, parser expected to be "on" `commands` field
|
||||||
parser.nextToken();
|
parser.nextToken();
|
||||||
parser.nextToken();
|
parser.nextToken();
|
||||||
AllocationCommandRegistry registry = NetworkModule.getAllocationCommandRegistry();
|
AllocationCommands sCommands = AllocationCommands.fromXContent(parser);
|
||||||
AllocationCommands sCommands = AllocationCommands.fromXContent(parser, registry);
|
|
||||||
|
|
||||||
assertThat(sCommands.commands().size(), equalTo(5));
|
assertThat(sCommands.commands().size(), equalTo(5));
|
||||||
assertThat(((AllocateEmptyPrimaryAllocationCommand) (sCommands.commands().get(0))).shardId(), equalTo(1));
|
assertThat(((AllocateEmptyPrimaryAllocationCommand) (sCommands.commands().get(0))).shardId(), equalTo(1));
|
||||||
|
@ -516,4 +515,9 @@ public class AllocationCommandsTests extends ESAllocationTestCase {
|
||||||
assertThat(((CancelAllocationCommand) (sCommands.commands().get(4))).node(), equalTo("node5"));
|
assertThat(((CancelAllocationCommand) (sCommands.commands().get(4))).node(), equalTo("node5"));
|
||||||
assertThat(((CancelAllocationCommand) (sCommands.commands().get(4))).allowPrimary(), equalTo(true));
|
assertThat(((CancelAllocationCommand) (sCommands.commands().get(4))).allowPrimary(), equalTo(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected NamedXContentRegistry xContentRegistry() {
|
||||||
|
return new NamedXContentRegistry(NetworkModule.getNamedXContents());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue