Merge pull request #15434 from rjernst/http_type
Expose http.type setting, and collapse al(most all) modules relating to transport/http
This commit is contained in:
commit
a2b8f4b90a
|
@ -1,37 +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.client.transport;
|
|
||||||
|
|
||||||
import org.elasticsearch.client.support.Headers;
|
|
||||||
import org.elasticsearch.client.transport.support.TransportProxyClient;
|
|
||||||
import org.elasticsearch.common.inject.AbstractModule;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class ClientTransportModule extends AbstractModule {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure() {
|
|
||||||
bind(Headers.class).asEagerSingleton();
|
|
||||||
bind(TransportProxyClient.class).asEagerSingleton();
|
|
||||||
bind(TransportClientNodesService.class).asEagerSingleton();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -32,7 +32,6 @@ import org.elasticsearch.client.support.Headers;
|
||||||
import org.elasticsearch.client.transport.support.TransportProxyClient;
|
import org.elasticsearch.client.transport.support.TransportProxyClient;
|
||||||
import org.elasticsearch.cluster.ClusterNameModule;
|
import org.elasticsearch.cluster.ClusterNameModule;
|
||||||
import org.elasticsearch.cluster.node.DiscoveryNode;
|
import org.elasticsearch.cluster.node.DiscoveryNode;
|
||||||
import org.elasticsearch.common.collect.Tuple;
|
|
||||||
import org.elasticsearch.common.component.LifecycleComponent;
|
import org.elasticsearch.common.component.LifecycleComponent;
|
||||||
import org.elasticsearch.common.inject.Injector;
|
import org.elasticsearch.common.inject.Injector;
|
||||||
import org.elasticsearch.common.inject.Module;
|
import org.elasticsearch.common.inject.Module;
|
||||||
|
@ -43,19 +42,15 @@ import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.settings.SettingsFilter;
|
import org.elasticsearch.common.settings.SettingsFilter;
|
||||||
import org.elasticsearch.common.settings.SettingsModule;
|
import org.elasticsearch.common.settings.SettingsModule;
|
||||||
import org.elasticsearch.common.transport.TransportAddress;
|
import org.elasticsearch.common.transport.TransportAddress;
|
||||||
import org.elasticsearch.env.Environment;
|
|
||||||
import org.elasticsearch.env.EnvironmentModule;
|
|
||||||
import org.elasticsearch.indices.breaker.CircuitBreakerModule;
|
import org.elasticsearch.indices.breaker.CircuitBreakerModule;
|
||||||
import org.elasticsearch.monitor.MonitorService;
|
import org.elasticsearch.monitor.MonitorService;
|
||||||
import org.elasticsearch.node.internal.InternalSettingsPreparer;
|
import org.elasticsearch.node.internal.InternalSettingsPreparer;
|
||||||
import org.elasticsearch.node.settings.NodeSettingsService;
|
|
||||||
import org.elasticsearch.plugins.Plugin;
|
import org.elasticsearch.plugins.Plugin;
|
||||||
import org.elasticsearch.plugins.PluginsModule;
|
import org.elasticsearch.plugins.PluginsModule;
|
||||||
import org.elasticsearch.plugins.PluginsService;
|
import org.elasticsearch.plugins.PluginsService;
|
||||||
import org.elasticsearch.search.SearchModule;
|
import org.elasticsearch.search.SearchModule;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.threadpool.ThreadPoolModule;
|
import org.elasticsearch.threadpool.ThreadPoolModule;
|
||||||
import org.elasticsearch.transport.TransportModule;
|
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
import org.elasticsearch.transport.netty.NettyTransport;
|
import org.elasticsearch.transport.netty.NettyTransport;
|
||||||
|
|
||||||
|
@ -69,7 +64,7 @@ import static org.elasticsearch.common.settings.Settings.settingsBuilder;
|
||||||
* The transport client allows to create a client that is not part of the cluster, but simply connects to one
|
* The transport client allows to create a client that is not part of the cluster, but simply connects to one
|
||||||
* or more nodes directly by adding their respective addresses using {@link #addTransportAddress(org.elasticsearch.common.transport.TransportAddress)}.
|
* or more nodes directly by adding their respective addresses using {@link #addTransportAddress(org.elasticsearch.common.transport.TransportAddress)}.
|
||||||
* <p>
|
* <p>
|
||||||
* The transport client important modules used is the {@link org.elasticsearch.transport.TransportModule} which is
|
* The transport client important modules used is the {@link org.elasticsearch.common.network.NetworkModule} which is
|
||||||
* started in client mode (only connects, no bind).
|
* started in client mode (only connects, no bind).
|
||||||
*/
|
*/
|
||||||
public class TransportClient extends AbstractClient {
|
public class TransportClient extends AbstractClient {
|
||||||
|
@ -143,10 +138,9 @@ public class TransportClient extends AbstractClient {
|
||||||
}
|
}
|
||||||
modules.add(new PluginsModule(pluginsService));
|
modules.add(new PluginsModule(pluginsService));
|
||||||
modules.add(new SettingsModule(this.settings, settingsFilter ));
|
modules.add(new SettingsModule(this.settings, settingsFilter ));
|
||||||
modules.add(new NetworkModule(networkService));
|
modules.add(new NetworkModule(networkService, this.settings, true));
|
||||||
modules.add(new ClusterNameModule(this.settings));
|
modules.add(new ClusterNameModule(this.settings));
|
||||||
modules.add(new ThreadPoolModule(threadPool));
|
modules.add(new ThreadPoolModule(threadPool));
|
||||||
modules.add(new TransportModule(this.settings));
|
|
||||||
modules.add(new SearchModule() {
|
modules.add(new SearchModule() {
|
||||||
@Override
|
@Override
|
||||||
protected void configure() {
|
protected void configure() {
|
||||||
|
@ -154,7 +148,6 @@ public class TransportClient extends AbstractClient {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
modules.add(new ActionModule(true));
|
modules.add(new ActionModule(true));
|
||||||
modules.add(new ClientTransportModule());
|
|
||||||
modules.add(new CircuitBreakerModule(this.settings));
|
modules.add(new CircuitBreakerModule(this.settings));
|
||||||
|
|
||||||
pluginsService.processModules(modules);
|
pluginsService.processModules(modules);
|
||||||
|
|
|
@ -19,21 +19,362 @@
|
||||||
|
|
||||||
package org.elasticsearch.common.network;
|
package org.elasticsearch.common.network;
|
||||||
|
|
||||||
|
import org.elasticsearch.client.support.Headers;
|
||||||
|
import org.elasticsearch.client.transport.TransportClientNodesService;
|
||||||
|
import org.elasticsearch.client.transport.support.TransportProxyClient;
|
||||||
|
import org.elasticsearch.cluster.node.DiscoveryNode;
|
||||||
import org.elasticsearch.common.inject.AbstractModule;
|
import org.elasticsearch.common.inject.AbstractModule;
|
||||||
|
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
||||||
|
import org.elasticsearch.common.settings.Settings;
|
||||||
|
import org.elasticsearch.common.util.ExtensionPoint;
|
||||||
|
import org.elasticsearch.http.HttpServer;
|
||||||
|
import org.elasticsearch.http.HttpServerTransport;
|
||||||
|
import org.elasticsearch.http.netty.NettyHttpServerTransport;
|
||||||
|
import org.elasticsearch.rest.RestController;
|
||||||
|
import org.elasticsearch.rest.RestHandler;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.health.RestClusterHealthAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.node.hotthreads.RestNodesHotThreadsAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.node.info.RestNodesInfoAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.node.stats.RestNodesStatsAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.repositories.delete.RestDeleteRepositoryAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.repositories.get.RestGetRepositoriesAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.repositories.put.RestPutRepositoryAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.repositories.verify.RestVerifyRepositoryAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.reroute.RestClusterRerouteAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.settings.RestClusterGetSettingsAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.settings.RestClusterUpdateSettingsAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.shards.RestClusterSearchShardsAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.snapshots.create.RestCreateSnapshotAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.snapshots.delete.RestDeleteSnapshotAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.snapshots.get.RestGetSnapshotsAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.snapshots.restore.RestRestoreSnapshotAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.snapshots.status.RestSnapshotsStatusAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.state.RestClusterStateAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.stats.RestClusterStatsAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.cluster.tasks.RestPendingClusterTasksAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.alias.RestIndicesAliasesAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.alias.delete.RestIndexDeleteAliasesAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.alias.get.RestGetAliasesAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.alias.get.RestGetIndicesAliasesAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.alias.head.RestAliasesExistAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.alias.put.RestIndexPutAliasAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.analyze.RestAnalyzeAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.cache.clear.RestClearIndicesCacheAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.close.RestCloseIndexAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.create.RestCreateIndexAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.delete.RestDeleteIndexAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.exists.indices.RestIndicesExistsAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.exists.types.RestTypesExistsAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.flush.RestFlushAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.flush.RestSyncedFlushAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.forcemerge.RestForceMergeAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.get.RestGetIndicesAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.mapping.get.RestGetFieldMappingAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.mapping.get.RestGetMappingAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.mapping.put.RestPutMappingAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.open.RestOpenIndexAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.recovery.RestRecoveryAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.refresh.RestRefreshAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.segments.RestIndicesSegmentsAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.settings.RestGetSettingsAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.settings.RestUpdateSettingsAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.shards.RestIndicesShardStoresAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.stats.RestIndicesStatsAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.template.delete.RestDeleteIndexTemplateAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.template.get.RestGetIndexTemplateAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.template.head.RestHeadIndexTemplateAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.template.put.RestPutIndexTemplateAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.upgrade.RestUpgradeAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.validate.query.RestValidateQueryAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.validate.template.RestRenderSearchTemplateAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.warmer.delete.RestDeleteWarmerAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.warmer.get.RestGetWarmerAction;
|
||||||
|
import org.elasticsearch.rest.action.admin.indices.warmer.put.RestPutWarmerAction;
|
||||||
|
import org.elasticsearch.rest.action.bulk.RestBulkAction;
|
||||||
|
import org.elasticsearch.rest.action.cat.AbstractCatAction;
|
||||||
|
import org.elasticsearch.rest.action.cat.RestAliasAction;
|
||||||
|
import org.elasticsearch.rest.action.cat.RestAllocationAction;
|
||||||
|
import org.elasticsearch.rest.action.cat.RestCatAction;
|
||||||
|
import org.elasticsearch.rest.action.cat.RestFielddataAction;
|
||||||
|
import org.elasticsearch.rest.action.cat.RestHealthAction;
|
||||||
|
import org.elasticsearch.rest.action.cat.RestIndicesAction;
|
||||||
|
import org.elasticsearch.rest.action.cat.RestMasterAction;
|
||||||
|
import org.elasticsearch.rest.action.cat.RestNodeAttrsAction;
|
||||||
|
import org.elasticsearch.rest.action.cat.RestNodesAction;
|
||||||
|
import org.elasticsearch.rest.action.cat.RestPluginsAction;
|
||||||
|
import org.elasticsearch.rest.action.cat.RestRepositoriesAction;
|
||||||
|
import org.elasticsearch.rest.action.cat.RestSegmentsAction;
|
||||||
|
import org.elasticsearch.rest.action.cat.RestShardsAction;
|
||||||
|
import org.elasticsearch.rest.action.cat.RestSnapshotAction;
|
||||||
|
import org.elasticsearch.rest.action.cat.RestThreadPoolAction;
|
||||||
|
import org.elasticsearch.rest.action.delete.RestDeleteAction;
|
||||||
|
import org.elasticsearch.rest.action.explain.RestExplainAction;
|
||||||
|
import org.elasticsearch.rest.action.fieldstats.RestFieldStatsAction;
|
||||||
|
import org.elasticsearch.rest.action.get.RestGetAction;
|
||||||
|
import org.elasticsearch.rest.action.get.RestGetSourceAction;
|
||||||
|
import org.elasticsearch.rest.action.get.RestHeadAction;
|
||||||
|
import org.elasticsearch.rest.action.get.RestMultiGetAction;
|
||||||
|
import org.elasticsearch.rest.action.index.RestIndexAction;
|
||||||
|
import org.elasticsearch.rest.action.main.RestMainAction;
|
||||||
|
import org.elasticsearch.rest.action.percolate.RestMultiPercolateAction;
|
||||||
|
import org.elasticsearch.rest.action.percolate.RestPercolateAction;
|
||||||
|
import org.elasticsearch.rest.action.script.RestDeleteIndexedScriptAction;
|
||||||
|
import org.elasticsearch.rest.action.script.RestGetIndexedScriptAction;
|
||||||
|
import org.elasticsearch.rest.action.script.RestPutIndexedScriptAction;
|
||||||
|
import org.elasticsearch.rest.action.search.RestClearScrollAction;
|
||||||
|
import org.elasticsearch.rest.action.search.RestMultiSearchAction;
|
||||||
|
import org.elasticsearch.rest.action.search.RestSearchAction;
|
||||||
|
import org.elasticsearch.rest.action.search.RestSearchScrollAction;
|
||||||
|
import org.elasticsearch.rest.action.suggest.RestSuggestAction;
|
||||||
|
import org.elasticsearch.rest.action.template.RestDeleteSearchTemplateAction;
|
||||||
|
import org.elasticsearch.rest.action.template.RestGetSearchTemplateAction;
|
||||||
|
import org.elasticsearch.rest.action.template.RestPutSearchTemplateAction;
|
||||||
|
import org.elasticsearch.rest.action.termvectors.RestMultiTermVectorsAction;
|
||||||
|
import org.elasticsearch.rest.action.termvectors.RestTermVectorsAction;
|
||||||
|
import org.elasticsearch.rest.action.update.RestUpdateAction;
|
||||||
|
import org.elasticsearch.transport.Transport;
|
||||||
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
import org.elasticsearch.transport.local.LocalTransport;
|
||||||
|
import org.elasticsearch.transport.netty.NettyTransport;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* A module to handle registering and binding all network related classes.
|
||||||
*/
|
*/
|
||||||
public class NetworkModule extends AbstractModule {
|
public class NetworkModule extends AbstractModule {
|
||||||
|
|
||||||
private final NetworkService networkService;
|
public static final String TRANSPORT_TYPE_KEY = "transport.type";
|
||||||
|
public static final String TRANSPORT_SERVICE_TYPE_KEY = "transport.service.type";
|
||||||
|
|
||||||
public NetworkModule(NetworkService networkService) {
|
public static final String LOCAL_TRANSPORT = "local";
|
||||||
|
public static final String NETTY_TRANSPORT = "netty";
|
||||||
|
|
||||||
|
public static final String HTTP_TYPE_KEY = "http.type";
|
||||||
|
public static final String HTTP_ENABLED = "http.enabled";
|
||||||
|
|
||||||
|
private static final List<Class<? extends RestHandler>> builtinRestHandlers = Arrays.asList(
|
||||||
|
RestMainAction.class,
|
||||||
|
|
||||||
|
RestNodesInfoAction.class,
|
||||||
|
RestNodesStatsAction.class,
|
||||||
|
RestNodesHotThreadsAction.class,
|
||||||
|
RestClusterStatsAction.class,
|
||||||
|
RestClusterStateAction.class,
|
||||||
|
RestClusterHealthAction.class,
|
||||||
|
RestClusterUpdateSettingsAction.class,
|
||||||
|
RestClusterGetSettingsAction.class,
|
||||||
|
RestClusterRerouteAction.class,
|
||||||
|
RestClusterSearchShardsAction.class,
|
||||||
|
RestPendingClusterTasksAction.class,
|
||||||
|
RestPutRepositoryAction.class,
|
||||||
|
RestGetRepositoriesAction.class,
|
||||||
|
RestDeleteRepositoryAction.class,
|
||||||
|
RestVerifyRepositoryAction.class,
|
||||||
|
RestGetSnapshotsAction.class,
|
||||||
|
RestCreateSnapshotAction.class,
|
||||||
|
RestRestoreSnapshotAction.class,
|
||||||
|
RestDeleteSnapshotAction.class,
|
||||||
|
RestSnapshotsStatusAction.class,
|
||||||
|
|
||||||
|
RestIndicesExistsAction.class,
|
||||||
|
RestTypesExistsAction.class,
|
||||||
|
RestGetIndicesAction.class,
|
||||||
|
RestIndicesStatsAction.class,
|
||||||
|
RestIndicesSegmentsAction.class,
|
||||||
|
RestIndicesShardStoresAction.class,
|
||||||
|
RestGetAliasesAction.class,
|
||||||
|
RestAliasesExistAction.class,
|
||||||
|
RestIndexDeleteAliasesAction.class,
|
||||||
|
RestIndexPutAliasAction.class,
|
||||||
|
RestIndicesAliasesAction.class,
|
||||||
|
RestGetIndicesAliasesAction.class,
|
||||||
|
RestCreateIndexAction.class,
|
||||||
|
RestDeleteIndexAction.class,
|
||||||
|
RestCloseIndexAction.class,
|
||||||
|
RestOpenIndexAction.class,
|
||||||
|
|
||||||
|
RestUpdateSettingsAction.class,
|
||||||
|
RestGetSettingsAction.class,
|
||||||
|
|
||||||
|
RestAnalyzeAction.class,
|
||||||
|
RestGetIndexTemplateAction.class,
|
||||||
|
RestPutIndexTemplateAction.class,
|
||||||
|
RestDeleteIndexTemplateAction.class,
|
||||||
|
RestHeadIndexTemplateAction.class,
|
||||||
|
|
||||||
|
RestPutWarmerAction.class,
|
||||||
|
RestDeleteWarmerAction.class,
|
||||||
|
RestGetWarmerAction.class,
|
||||||
|
|
||||||
|
RestPutMappingAction.class,
|
||||||
|
RestGetMappingAction.class,
|
||||||
|
RestGetFieldMappingAction.class,
|
||||||
|
|
||||||
|
RestRefreshAction.class,
|
||||||
|
RestFlushAction.class,
|
||||||
|
RestSyncedFlushAction.class,
|
||||||
|
RestForceMergeAction.class,
|
||||||
|
RestUpgradeAction.class,
|
||||||
|
RestClearIndicesCacheAction.class,
|
||||||
|
|
||||||
|
RestIndexAction.class,
|
||||||
|
RestGetAction.class,
|
||||||
|
RestGetSourceAction.class,
|
||||||
|
RestHeadAction.class,
|
||||||
|
RestMultiGetAction.class,
|
||||||
|
RestDeleteAction.class,
|
||||||
|
org.elasticsearch.rest.action.count.RestCountAction.class,
|
||||||
|
RestSuggestAction.class,
|
||||||
|
RestTermVectorsAction.class,
|
||||||
|
RestMultiTermVectorsAction.class,
|
||||||
|
RestBulkAction.class,
|
||||||
|
RestUpdateAction.class,
|
||||||
|
RestPercolateAction.class,
|
||||||
|
RestMultiPercolateAction.class,
|
||||||
|
|
||||||
|
RestSearchAction.class,
|
||||||
|
RestSearchScrollAction.class,
|
||||||
|
RestClearScrollAction.class,
|
||||||
|
RestMultiSearchAction.class,
|
||||||
|
RestRenderSearchTemplateAction.class,
|
||||||
|
|
||||||
|
RestValidateQueryAction.class,
|
||||||
|
|
||||||
|
RestExplainAction.class,
|
||||||
|
|
||||||
|
RestRecoveryAction.class,
|
||||||
|
|
||||||
|
// Templates API
|
||||||
|
RestGetSearchTemplateAction.class,
|
||||||
|
RestPutSearchTemplateAction.class,
|
||||||
|
RestDeleteSearchTemplateAction.class,
|
||||||
|
|
||||||
|
// Scripts API
|
||||||
|
RestGetIndexedScriptAction.class,
|
||||||
|
RestPutIndexedScriptAction.class,
|
||||||
|
RestDeleteIndexedScriptAction.class,
|
||||||
|
|
||||||
|
RestFieldStatsAction.class,
|
||||||
|
|
||||||
|
// no abstract cat action
|
||||||
|
RestCatAction.class
|
||||||
|
);
|
||||||
|
|
||||||
|
private static final List<Class<? extends AbstractCatAction>> builtinCatHandlers = Arrays.asList(
|
||||||
|
RestAllocationAction.class,
|
||||||
|
RestShardsAction.class,
|
||||||
|
RestMasterAction.class,
|
||||||
|
RestNodesAction.class,
|
||||||
|
RestIndicesAction.class,
|
||||||
|
RestSegmentsAction.class,
|
||||||
|
// Fully qualified to prevent interference with rest.action.count.RestCountAction
|
||||||
|
org.elasticsearch.rest.action.cat.RestCountAction.class,
|
||||||
|
// Fully qualified to prevent interference with rest.action.indices.RestRecoveryAction
|
||||||
|
org.elasticsearch.rest.action.cat.RestRecoveryAction.class,
|
||||||
|
RestHealthAction.class,
|
||||||
|
org.elasticsearch.rest.action.cat.RestPendingClusterTasksAction.class,
|
||||||
|
RestAliasAction.class,
|
||||||
|
RestThreadPoolAction.class,
|
||||||
|
RestPluginsAction.class,
|
||||||
|
RestFielddataAction.class,
|
||||||
|
RestNodeAttrsAction.class,
|
||||||
|
RestRepositoriesAction.class,
|
||||||
|
RestSnapshotAction.class
|
||||||
|
);
|
||||||
|
|
||||||
|
private final NetworkService networkService;
|
||||||
|
private final Settings settings;
|
||||||
|
private final boolean transportClient;
|
||||||
|
|
||||||
|
private final ExtensionPoint.SelectedType<TransportService> transportServiceTypes = new ExtensionPoint.SelectedType<>("transport_service", TransportService.class);
|
||||||
|
private final ExtensionPoint.SelectedType<Transport> transportTypes = new ExtensionPoint.SelectedType<>("transport", Transport.class);
|
||||||
|
private final ExtensionPoint.SelectedType<HttpServerTransport> httpTransportTypes = new ExtensionPoint.SelectedType<>("http_transport", HttpServerTransport.class);
|
||||||
|
private final ExtensionPoint.ClassSet<RestHandler> restHandlers = new ExtensionPoint.ClassSet<>("rest_handler", RestHandler.class);
|
||||||
|
// we must separate the cat rest handlers so RestCatAction can collect them...
|
||||||
|
private final ExtensionPoint.ClassSet<AbstractCatAction> catHandlers = new ExtensionPoint.ClassSet<>("cat_handler", AbstractCatAction.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a network module that custom networking classes can be plugged into.
|
||||||
|
*
|
||||||
|
* @param networkService A constructed network service object to bind.
|
||||||
|
* @param settings The settings for the node
|
||||||
|
* @param transportClient True if only transport classes should be allowed to be registered, false otherwise.
|
||||||
|
*/
|
||||||
|
public NetworkModule(NetworkService networkService, Settings settings, boolean transportClient) {
|
||||||
this.networkService = networkService;
|
this.networkService = networkService;
|
||||||
|
this.settings = settings;
|
||||||
|
this.transportClient = transportClient;
|
||||||
|
registerTransportService(NETTY_TRANSPORT, TransportService.class);
|
||||||
|
registerTransport(LOCAL_TRANSPORT, LocalTransport.class);
|
||||||
|
registerTransport(NETTY_TRANSPORT, NettyTransport.class);
|
||||||
|
|
||||||
|
if (transportClient == false) {
|
||||||
|
registerHttpTransport(NETTY_TRANSPORT, NettyHttpServerTransport.class);
|
||||||
|
|
||||||
|
for (Class<? extends AbstractCatAction> catAction : builtinCatHandlers) {
|
||||||
|
catHandlers.registerExtension(catAction);
|
||||||
|
}
|
||||||
|
for (Class<? extends RestHandler> restAction : builtinRestHandlers) {
|
||||||
|
restHandlers.registerExtension(restAction);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Adds a transport service implementation that can be selected by setting {@link #TRANSPORT_SERVICE_TYPE_KEY}. */
|
||||||
|
public void registerTransportService(String name, Class<? extends TransportService> clazz) {
|
||||||
|
transportServiceTypes.registerExtension(name, clazz);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Adds a transport implementation that can be selected by setting {@link #TRANSPORT_TYPE_KEY}. */
|
||||||
|
public void registerTransport(String name, Class<? extends Transport> clazz) {
|
||||||
|
transportTypes.registerExtension(name, clazz);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Adds an http transport implementation that can be selected by setting {@link #HTTP_TYPE_KEY}. */
|
||||||
|
// TODO: we need another name than "http transport"....so confusing with transportClient...
|
||||||
|
public void registerHttpTransport(String name, Class<? extends HttpServerTransport> clazz) {
|
||||||
|
if (transportClient) {
|
||||||
|
throw new IllegalArgumentException("Cannot register http transport " + clazz.getName() + " for transport client");
|
||||||
|
}
|
||||||
|
httpTransportTypes.registerExtension(name, clazz);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Adds an additional rest action. */
|
||||||
|
// TODO: change this further to eliminate the middle man, ie RestController, and just register method and path here
|
||||||
|
public void registerRestHandler(Class<? extends RestHandler> clazz) {
|
||||||
|
if (transportClient) {
|
||||||
|
throw new IllegalArgumentException("Cannot register rest handler " + clazz.getName() + " for transport client");
|
||||||
|
}
|
||||||
|
if (AbstractCatAction.class.isAssignableFrom(clazz)) {
|
||||||
|
catHandlers.registerExtension(clazz.asSubclass(AbstractCatAction.class));
|
||||||
|
} else {
|
||||||
|
restHandlers.registerExtension(clazz);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void configure() {
|
protected void configure() {
|
||||||
bind(NetworkService.class).toInstance(networkService);
|
bind(NetworkService.class).toInstance(networkService);
|
||||||
|
bind(NamedWriteableRegistry.class).asEagerSingleton();
|
||||||
|
|
||||||
|
transportServiceTypes.bindType(binder(), settings, TRANSPORT_SERVICE_TYPE_KEY, NETTY_TRANSPORT);
|
||||||
|
String defaultTransport = DiscoveryNode.localNode(settings) ? LOCAL_TRANSPORT : NETTY_TRANSPORT;
|
||||||
|
transportTypes.bindType(binder(), settings, TRANSPORT_TYPE_KEY, defaultTransport);
|
||||||
|
|
||||||
|
if (transportClient) {
|
||||||
|
bind(Headers.class).asEagerSingleton();
|
||||||
|
bind(TransportProxyClient.class).asEagerSingleton();
|
||||||
|
bind(TransportClientNodesService.class).asEagerSingleton();
|
||||||
|
} else {
|
||||||
|
if (settings.getAsBoolean(HTTP_ENABLED, true)) {
|
||||||
|
bind(HttpServer.class).asEagerSingleton();
|
||||||
|
httpTransportTypes.bindType(binder(), settings, HTTP_TYPE_KEY, NETTY_TRANSPORT);
|
||||||
|
}
|
||||||
|
bind(RestController.class).asEagerSingleton();
|
||||||
|
catHandlers.bind(binder());
|
||||||
|
restHandlers.bind(binder());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,59 +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.http;
|
|
||||||
|
|
||||||
import org.elasticsearch.common.inject.AbstractModule;
|
|
||||||
import org.elasticsearch.common.logging.ESLogger;
|
|
||||||
import org.elasticsearch.common.logging.Loggers;
|
|
||||||
import org.elasticsearch.common.settings.Settings;
|
|
||||||
import org.elasticsearch.http.netty.NettyHttpServerTransport;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class HttpServerModule extends AbstractModule {
|
|
||||||
|
|
||||||
private final Settings settings;
|
|
||||||
private final ESLogger logger;
|
|
||||||
|
|
||||||
private Class<? extends HttpServerTransport> httpServerTransportClass;
|
|
||||||
|
|
||||||
public HttpServerModule(Settings settings) {
|
|
||||||
this.settings = settings;
|
|
||||||
this.logger = Loggers.getLogger(getClass(), settings);
|
|
||||||
this.httpServerTransportClass = NettyHttpServerTransport.class;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings({"unchecked"})
|
|
||||||
@Override
|
|
||||||
protected void configure() {
|
|
||||||
bind(HttpServerTransport.class).to(httpServerTransportClass).asEagerSingleton();
|
|
||||||
bind(HttpServer.class).asEagerSingleton();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHttpServerTransport(Class<? extends HttpServerTransport> httpServerTransport, String source) {
|
|
||||||
Objects.requireNonNull(httpServerTransport, "Configured http server transport may not be null");
|
|
||||||
Objects.requireNonNull(source, "Plugin, that changes transport may not be null");
|
|
||||||
logger.info("Using [{}] as http transport, overridden by [{}]", httpServerTransportClass.getName(), source);
|
|
||||||
this.httpServerTransportClass = httpServerTransport;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -23,7 +23,6 @@ import org.elasticsearch.Build;
|
||||||
import org.elasticsearch.ElasticsearchException;
|
import org.elasticsearch.ElasticsearchException;
|
||||||
import org.elasticsearch.Version;
|
import org.elasticsearch.Version;
|
||||||
import org.elasticsearch.action.ActionModule;
|
import org.elasticsearch.action.ActionModule;
|
||||||
import org.elasticsearch.bootstrap.Elasticsearch;
|
|
||||||
import org.elasticsearch.cache.recycler.PageCacheRecycler;
|
import org.elasticsearch.cache.recycler.PageCacheRecycler;
|
||||||
import org.elasticsearch.client.Client;
|
import org.elasticsearch.client.Client;
|
||||||
import org.elasticsearch.client.node.NodeClientModule;
|
import org.elasticsearch.client.node.NodeClientModule;
|
||||||
|
@ -33,7 +32,6 @@ import org.elasticsearch.cluster.ClusterService;
|
||||||
import org.elasticsearch.cluster.action.index.MappingUpdatedAction;
|
import org.elasticsearch.cluster.action.index.MappingUpdatedAction;
|
||||||
import org.elasticsearch.cluster.routing.RoutingService;
|
import org.elasticsearch.cluster.routing.RoutingService;
|
||||||
import org.elasticsearch.common.StopWatch;
|
import org.elasticsearch.common.StopWatch;
|
||||||
import org.elasticsearch.common.SuppressForbidden;
|
|
||||||
import org.elasticsearch.common.component.Lifecycle;
|
import org.elasticsearch.common.component.Lifecycle;
|
||||||
import org.elasticsearch.common.component.LifecycleComponent;
|
import org.elasticsearch.common.component.LifecycleComponent;
|
||||||
import org.elasticsearch.common.inject.Injector;
|
import org.elasticsearch.common.inject.Injector;
|
||||||
|
@ -62,7 +60,6 @@ import org.elasticsearch.gateway.GatewayAllocator;
|
||||||
import org.elasticsearch.gateway.GatewayModule;
|
import org.elasticsearch.gateway.GatewayModule;
|
||||||
import org.elasticsearch.gateway.GatewayService;
|
import org.elasticsearch.gateway.GatewayService;
|
||||||
import org.elasticsearch.http.HttpServer;
|
import org.elasticsearch.http.HttpServer;
|
||||||
import org.elasticsearch.http.HttpServerModule;
|
|
||||||
import org.elasticsearch.http.HttpServerTransport;
|
import org.elasticsearch.http.HttpServerTransport;
|
||||||
import org.elasticsearch.indices.IndicesModule;
|
import org.elasticsearch.indices.IndicesModule;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
|
@ -86,7 +83,6 @@ import org.elasticsearch.plugins.PluginsModule;
|
||||||
import org.elasticsearch.plugins.PluginsService;
|
import org.elasticsearch.plugins.PluginsService;
|
||||||
import org.elasticsearch.repositories.RepositoriesModule;
|
import org.elasticsearch.repositories.RepositoriesModule;
|
||||||
import org.elasticsearch.rest.RestController;
|
import org.elasticsearch.rest.RestController;
|
||||||
import org.elasticsearch.rest.RestModule;
|
|
||||||
import org.elasticsearch.script.ScriptModule;
|
import org.elasticsearch.script.ScriptModule;
|
||||||
import org.elasticsearch.script.ScriptService;
|
import org.elasticsearch.script.ScriptService;
|
||||||
import org.elasticsearch.search.SearchModule;
|
import org.elasticsearch.search.SearchModule;
|
||||||
|
@ -95,7 +91,6 @@ import org.elasticsearch.snapshots.SnapshotShardsService;
|
||||||
import org.elasticsearch.snapshots.SnapshotsService;
|
import org.elasticsearch.snapshots.SnapshotsService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.threadpool.ThreadPoolModule;
|
import org.elasticsearch.threadpool.ThreadPoolModule;
|
||||||
import org.elasticsearch.transport.TransportModule;
|
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
import org.elasticsearch.tribe.TribeModule;
|
import org.elasticsearch.tribe.TribeModule;
|
||||||
import org.elasticsearch.tribe.TribeService;
|
import org.elasticsearch.tribe.TribeService;
|
||||||
|
@ -108,7 +103,6 @@ import java.net.Inet6Address;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
import java.nio.file.CopyOption;
|
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.StandardCopyOption;
|
import java.nio.file.StandardCopyOption;
|
||||||
|
@ -185,20 +179,15 @@ public class Node implements Releasable {
|
||||||
}
|
}
|
||||||
modules.add(new PluginsModule(pluginsService));
|
modules.add(new PluginsModule(pluginsService));
|
||||||
modules.add(new SettingsModule(this.settings, settingsFilter));
|
modules.add(new SettingsModule(this.settings, settingsFilter));
|
||||||
modules.add(new NodeModule(this, nodeSettingsService, monitorService));
|
|
||||||
modules.add(new NetworkModule(networkService));
|
|
||||||
modules.add(new ScriptModule(this.settings));
|
|
||||||
modules.add(new EnvironmentModule(environment));
|
modules.add(new EnvironmentModule(environment));
|
||||||
|
modules.add(new NodeModule(this, nodeSettingsService, monitorService));
|
||||||
|
modules.add(new NetworkModule(networkService, settings, false));
|
||||||
|
modules.add(new ScriptModule(this.settings));
|
||||||
modules.add(new NodeEnvironmentModule(nodeEnvironment));
|
modules.add(new NodeEnvironmentModule(nodeEnvironment));
|
||||||
modules.add(new ClusterNameModule(this.settings));
|
modules.add(new ClusterNameModule(this.settings));
|
||||||
modules.add(new ThreadPoolModule(threadPool));
|
modules.add(new ThreadPoolModule(threadPool));
|
||||||
modules.add(new DiscoveryModule(this.settings));
|
modules.add(new DiscoveryModule(this.settings));
|
||||||
modules.add(new ClusterModule(this.settings));
|
modules.add(new ClusterModule(this.settings));
|
||||||
modules.add(new RestModule(this.settings));
|
|
||||||
modules.add(new TransportModule(settings));
|
|
||||||
if (settings.getAsBoolean(HTTP_ENABLED, true)) {
|
|
||||||
modules.add(new HttpServerModule(settings));
|
|
||||||
}
|
|
||||||
modules.add(new IndicesModule());
|
modules.add(new IndicesModule());
|
||||||
modules.add(new SearchModule());
|
modules.add(new SearchModule());
|
||||||
modules.add(new ActionModule(false));
|
modules.add(new ActionModule(false));
|
||||||
|
|
|
@ -1,51 +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;
|
|
||||||
|
|
||||||
import org.elasticsearch.common.inject.AbstractModule;
|
|
||||||
import org.elasticsearch.common.settings.Settings;
|
|
||||||
import org.elasticsearch.rest.action.RestActionModule;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class RestModule extends AbstractModule {
|
|
||||||
|
|
||||||
private final Settings settings;
|
|
||||||
private List<Class<? extends BaseRestHandler>> restPluginsActions = new ArrayList<>();
|
|
||||||
|
|
||||||
public void addRestAction(Class<? extends BaseRestHandler> restAction) {
|
|
||||||
restPluginsActions.add(restAction);
|
|
||||||
}
|
|
||||||
|
|
||||||
public RestModule(Settings settings) {
|
|
||||||
this.settings = settings;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure() {
|
|
||||||
bind(RestController.class).asEagerSingleton();
|
|
||||||
new RestActionModule(restPluginsActions).configure(binder());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,273 +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;
|
|
||||||
|
|
||||||
import org.elasticsearch.common.inject.AbstractModule;
|
|
||||||
import org.elasticsearch.common.inject.multibindings.Multibinder;
|
|
||||||
import org.elasticsearch.rest.BaseRestHandler;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.health.RestClusterHealthAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.node.hotthreads.RestNodesHotThreadsAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.node.info.RestNodesInfoAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.node.stats.RestNodesStatsAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.repositories.delete.RestDeleteRepositoryAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.repositories.get.RestGetRepositoriesAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.repositories.put.RestPutRepositoryAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.repositories.verify.RestVerifyRepositoryAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.reroute.RestClusterRerouteAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.settings.RestClusterGetSettingsAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.settings.RestClusterUpdateSettingsAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.shards.RestClusterSearchShardsAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.snapshots.create.RestCreateSnapshotAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.snapshots.delete.RestDeleteSnapshotAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.snapshots.get.RestGetSnapshotsAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.snapshots.restore.RestRestoreSnapshotAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.snapshots.status.RestSnapshotsStatusAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.state.RestClusterStateAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.stats.RestClusterStatsAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.cluster.tasks.RestPendingClusterTasksAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.alias.RestIndicesAliasesAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.alias.delete.RestIndexDeleteAliasesAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.alias.get.RestGetAliasesAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.alias.get.RestGetIndicesAliasesAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.alias.head.RestAliasesExistAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.alias.put.RestIndexPutAliasAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.analyze.RestAnalyzeAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.cache.clear.RestClearIndicesCacheAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.close.RestCloseIndexAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.create.RestCreateIndexAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.delete.RestDeleteIndexAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.exists.indices.RestIndicesExistsAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.exists.types.RestTypesExistsAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.flush.RestFlushAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.flush.RestSyncedFlushAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.forcemerge.RestForceMergeAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.get.RestGetIndicesAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.mapping.get.RestGetFieldMappingAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.mapping.get.RestGetMappingAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.mapping.put.RestPutMappingAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.open.RestOpenIndexAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.recovery.RestRecoveryAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.refresh.RestRefreshAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.segments.RestIndicesSegmentsAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.settings.RestGetSettingsAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.settings.RestUpdateSettingsAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.shards.RestIndicesShardStoresAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.stats.RestIndicesStatsAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.template.delete.RestDeleteIndexTemplateAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.template.get.RestGetIndexTemplateAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.template.head.RestHeadIndexTemplateAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.template.put.RestPutIndexTemplateAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.upgrade.RestUpgradeAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.validate.query.RestValidateQueryAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.validate.template.RestRenderSearchTemplateAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.warmer.delete.RestDeleteWarmerAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.warmer.get.RestGetWarmerAction;
|
|
||||||
import org.elasticsearch.rest.action.admin.indices.warmer.put.RestPutWarmerAction;
|
|
||||||
import org.elasticsearch.rest.action.bulk.RestBulkAction;
|
|
||||||
import org.elasticsearch.rest.action.cat.AbstractCatAction;
|
|
||||||
import org.elasticsearch.rest.action.cat.RestAliasAction;
|
|
||||||
import org.elasticsearch.rest.action.cat.RestAllocationAction;
|
|
||||||
import org.elasticsearch.rest.action.cat.RestCatAction;
|
|
||||||
import org.elasticsearch.rest.action.cat.RestFielddataAction;
|
|
||||||
import org.elasticsearch.rest.action.cat.RestHealthAction;
|
|
||||||
import org.elasticsearch.rest.action.cat.RestIndicesAction;
|
|
||||||
import org.elasticsearch.rest.action.cat.RestMasterAction;
|
|
||||||
import org.elasticsearch.rest.action.cat.RestNodeAttrsAction;
|
|
||||||
import org.elasticsearch.rest.action.cat.RestNodesAction;
|
|
||||||
import org.elasticsearch.rest.action.cat.RestPluginsAction;
|
|
||||||
import org.elasticsearch.rest.action.cat.RestRepositoriesAction;
|
|
||||||
import org.elasticsearch.rest.action.cat.RestSegmentsAction;
|
|
||||||
import org.elasticsearch.rest.action.cat.RestShardsAction;
|
|
||||||
import org.elasticsearch.rest.action.cat.RestSnapshotAction;
|
|
||||||
import org.elasticsearch.rest.action.cat.RestThreadPoolAction;
|
|
||||||
import org.elasticsearch.rest.action.delete.RestDeleteAction;
|
|
||||||
import org.elasticsearch.rest.action.explain.RestExplainAction;
|
|
||||||
import org.elasticsearch.rest.action.fieldstats.RestFieldStatsAction;
|
|
||||||
import org.elasticsearch.rest.action.get.RestGetAction;
|
|
||||||
import org.elasticsearch.rest.action.get.RestGetSourceAction;
|
|
||||||
import org.elasticsearch.rest.action.get.RestHeadAction;
|
|
||||||
import org.elasticsearch.rest.action.get.RestMultiGetAction;
|
|
||||||
import org.elasticsearch.rest.action.index.RestIndexAction;
|
|
||||||
import org.elasticsearch.rest.action.main.RestMainAction;
|
|
||||||
import org.elasticsearch.rest.action.percolate.RestMultiPercolateAction;
|
|
||||||
import org.elasticsearch.rest.action.percolate.RestPercolateAction;
|
|
||||||
import org.elasticsearch.rest.action.script.RestDeleteIndexedScriptAction;
|
|
||||||
import org.elasticsearch.rest.action.script.RestGetIndexedScriptAction;
|
|
||||||
import org.elasticsearch.rest.action.script.RestPutIndexedScriptAction;
|
|
||||||
import org.elasticsearch.rest.action.search.RestClearScrollAction;
|
|
||||||
import org.elasticsearch.rest.action.search.RestMultiSearchAction;
|
|
||||||
import org.elasticsearch.rest.action.search.RestSearchAction;
|
|
||||||
import org.elasticsearch.rest.action.search.RestSearchScrollAction;
|
|
||||||
import org.elasticsearch.rest.action.suggest.RestSuggestAction;
|
|
||||||
import org.elasticsearch.rest.action.template.RestDeleteSearchTemplateAction;
|
|
||||||
import org.elasticsearch.rest.action.template.RestGetSearchTemplateAction;
|
|
||||||
import org.elasticsearch.rest.action.template.RestPutSearchTemplateAction;
|
|
||||||
import org.elasticsearch.rest.action.termvectors.RestMultiTermVectorsAction;
|
|
||||||
import org.elasticsearch.rest.action.termvectors.RestTermVectorsAction;
|
|
||||||
import org.elasticsearch.rest.action.update.RestUpdateAction;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class RestActionModule extends AbstractModule {
|
|
||||||
private List<Class<? extends BaseRestHandler>> restPluginsActions = new ArrayList<>();
|
|
||||||
|
|
||||||
public RestActionModule(List<Class<? extends BaseRestHandler>> restPluginsActions) {
|
|
||||||
this.restPluginsActions = restPluginsActions;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure() {
|
|
||||||
for (Class<? extends BaseRestHandler> restAction : restPluginsActions) {
|
|
||||||
bind(restAction).asEagerSingleton();
|
|
||||||
}
|
|
||||||
|
|
||||||
bind(RestMainAction.class).asEagerSingleton();
|
|
||||||
|
|
||||||
bind(RestNodesInfoAction.class).asEagerSingleton();
|
|
||||||
bind(RestNodesStatsAction.class).asEagerSingleton();
|
|
||||||
bind(RestNodesHotThreadsAction.class).asEagerSingleton();
|
|
||||||
bind(RestClusterStatsAction.class).asEagerSingleton();
|
|
||||||
bind(RestClusterStateAction.class).asEagerSingleton();
|
|
||||||
bind(RestClusterHealthAction.class).asEagerSingleton();
|
|
||||||
bind(RestClusterUpdateSettingsAction.class).asEagerSingleton();
|
|
||||||
bind(RestClusterGetSettingsAction.class).asEagerSingleton();
|
|
||||||
bind(RestClusterRerouteAction.class).asEagerSingleton();
|
|
||||||
bind(RestClusterSearchShardsAction.class).asEagerSingleton();
|
|
||||||
bind(RestPendingClusterTasksAction.class).asEagerSingleton();
|
|
||||||
bind(RestPutRepositoryAction.class).asEagerSingleton();
|
|
||||||
bind(RestGetRepositoriesAction.class).asEagerSingleton();
|
|
||||||
bind(RestDeleteRepositoryAction.class).asEagerSingleton();
|
|
||||||
bind(RestVerifyRepositoryAction.class).asEagerSingleton();
|
|
||||||
bind(RestGetSnapshotsAction.class).asEagerSingleton();
|
|
||||||
bind(RestCreateSnapshotAction.class).asEagerSingleton();
|
|
||||||
bind(RestRestoreSnapshotAction.class).asEagerSingleton();
|
|
||||||
bind(RestDeleteSnapshotAction.class).asEagerSingleton();
|
|
||||||
bind(RestSnapshotsStatusAction.class).asEagerSingleton();
|
|
||||||
|
|
||||||
bind(RestIndicesExistsAction.class).asEagerSingleton();
|
|
||||||
bind(RestTypesExistsAction.class).asEagerSingleton();
|
|
||||||
bind(RestGetIndicesAction.class).asEagerSingleton();
|
|
||||||
bind(RestIndicesStatsAction.class).asEagerSingleton();
|
|
||||||
bind(RestIndicesSegmentsAction.class).asEagerSingleton();
|
|
||||||
bind(RestIndicesShardStoresAction.class).asEagerSingleton();
|
|
||||||
bind(RestGetAliasesAction.class).asEagerSingleton();
|
|
||||||
bind(RestAliasesExistAction.class).asEagerSingleton();
|
|
||||||
bind(RestIndexDeleteAliasesAction.class).asEagerSingleton();
|
|
||||||
bind(RestIndexPutAliasAction.class).asEagerSingleton();
|
|
||||||
bind(RestIndicesAliasesAction.class).asEagerSingleton();
|
|
||||||
bind(RestGetIndicesAliasesAction.class).asEagerSingleton();
|
|
||||||
bind(RestCreateIndexAction.class).asEagerSingleton();
|
|
||||||
bind(RestDeleteIndexAction.class).asEagerSingleton();
|
|
||||||
bind(RestCloseIndexAction.class).asEagerSingleton();
|
|
||||||
bind(RestOpenIndexAction.class).asEagerSingleton();
|
|
||||||
|
|
||||||
bind(RestUpdateSettingsAction.class).asEagerSingleton();
|
|
||||||
bind(RestGetSettingsAction.class).asEagerSingleton();
|
|
||||||
|
|
||||||
bind(RestAnalyzeAction.class).asEagerSingleton();
|
|
||||||
bind(RestGetIndexTemplateAction.class).asEagerSingleton();
|
|
||||||
bind(RestPutIndexTemplateAction.class).asEagerSingleton();
|
|
||||||
bind(RestDeleteIndexTemplateAction.class).asEagerSingleton();
|
|
||||||
bind(RestHeadIndexTemplateAction.class).asEagerSingleton();
|
|
||||||
|
|
||||||
bind(RestPutWarmerAction.class).asEagerSingleton();
|
|
||||||
bind(RestDeleteWarmerAction.class).asEagerSingleton();
|
|
||||||
bind(RestGetWarmerAction.class).asEagerSingleton();
|
|
||||||
|
|
||||||
bind(RestPutMappingAction.class).asEagerSingleton();
|
|
||||||
bind(RestGetMappingAction.class).asEagerSingleton();
|
|
||||||
bind(RestGetFieldMappingAction.class).asEagerSingleton();
|
|
||||||
|
|
||||||
bind(RestRefreshAction.class).asEagerSingleton();
|
|
||||||
bind(RestFlushAction.class).asEagerSingleton();
|
|
||||||
bind(RestSyncedFlushAction.class).asEagerSingleton();
|
|
||||||
bind(RestForceMergeAction.class).asEagerSingleton();
|
|
||||||
bind(RestUpgradeAction.class).asEagerSingleton();
|
|
||||||
bind(RestClearIndicesCacheAction.class).asEagerSingleton();
|
|
||||||
|
|
||||||
bind(RestIndexAction.class).asEagerSingleton();
|
|
||||||
bind(RestGetAction.class).asEagerSingleton();
|
|
||||||
bind(RestGetSourceAction.class).asEagerSingleton();
|
|
||||||
bind(RestHeadAction.class).asEagerSingleton();
|
|
||||||
bind(RestMultiGetAction.class).asEagerSingleton();
|
|
||||||
bind(RestDeleteAction.class).asEagerSingleton();
|
|
||||||
bind(org.elasticsearch.rest.action.count.RestCountAction.class).asEagerSingleton();
|
|
||||||
bind(RestSuggestAction.class).asEagerSingleton();
|
|
||||||
bind(RestTermVectorsAction.class).asEagerSingleton();
|
|
||||||
bind(RestMultiTermVectorsAction.class).asEagerSingleton();
|
|
||||||
bind(RestBulkAction.class).asEagerSingleton();
|
|
||||||
bind(RestUpdateAction.class).asEagerSingleton();
|
|
||||||
bind(RestPercolateAction.class).asEagerSingleton();
|
|
||||||
bind(RestMultiPercolateAction.class).asEagerSingleton();
|
|
||||||
|
|
||||||
bind(RestSearchAction.class).asEagerSingleton();
|
|
||||||
bind(RestSearchScrollAction.class).asEagerSingleton();
|
|
||||||
bind(RestClearScrollAction.class).asEagerSingleton();
|
|
||||||
bind(RestMultiSearchAction.class).asEagerSingleton();
|
|
||||||
bind(RestRenderSearchTemplateAction.class).asEagerSingleton();
|
|
||||||
|
|
||||||
bind(RestValidateQueryAction.class).asEagerSingleton();
|
|
||||||
|
|
||||||
bind(RestExplainAction.class).asEagerSingleton();
|
|
||||||
|
|
||||||
bind(RestRecoveryAction.class).asEagerSingleton();
|
|
||||||
|
|
||||||
// Templates API
|
|
||||||
bind(RestGetSearchTemplateAction.class).asEagerSingleton();
|
|
||||||
bind(RestPutSearchTemplateAction.class).asEagerSingleton();
|
|
||||||
bind(RestDeleteSearchTemplateAction.class).asEagerSingleton();
|
|
||||||
|
|
||||||
// Scripts API
|
|
||||||
bind(RestGetIndexedScriptAction.class).asEagerSingleton();
|
|
||||||
bind(RestPutIndexedScriptAction.class).asEagerSingleton();
|
|
||||||
bind(RestDeleteIndexedScriptAction.class).asEagerSingleton();
|
|
||||||
|
|
||||||
|
|
||||||
bind(RestFieldStatsAction.class).asEagerSingleton();
|
|
||||||
|
|
||||||
// cat API
|
|
||||||
Multibinder<AbstractCatAction> catActionMultibinder = Multibinder.newSetBinder(binder(), AbstractCatAction.class);
|
|
||||||
catActionMultibinder.addBinding().to(RestAllocationAction.class).asEagerSingleton();
|
|
||||||
catActionMultibinder.addBinding().to(RestShardsAction.class).asEagerSingleton();
|
|
||||||
catActionMultibinder.addBinding().to(RestMasterAction.class).asEagerSingleton();
|
|
||||||
catActionMultibinder.addBinding().to(RestNodesAction.class).asEagerSingleton();
|
|
||||||
catActionMultibinder.addBinding().to(RestIndicesAction.class).asEagerSingleton();
|
|
||||||
catActionMultibinder.addBinding().to(RestSegmentsAction.class).asEagerSingleton();
|
|
||||||
// Fully qualified to prevent interference with rest.action.count.RestCountAction
|
|
||||||
catActionMultibinder.addBinding().to(org.elasticsearch.rest.action.cat.RestCountAction.class).asEagerSingleton();
|
|
||||||
// Fully qualified to prevent interference with rest.action.indices.RestRecoveryAction
|
|
||||||
catActionMultibinder.addBinding().to(org.elasticsearch.rest.action.cat.RestRecoveryAction.class).asEagerSingleton();
|
|
||||||
catActionMultibinder.addBinding().to(RestHealthAction.class).asEagerSingleton();
|
|
||||||
catActionMultibinder.addBinding().to(org.elasticsearch.rest.action.cat.RestPendingClusterTasksAction.class).asEagerSingleton();
|
|
||||||
catActionMultibinder.addBinding().to(RestAliasAction.class).asEagerSingleton();
|
|
||||||
catActionMultibinder.addBinding().to(RestThreadPoolAction.class).asEagerSingleton();
|
|
||||||
catActionMultibinder.addBinding().to(RestPluginsAction.class).asEagerSingleton();
|
|
||||||
catActionMultibinder.addBinding().to(RestFielddataAction.class).asEagerSingleton();
|
|
||||||
catActionMultibinder.addBinding().to(RestNodeAttrsAction.class).asEagerSingleton();
|
|
||||||
catActionMultibinder.addBinding().to(RestRepositoriesAction.class).asEagerSingleton();
|
|
||||||
catActionMultibinder.addBinding().to(RestSnapshotAction.class).asEagerSingleton();
|
|
||||||
// no abstract cat action
|
|
||||||
bind(RestCatAction.class).asEagerSingleton();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,122 +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.transport;
|
|
||||||
|
|
||||||
import org.elasticsearch.cluster.node.DiscoveryNode;
|
|
||||||
import org.elasticsearch.common.inject.AbstractModule;
|
|
||||||
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
|
||||||
import org.elasticsearch.common.logging.ESLogger;
|
|
||||||
import org.elasticsearch.common.logging.Loggers;
|
|
||||||
import org.elasticsearch.common.settings.Settings;
|
|
||||||
import org.elasticsearch.transport.local.LocalTransport;
|
|
||||||
import org.elasticsearch.transport.netty.NettyTransport;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class TransportModule extends AbstractModule {
|
|
||||||
|
|
||||||
public static final String TRANSPORT_TYPE_KEY = "transport.type";
|
|
||||||
public static final String TRANSPORT_SERVICE_TYPE_KEY = "transport.service.type";
|
|
||||||
|
|
||||||
public static final String LOCAL_TRANSPORT = "local";
|
|
||||||
public static final String NETTY_TRANSPORT = "netty";
|
|
||||||
|
|
||||||
private final ESLogger logger;
|
|
||||||
private final Settings settings;
|
|
||||||
|
|
||||||
private final Map<String, Class<? extends TransportService>> transportServices = new HashMap<>();
|
|
||||||
private final Map<String, Class<? extends Transport>> transports = new HashMap<>();
|
|
||||||
private Class<? extends TransportService> configuredTransportService;
|
|
||||||
private Class<? extends Transport> configuredTransport;
|
|
||||||
private String configuredTransportServiceSource;
|
|
||||||
private String configuredTransportSource;
|
|
||||||
|
|
||||||
public TransportModule(Settings settings) {
|
|
||||||
this.settings = settings;
|
|
||||||
this.logger = Loggers.getLogger(getClass(), settings);
|
|
||||||
addTransport(LOCAL_TRANSPORT, LocalTransport.class);
|
|
||||||
addTransport(NETTY_TRANSPORT, NettyTransport.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addTransportService(String name, Class<? extends TransportService> clazz) {
|
|
||||||
Class<? extends TransportService> oldClazz = transportServices.put(name, clazz);
|
|
||||||
if (oldClazz != null) {
|
|
||||||
throw new IllegalArgumentException("Cannot register TransportService [" + name + "] to " + clazz.getName() + ", already registered to " + oldClazz.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addTransport(String name, Class<? extends Transport> clazz) {
|
|
||||||
Class<? extends Transport> oldClazz = transports.put(name, clazz);
|
|
||||||
if (oldClazz != null) {
|
|
||||||
throw new IllegalArgumentException("Cannot register Transport [" + name + "] to " + clazz.getName() + ", already registered to " + oldClazz.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure() {
|
|
||||||
if (configuredTransportService != null) {
|
|
||||||
logger.info("Using [{}] as transport service, overridden by [{}]", configuredTransportService.getName(), configuredTransportServiceSource);
|
|
||||||
bind(TransportService.class).to(configuredTransportService).asEagerSingleton();
|
|
||||||
} else {
|
|
||||||
String typeName = settings.get(TRANSPORT_SERVICE_TYPE_KEY);
|
|
||||||
if (typeName == null) {
|
|
||||||
bind(TransportService.class).asEagerSingleton();
|
|
||||||
} else {
|
|
||||||
if (transportServices.containsKey(typeName) == false) {
|
|
||||||
throw new IllegalArgumentException("Unknown TransportService type [" + typeName + "], known types are: " + transportServices.keySet());
|
|
||||||
}
|
|
||||||
bind(TransportService.class).to(transportServices.get(typeName)).asEagerSingleton();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bind(NamedWriteableRegistry.class).asEagerSingleton();
|
|
||||||
if (configuredTransport != null) {
|
|
||||||
logger.info("Using [{}] as transport, overridden by [{}]", configuredTransport.getName(), configuredTransportSource);
|
|
||||||
bind(Transport.class).to(configuredTransport).asEagerSingleton();
|
|
||||||
} else {
|
|
||||||
String defaultType = DiscoveryNode.localNode(settings) ? LOCAL_TRANSPORT : NETTY_TRANSPORT;
|
|
||||||
String typeName = settings.get(TRANSPORT_TYPE_KEY, defaultType);
|
|
||||||
Class<? extends Transport> clazz = transports.get(typeName);
|
|
||||||
if (clazz == null) {
|
|
||||||
throw new IllegalArgumentException("Unknown Transport [" + typeName + "]");
|
|
||||||
}
|
|
||||||
bind(Transport.class).to(clazz).asEagerSingleton();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTransportService(Class<? extends TransportService> transportService, String source) {
|
|
||||||
Objects.requireNonNull(transportService, "Configured transport service may not be null");
|
|
||||||
Objects.requireNonNull(source, "Plugin, that changes transport service may not be null");
|
|
||||||
this.configuredTransportService = transportService;
|
|
||||||
this.configuredTransportServiceSource = source;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTransport(Class<? extends Transport> transport, String source) {
|
|
||||||
Objects.requireNonNull(transport, "Configured transport may not be null");
|
|
||||||
Objects.requireNonNull(source, "Plugin, that changes transport may not be null");
|
|
||||||
this.configuredTransport = transport;
|
|
||||||
this.configuredTransportSource = source;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -32,6 +32,7 @@ import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.node.DiscoveryNode;
|
import org.elasticsearch.cluster.node.DiscoveryNode;
|
||||||
import org.elasticsearch.cluster.node.DiscoveryNodes;
|
import org.elasticsearch.cluster.node.DiscoveryNodes;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
|
import org.elasticsearch.common.network.NetworkModule;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.transport.LocalTransportAddress;
|
import org.elasticsearch.common.transport.LocalTransportAddress;
|
||||||
import org.elasticsearch.common.transport.TransportAddress;
|
import org.elasticsearch.common.transport.TransportAddress;
|
||||||
|
@ -40,7 +41,6 @@ import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.ConnectTransportException;
|
import org.elasticsearch.transport.ConnectTransportException;
|
||||||
import org.elasticsearch.transport.Transport;
|
import org.elasticsearch.transport.Transport;
|
||||||
import org.elasticsearch.transport.TransportException;
|
import org.elasticsearch.transport.TransportException;
|
||||||
import org.elasticsearch.transport.TransportModule;
|
|
||||||
import org.elasticsearch.transport.TransportRequest;
|
import org.elasticsearch.transport.TransportRequest;
|
||||||
import org.elasticsearch.transport.TransportRequestOptions;
|
import org.elasticsearch.transport.TransportRequestOptions;
|
||||||
import org.elasticsearch.transport.TransportResponse;
|
import org.elasticsearch.transport.TransportResponse;
|
||||||
|
@ -114,12 +114,12 @@ public class TransportClientHeadersTests extends AbstractClientHeadersTestCase {
|
||||||
public String description() {
|
public String description() {
|
||||||
return "a mock transport service";
|
return "a mock transport service";
|
||||||
}
|
}
|
||||||
public void onModule(TransportModule transportModule) {
|
public void onModule(NetworkModule transportModule) {
|
||||||
transportModule.addTransportService("internal", InternalTransportService.class);
|
transportModule.registerTransportService("internal", InternalTransportService.class);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public Settings additionalSettings() {
|
public Settings additionalSettings() {
|
||||||
return Settings.builder().put(TransportModule.TRANSPORT_SERVICE_TYPE_KEY, "internal").build();
|
return Settings.builder().put(NetworkModule.TRANSPORT_SERVICE_TYPE_KEY, "internal").build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,24 @@ public abstract class ModuleTestCase extends ESTestCase {
|
||||||
fail("Did not find any binding to " + to.getName() + ". Found these bindings:\n" + s);
|
fail("Did not find any binding to " + to.getName() + ". Found these bindings:\n" + s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Configures the module and asserts "clazz" is not bound to anything. */
|
||||||
|
public void assertNotBound(Module module, Class clazz) {
|
||||||
|
List<Element> elements = Elements.getElements(module);
|
||||||
|
for (Element element : elements) {
|
||||||
|
if (element instanceof LinkedKeyBinding) {
|
||||||
|
LinkedKeyBinding binding = (LinkedKeyBinding) element;
|
||||||
|
if (clazz.equals(binding.getKey().getTypeLiteral().getType())) {
|
||||||
|
fail("Found binding for " + clazz.getName() + " to " + binding.getKey().getTypeLiteral().getType().getTypeName());
|
||||||
|
}
|
||||||
|
} else if (element instanceof UntargettedBinding) {
|
||||||
|
UntargettedBinding binding = (UntargettedBinding) element;
|
||||||
|
if (clazz.equals(binding.getKey().getTypeLiteral().getType())) {
|
||||||
|
fail("Found binding for " + clazz.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempts to configure the module, and asserts an {@link IllegalArgumentException} is
|
* Attempts to configure the module, and asserts an {@link IllegalArgumentException} is
|
||||||
* caught, containing the given messages
|
* caught, containing the given messages
|
||||||
|
|
|
@ -0,0 +1,176 @@
|
||||||
|
/*
|
||||||
|
* 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.common.network;
|
||||||
|
|
||||||
|
import org.elasticsearch.client.Client;
|
||||||
|
import org.elasticsearch.common.Table;
|
||||||
|
import org.elasticsearch.common.component.AbstractLifecycleComponent;
|
||||||
|
import org.elasticsearch.common.inject.ModuleTestCase;
|
||||||
|
import org.elasticsearch.common.settings.Settings;
|
||||||
|
import org.elasticsearch.common.transport.BoundTransportAddress;
|
||||||
|
import org.elasticsearch.http.HttpInfo;
|
||||||
|
import org.elasticsearch.http.HttpServerAdapter;
|
||||||
|
import org.elasticsearch.http.HttpServerTransport;
|
||||||
|
import org.elasticsearch.http.HttpStats;
|
||||||
|
import org.elasticsearch.rest.BaseRestHandler;
|
||||||
|
import org.elasticsearch.rest.RestChannel;
|
||||||
|
import org.elasticsearch.rest.RestHandler;
|
||||||
|
import org.elasticsearch.rest.RestRequest;
|
||||||
|
import org.elasticsearch.rest.action.cat.AbstractCatAction;
|
||||||
|
import org.elasticsearch.rest.action.cat.RestNodesAction;
|
||||||
|
import org.elasticsearch.rest.action.main.RestMainAction;
|
||||||
|
import org.elasticsearch.test.transport.AssertingLocalTransport;
|
||||||
|
import org.elasticsearch.transport.Transport;
|
||||||
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
|
||||||
|
public class NetworkModuleTests extends ModuleTestCase {
|
||||||
|
|
||||||
|
static class FakeTransportService extends TransportService {
|
||||||
|
public FakeTransportService() {
|
||||||
|
super(null, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static class FakeTransport extends AssertingLocalTransport {
|
||||||
|
public FakeTransport() {
|
||||||
|
super(null, null, null, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static class FakeHttpTransport extends AbstractLifecycleComponent<HttpServerTransport> implements HttpServerTransport {
|
||||||
|
public FakeHttpTransport() {
|
||||||
|
super(null);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected void doStart() {}
|
||||||
|
@Override
|
||||||
|
protected void doStop() {}
|
||||||
|
@Override
|
||||||
|
protected void doClose() {}
|
||||||
|
@Override
|
||||||
|
public BoundTransportAddress boundAddress() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public HttpInfo info() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public HttpStats stats() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void httpServerAdapter(HttpServerAdapter httpServerAdapter) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
static class FakeRestHandler extends BaseRestHandler {
|
||||||
|
public FakeRestHandler() {
|
||||||
|
super(null, null, null);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected void handleRequest(RestRequest request, RestChannel channel, Client client) throws Exception {}
|
||||||
|
}
|
||||||
|
|
||||||
|
static class FakeCatRestHandler extends AbstractCatAction {
|
||||||
|
public FakeCatRestHandler() {
|
||||||
|
super(null, null, null);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected void doRequest(RestRequest request, RestChannel channel, Client client) {}
|
||||||
|
@Override
|
||||||
|
protected void documentation(StringBuilder sb) {}
|
||||||
|
@Override
|
||||||
|
protected Table getTableWithHeader(RestRequest request) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRegisterTransportService() {
|
||||||
|
Settings settings = Settings.builder().put(NetworkModule.TRANSPORT_SERVICE_TYPE_KEY, "custom").build();
|
||||||
|
NetworkModule module = new NetworkModule(new NetworkService(settings), settings, false);
|
||||||
|
module.registerTransportService("custom", FakeTransportService.class);
|
||||||
|
assertBinding(module, TransportService.class, FakeTransportService.class);
|
||||||
|
|
||||||
|
// check it works with transport only as well
|
||||||
|
module = new NetworkModule(new NetworkService(settings), settings, true);
|
||||||
|
module.registerTransportService("custom", FakeTransportService.class);
|
||||||
|
assertBinding(module, TransportService.class, FakeTransportService.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRegisterTransport() {
|
||||||
|
Settings settings = Settings.builder().put(NetworkModule.TRANSPORT_TYPE_KEY, "custom").build();
|
||||||
|
NetworkModule module = new NetworkModule(new NetworkService(settings), settings, false);
|
||||||
|
module.registerTransport("custom", FakeTransport.class);
|
||||||
|
assertBinding(module, Transport.class, FakeTransport.class);
|
||||||
|
|
||||||
|
// check it works with transport only as well
|
||||||
|
module = new NetworkModule(new NetworkService(settings), settings, true);
|
||||||
|
module.registerTransport("custom", FakeTransport.class);
|
||||||
|
assertBinding(module, Transport.class, FakeTransport.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRegisterHttpTransport() {
|
||||||
|
Settings settings = Settings.builder().put(NetworkModule.HTTP_TYPE_KEY, "custom").build();
|
||||||
|
NetworkModule module = new NetworkModule(new NetworkService(settings), settings, false);
|
||||||
|
module.registerHttpTransport("custom", FakeHttpTransport.class);
|
||||||
|
assertBinding(module, HttpServerTransport.class, FakeHttpTransport.class);
|
||||||
|
|
||||||
|
// check registration not allowed for transport only
|
||||||
|
module = new NetworkModule(new NetworkService(settings), settings, true);
|
||||||
|
try {
|
||||||
|
module.registerHttpTransport("custom", FakeHttpTransport.class);
|
||||||
|
fail();
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
assertTrue(e.getMessage().contains("Cannot register http transport"));
|
||||||
|
assertTrue(e.getMessage().contains("for transport client"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// not added if http is disabled
|
||||||
|
settings = Settings.builder().put(NetworkModule.HTTP_ENABLED, false).build();
|
||||||
|
module = new NetworkModule(new NetworkService(settings), settings, false);
|
||||||
|
assertNotBound(module, HttpServerTransport.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRegisterRestHandler() {
|
||||||
|
Settings settings = Settings.EMPTY;
|
||||||
|
NetworkModule module = new NetworkModule(new NetworkService(settings), settings, false);
|
||||||
|
module.registerRestHandler(FakeRestHandler.class);
|
||||||
|
// also check a builtin is bound
|
||||||
|
assertSetMultiBinding(module, RestHandler.class, FakeRestHandler.class, RestMainAction.class);
|
||||||
|
|
||||||
|
// check registration not allowed for transport only
|
||||||
|
module = new NetworkModule(new NetworkService(settings), settings, true);
|
||||||
|
try {
|
||||||
|
module.registerRestHandler(FakeRestHandler.class);
|
||||||
|
fail();
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
assertTrue(e.getMessage().contains("Cannot register rest handler"));
|
||||||
|
assertTrue(e.getMessage().contains("for transport client"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRegisterCatRestHandler() {
|
||||||
|
Settings settings = Settings.EMPTY;
|
||||||
|
NetworkModule module = new NetworkModule(new NetworkService(settings), settings, false);
|
||||||
|
module.registerRestHandler(FakeCatRestHandler.class);
|
||||||
|
// also check a builtin is bound
|
||||||
|
assertSetMultiBinding(module, AbstractCatAction.class, FakeCatRestHandler.class, RestNodesAction.class);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,112 +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.plugins;
|
|
||||||
|
|
||||||
import org.elasticsearch.Version;
|
|
||||||
import org.elasticsearch.cluster.node.DiscoveryNode;
|
|
||||||
import org.elasticsearch.common.inject.Inject;
|
|
||||||
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
|
||||||
import org.elasticsearch.common.settings.Settings;
|
|
||||||
import org.elasticsearch.discovery.DiscoveryModule;
|
|
||||||
import org.elasticsearch.test.ESIntegTestCase;
|
|
||||||
import org.elasticsearch.test.ESIntegTestCase.ClusterScope;
|
|
||||||
import org.elasticsearch.test.ESIntegTestCase.Scope;
|
|
||||||
import org.elasticsearch.test.transport.AssertingLocalTransport;
|
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
|
||||||
import org.elasticsearch.transport.Transport;
|
|
||||||
import org.elasticsearch.transport.TransportException;
|
|
||||||
import org.elasticsearch.transport.TransportModule;
|
|
||||||
import org.elasticsearch.transport.TransportRequest;
|
|
||||||
import org.elasticsearch.transport.TransportRequestOptions;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
|
||||||
|
|
||||||
import static org.elasticsearch.common.settings.Settings.settingsBuilder;
|
|
||||||
import static org.hamcrest.Matchers.greaterThan;
|
|
||||||
import static org.hamcrest.Matchers.instanceOf;
|
|
||||||
import static org.hamcrest.Matchers.is;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
@ClusterScope(scope = Scope.SUITE, numDataNodes = 2)
|
|
||||||
public class PluggableTransportModuleIT extends ESIntegTestCase {
|
|
||||||
public static final AtomicInteger SENT_REQUEST_COUNTER = new AtomicInteger(0);
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected Settings nodeSettings(int nodeOrdinal) {
|
|
||||||
return settingsBuilder()
|
|
||||||
.put(super.nodeSettings(nodeOrdinal))
|
|
||||||
.put(DiscoveryModule.DISCOVERY_TYPE_KEY, "local")
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected Collection<Class<? extends Plugin>> nodePlugins() {
|
|
||||||
return pluginList(CountingSentRequestsPlugin.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected Collection<Class<? extends Plugin>> transportClientPlugins() {
|
|
||||||
return pluginList(CountingSentRequestsPlugin.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testThatPluginFunctionalityIsLoadedWithoutConfiguration() throws Exception {
|
|
||||||
for (Transport transport : internalCluster().getInstances(Transport.class)) {
|
|
||||||
assertThat(transport, instanceOf(CountingAssertingLocalTransport.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
int countBeforeRequest = SENT_REQUEST_COUNTER.get();
|
|
||||||
internalCluster().clientNodeClient().admin().cluster().prepareHealth().get();
|
|
||||||
int countAfterRequest = SENT_REQUEST_COUNTER.get();
|
|
||||||
assertThat("Expected send request counter to be greather than zero", countAfterRequest, is(greaterThan(countBeforeRequest)));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class CountingSentRequestsPlugin extends Plugin {
|
|
||||||
@Override
|
|
||||||
public String name() {
|
|
||||||
return "counting-pipelines-plugin";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String description() {
|
|
||||||
return "counting-pipelines-plugin";
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onModule(TransportModule transportModule) {
|
|
||||||
transportModule.setTransport(CountingAssertingLocalTransport.class, this.name());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final class CountingAssertingLocalTransport extends AssertingLocalTransport {
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
public CountingAssertingLocalTransport(Settings settings, ThreadPool threadPool, Version version, NamedWriteableRegistry namedWriteableRegistry) {
|
|
||||||
super(settings, threadPool, version, namedWriteableRegistry);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void sendRequest(final DiscoveryNode node, final long requestId, final String action, final TransportRequest request, TransportRequestOptions options) throws IOException, TransportException {
|
|
||||||
SENT_REQUEST_COUNTER.incrementAndGet();
|
|
||||||
super.sendRequest(node, requestId, action, request, options);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -19,8 +19,8 @@
|
||||||
|
|
||||||
package org.elasticsearch.plugins.responseheader;
|
package org.elasticsearch.plugins.responseheader;
|
||||||
|
|
||||||
|
import org.elasticsearch.common.network.NetworkModule;
|
||||||
import org.elasticsearch.plugins.Plugin;
|
import org.elasticsearch.plugins.Plugin;
|
||||||
import org.elasticsearch.rest.RestModule;
|
|
||||||
|
|
||||||
public class TestResponseHeaderPlugin extends Plugin {
|
public class TestResponseHeaderPlugin extends Plugin {
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ public class TestResponseHeaderPlugin extends Plugin {
|
||||||
return "test-plugin-custom-header-desc";
|
return "test-plugin-custom-header-desc";
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onModule(RestModule restModule) {
|
public void onModule(NetworkModule module) {
|
||||||
restModule.addRestAction(TestResponseHeaderRestAction.class);
|
module.registerRestHandler(TestResponseHeaderRestAction.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
/*
|
||||||
|
* 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.transport;
|
||||||
|
|
||||||
|
import org.elasticsearch.Version;
|
||||||
|
import org.elasticsearch.common.inject.Inject;
|
||||||
|
import org.elasticsearch.common.inject.ModuleTestCase;
|
||||||
|
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
||||||
|
import org.elasticsearch.common.settings.Settings;
|
||||||
|
import org.elasticsearch.test.transport.AssertingLocalTransport;
|
||||||
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
|
|
||||||
|
/** Unit tests for module registering custom transport and transport service */
|
||||||
|
public class TransportModuleTests extends ModuleTestCase {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static class FakeTransport extends AssertingLocalTransport {
|
||||||
|
@Inject
|
||||||
|
public FakeTransport(Settings settings, ThreadPool threadPool, Version version, NamedWriteableRegistry namedWriteableRegistry) {
|
||||||
|
super(settings, threadPool, version, namedWriteableRegistry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static class FakeTransportService extends TransportService {
|
||||||
|
@Inject
|
||||||
|
public FakeTransportService(Settings settings, Transport transport, ThreadPool threadPool) {
|
||||||
|
super(settings, transport, threadPool);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -21,13 +21,14 @@ package org.elasticsearch.transport.netty;
|
||||||
import org.elasticsearch.ElasticsearchException;
|
import org.elasticsearch.ElasticsearchException;
|
||||||
import org.elasticsearch.Version;
|
import org.elasticsearch.Version;
|
||||||
import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
|
import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
|
||||||
import org.elasticsearch.cluster.health.ClusterHealthStatus;
|
|
||||||
import org.elasticsearch.client.Client;
|
import org.elasticsearch.client.Client;
|
||||||
|
import org.elasticsearch.cluster.health.ClusterHealthStatus;
|
||||||
import org.elasticsearch.common.component.Lifecycle;
|
import org.elasticsearch.common.component.Lifecycle;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
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.logging.ESLogger;
|
import org.elasticsearch.common.logging.ESLogger;
|
||||||
|
import org.elasticsearch.common.network.NetworkModule;
|
||||||
import org.elasticsearch.common.network.NetworkService;
|
import org.elasticsearch.common.network.NetworkService;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.transport.InetSocketTransportAddress;
|
import org.elasticsearch.common.transport.InetSocketTransportAddress;
|
||||||
|
@ -40,7 +41,6 @@ import org.elasticsearch.test.ESIntegTestCase.Scope;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.ActionNotFoundTransportException;
|
import org.elasticsearch.transport.ActionNotFoundTransportException;
|
||||||
import org.elasticsearch.transport.RequestHandlerRegistry;
|
import org.elasticsearch.transport.RequestHandlerRegistry;
|
||||||
import org.elasticsearch.transport.TransportModule;
|
|
||||||
import org.elasticsearch.transport.TransportRequest;
|
import org.elasticsearch.transport.TransportRequest;
|
||||||
import org.jboss.netty.channel.Channel;
|
import org.jboss.netty.channel.Channel;
|
||||||
import org.jboss.netty.channel.ChannelPipeline;
|
import org.jboss.netty.channel.ChannelPipeline;
|
||||||
|
@ -66,7 +66,7 @@ public class NettyTransportIT extends ESIntegTestCase {
|
||||||
protected Settings nodeSettings(int nodeOrdinal) {
|
protected Settings nodeSettings(int nodeOrdinal) {
|
||||||
return settingsBuilder().put(super.nodeSettings(nodeOrdinal))
|
return settingsBuilder().put(super.nodeSettings(nodeOrdinal))
|
||||||
.put("node.mode", "network")
|
.put("node.mode", "network")
|
||||||
.put(TransportModule.TRANSPORT_TYPE_KEY, "exception-throwing").build();
|
.put(NetworkModule.TRANSPORT_TYPE_KEY, "exception-throwing").build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -99,8 +99,8 @@ public class NettyTransportIT extends ESIntegTestCase {
|
||||||
public String description() {
|
public String description() {
|
||||||
return "an exception throwing transport for testing";
|
return "an exception throwing transport for testing";
|
||||||
}
|
}
|
||||||
public void onModule(TransportModule transportModule) {
|
public void onModule(NetworkModule module) {
|
||||||
transportModule.addTransport("exception-throwing", ExceptionThrowingNettyTransport.class);
|
module.registerTransport("exception-throwing", ExceptionThrowingNettyTransport.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,11 +19,12 @@
|
||||||
package org.elasticsearch.transport.netty;
|
package org.elasticsearch.transport.netty;
|
||||||
|
|
||||||
import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
|
import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
|
||||||
import org.elasticsearch.cluster.health.ClusterHealthStatus;
|
|
||||||
import org.elasticsearch.action.admin.cluster.node.info.NodeInfo;
|
import org.elasticsearch.action.admin.cluster.node.info.NodeInfo;
|
||||||
import org.elasticsearch.action.admin.cluster.node.info.NodesInfoResponse;
|
import org.elasticsearch.action.admin.cluster.node.info.NodesInfoResponse;
|
||||||
import org.elasticsearch.client.transport.TransportClient;
|
import org.elasticsearch.client.transport.TransportClient;
|
||||||
|
import org.elasticsearch.cluster.health.ClusterHealthStatus;
|
||||||
import org.elasticsearch.common.network.NetworkAddress;
|
import org.elasticsearch.common.network.NetworkAddress;
|
||||||
|
import org.elasticsearch.common.network.NetworkModule;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.transport.InetSocketTransportAddress;
|
import org.elasticsearch.common.transport.InetSocketTransportAddress;
|
||||||
import org.elasticsearch.common.transport.TransportAddress;
|
import org.elasticsearch.common.transport.TransportAddress;
|
||||||
|
@ -31,7 +32,6 @@ import org.elasticsearch.test.ESIntegTestCase;
|
||||||
import org.elasticsearch.test.ESIntegTestCase.ClusterScope;
|
import org.elasticsearch.test.ESIntegTestCase.ClusterScope;
|
||||||
import org.elasticsearch.test.ESIntegTestCase.Scope;
|
import org.elasticsearch.test.ESIntegTestCase.Scope;
|
||||||
import org.elasticsearch.test.junit.annotations.Network;
|
import org.elasticsearch.test.junit.annotations.Network;
|
||||||
import org.elasticsearch.transport.TransportModule;
|
|
||||||
|
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
@ -60,7 +60,7 @@ public class NettyTransportMultiPortIntegrationIT extends ESIntegTestCase {
|
||||||
Settings.Builder builder = settingsBuilder()
|
Settings.Builder builder = settingsBuilder()
|
||||||
.put(super.nodeSettings(nodeOrdinal))
|
.put(super.nodeSettings(nodeOrdinal))
|
||||||
.put("network.host", "127.0.0.1")
|
.put("network.host", "127.0.0.1")
|
||||||
.put(TransportModule.TRANSPORT_TYPE_KEY, "netty")
|
.put(NetworkModule.TRANSPORT_TYPE_KEY, "netty")
|
||||||
.put("node.mode", "network")
|
.put("node.mode", "network")
|
||||||
.put("transport.profiles.client1.port", randomPortRange)
|
.put("transport.profiles.client1.port", randomPortRange)
|
||||||
.put("transport.profiles.client1.publish_host", "127.0.0.7")
|
.put("transport.profiles.client1.publish_host", "127.0.0.7")
|
||||||
|
@ -72,7 +72,7 @@ public class NettyTransportMultiPortIntegrationIT extends ESIntegTestCase {
|
||||||
public void testThatTransportClientCanConnect() throws Exception {
|
public void testThatTransportClientCanConnect() throws Exception {
|
||||||
Settings settings = settingsBuilder()
|
Settings settings = settingsBuilder()
|
||||||
.put("cluster.name", internalCluster().getClusterName())
|
.put("cluster.name", internalCluster().getClusterName())
|
||||||
.put(TransportModule.TRANSPORT_TYPE_KEY, "netty")
|
.put(NetworkModule.TRANSPORT_TYPE_KEY, "netty")
|
||||||
.put("path.home", createTempDir().toString())
|
.put("path.home", createTempDir().toString())
|
||||||
.build();
|
.build();
|
||||||
try (TransportClient transportClient = TransportClient.builder().settings(settings).build()) {
|
try (TransportClient transportClient = TransportClient.builder().settings(settings).build()) {
|
||||||
|
|
|
@ -21,22 +21,19 @@ package org.elasticsearch.transport.netty;
|
||||||
|
|
||||||
import org.elasticsearch.action.admin.cluster.node.info.NodeInfo;
|
import org.elasticsearch.action.admin.cluster.node.info.NodeInfo;
|
||||||
import org.elasticsearch.action.admin.cluster.node.info.NodesInfoResponse;
|
import org.elasticsearch.action.admin.cluster.node.info.NodesInfoResponse;
|
||||||
|
import org.elasticsearch.common.network.NetworkModule;
|
||||||
import org.elasticsearch.common.network.NetworkUtils;
|
import org.elasticsearch.common.network.NetworkUtils;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.transport.BoundTransportAddress;
|
import org.elasticsearch.common.transport.BoundTransportAddress;
|
||||||
import org.elasticsearch.common.transport.InetSocketTransportAddress;
|
import org.elasticsearch.common.transport.InetSocketTransportAddress;
|
||||||
import org.elasticsearch.common.transport.TransportAddress;
|
import org.elasticsearch.common.transport.TransportAddress;
|
||||||
import org.elasticsearch.test.ESIntegTestCase;
|
import org.elasticsearch.test.ESIntegTestCase;
|
||||||
import org.elasticsearch.transport.TransportModule;
|
|
||||||
|
|
||||||
import java.net.Inet4Address;
|
import java.net.Inet4Address;
|
||||||
import java.net.Inet6Address;
|
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.equalTo;
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
import static org.hamcrest.Matchers.greaterThan;
|
import static org.hamcrest.Matchers.greaterThan;
|
||||||
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
|
|
||||||
import static org.hamcrest.Matchers.instanceOf;
|
import static org.hamcrest.Matchers.instanceOf;
|
||||||
import static org.hamcrest.Matchers.not;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks that Elasticsearch produces a sane publish_address when it binds to
|
* Checks that Elasticsearch produces a sane publish_address when it binds to
|
||||||
|
@ -48,7 +45,7 @@ public class NettyTransportPublishAddressIT extends ESIntegTestCase {
|
||||||
protected Settings nodeSettings(int nodeOrdinal) {
|
protected Settings nodeSettings(int nodeOrdinal) {
|
||||||
return Settings.builder()
|
return Settings.builder()
|
||||||
.put(super.nodeSettings(nodeOrdinal))
|
.put(super.nodeSettings(nodeOrdinal))
|
||||||
.put(TransportModule.TRANSPORT_TYPE_KEY, "netty")
|
.put(NetworkModule.TRANSPORT_TYPE_KEY, "netty")
|
||||||
.put("node.mode", "network").build();
|
.put("node.mode", "network").build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,6 +85,7 @@ import org.elasticsearch.action.update.UpdateRequest;
|
||||||
import org.elasticsearch.action.update.UpdateResponse;
|
import org.elasticsearch.action.update.UpdateResponse;
|
||||||
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
|
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
|
import org.elasticsearch.common.network.NetworkModule;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.query.QueryBuilders;
|
import org.elasticsearch.index.query.QueryBuilders;
|
||||||
import org.elasticsearch.plugins.Plugin;
|
import org.elasticsearch.plugins.Plugin;
|
||||||
|
@ -95,16 +96,32 @@ import org.elasticsearch.test.ESIntegTestCase;
|
||||||
import org.elasticsearch.test.ESIntegTestCase.ClusterScope;
|
import org.elasticsearch.test.ESIntegTestCase.ClusterScope;
|
||||||
import org.elasticsearch.test.ESIntegTestCase.Scope;
|
import org.elasticsearch.test.ESIntegTestCase.Scope;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.*;
|
import org.elasticsearch.transport.Transport;
|
||||||
|
import org.elasticsearch.transport.TransportChannel;
|
||||||
|
import org.elasticsearch.transport.TransportRequest;
|
||||||
|
import org.elasticsearch.transport.TransportRequestHandler;
|
||||||
|
import org.elasticsearch.transport.TransportService;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
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.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
|
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
|
||||||
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailures;
|
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailures;
|
||||||
import static org.hamcrest.Matchers.*;
|
import static org.hamcrest.Matchers.emptyIterable;
|
||||||
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
|
import static org.hamcrest.Matchers.greaterThan;
|
||||||
|
import static org.hamcrest.Matchers.hasItem;
|
||||||
|
import static org.hamcrest.Matchers.instanceOf;
|
||||||
|
|
||||||
@ClusterScope(scope = Scope.SUITE, numClientNodes = 1, minNumDataNodes = 2)
|
@ClusterScope(scope = Scope.SUITE, numClientNodes = 1, minNumDataNodes = 2)
|
||||||
public class IndicesRequestTests extends ESIntegTestCase {
|
public class IndicesRequestTests extends ESIntegTestCase {
|
||||||
|
@ -127,7 +144,7 @@ public class IndicesRequestTests extends ESIntegTestCase {
|
||||||
protected Settings nodeSettings(int ordinal) {
|
protected Settings nodeSettings(int ordinal) {
|
||||||
// must set this independently of the plugin so it overrides MockTransportService
|
// must set this independently of the plugin so it overrides MockTransportService
|
||||||
return Settings.builder().put(super.nodeSettings(ordinal))
|
return Settings.builder().put(super.nodeSettings(ordinal))
|
||||||
.put(TransportModule.TRANSPORT_SERVICE_TYPE_KEY, "intercepting").build();
|
.put(NetworkModule.TRANSPORT_SERVICE_TYPE_KEY, "intercepting").build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -756,8 +773,8 @@ public class IndicesRequestTests extends ESIntegTestCase {
|
||||||
public String description() {
|
public String description() {
|
||||||
return "an intercepting transport service for testing";
|
return "an intercepting transport service for testing";
|
||||||
}
|
}
|
||||||
public void onModule(TransportModule transportModule) {
|
public void onModule(NetworkModule module) {
|
||||||
transportModule.addTransportService("intercepting", InterceptingTransportService.class);
|
module.registerTransportService("intercepting", InterceptingTransportService.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,14 +22,10 @@ package org.elasticsearch.plugin.deletebyquery;
|
||||||
import org.elasticsearch.action.ActionModule;
|
import org.elasticsearch.action.ActionModule;
|
||||||
import org.elasticsearch.action.deletebyquery.DeleteByQueryAction;
|
import org.elasticsearch.action.deletebyquery.DeleteByQueryAction;
|
||||||
import org.elasticsearch.action.deletebyquery.TransportDeleteByQueryAction;
|
import org.elasticsearch.action.deletebyquery.TransportDeleteByQueryAction;
|
||||||
import org.elasticsearch.common.inject.Module;
|
import org.elasticsearch.common.network.NetworkModule;
|
||||||
import org.elasticsearch.plugins.Plugin;
|
import org.elasticsearch.plugins.Plugin;
|
||||||
import org.elasticsearch.rest.RestModule;
|
|
||||||
import org.elasticsearch.rest.action.deletebyquery.RestDeleteByQueryAction;
|
import org.elasticsearch.rest.action.deletebyquery.RestDeleteByQueryAction;
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
|
||||||
|
|
||||||
public class DeleteByQueryPlugin extends Plugin {
|
public class DeleteByQueryPlugin extends Plugin {
|
||||||
|
|
||||||
public static final String NAME = "delete-by-query";
|
public static final String NAME = "delete-by-query";
|
||||||
|
@ -48,8 +44,8 @@ public class DeleteByQueryPlugin extends Plugin {
|
||||||
actionModule.registerAction(DeleteByQueryAction.INSTANCE, TransportDeleteByQueryAction.class);
|
actionModule.registerAction(DeleteByQueryAction.INSTANCE, TransportDeleteByQueryAction.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onModule(RestModule restModule) {
|
public void onModule(NetworkModule module) {
|
||||||
restModule.addRestAction(RestDeleteByQueryAction.class);
|
module.registerRestHandler(RestDeleteByQueryAction.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,14 +26,11 @@ import org.elasticsearch.cluster.routing.IndexShardRoutingTable;
|
||||||
import org.elasticsearch.cluster.routing.ShardRouting;
|
import org.elasticsearch.cluster.routing.ShardRouting;
|
||||||
import org.elasticsearch.common.Strings;
|
import org.elasticsearch.common.Strings;
|
||||||
import org.elasticsearch.common.io.PathUtils;
|
import org.elasticsearch.common.io.PathUtils;
|
||||||
|
import org.elasticsearch.common.network.NetworkModule;
|
||||||
import org.elasticsearch.common.regex.Regex;
|
import org.elasticsearch.common.regex.Regex;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.indices.recovery.RecoverySettings;
|
|
||||||
import org.elasticsearch.plugins.Plugin;
|
|
||||||
import org.elasticsearch.test.junit.annotations.TestLogging;
|
import org.elasticsearch.test.junit.annotations.TestLogging;
|
||||||
import org.elasticsearch.test.junit.listeners.LoggingListener;
|
import org.elasticsearch.test.junit.listeners.LoggingListener;
|
||||||
import org.elasticsearch.transport.Transport;
|
|
||||||
import org.elasticsearch.transport.TransportModule;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.annotation.ElementType;
|
import java.lang.annotation.ElementType;
|
||||||
|
@ -43,10 +40,7 @@ import java.lang.annotation.RetentionPolicy;
|
||||||
import java.lang.annotation.Target;
|
import java.lang.annotation.Target;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.is;
|
import static org.hamcrest.Matchers.is;
|
||||||
|
|
||||||
|
@ -238,7 +232,7 @@ public abstract class ESBackcompatTestCase extends ESIntegTestCase {
|
||||||
|
|
||||||
protected Settings commonNodeSettings(int nodeOrdinal) {
|
protected Settings commonNodeSettings(int nodeOrdinal) {
|
||||||
Settings.Builder builder = Settings.builder().put(requiredSettings());
|
Settings.Builder builder = Settings.builder().put(requiredSettings());
|
||||||
builder.put(TransportModule.TRANSPORT_TYPE_KEY, "netty"); // run same transport / disco as external
|
builder.put(NetworkModule.TRANSPORT_TYPE_KEY, "netty"); // run same transport / disco as external
|
||||||
builder.put("node.mode", "network");
|
builder.put("node.mode", "network");
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,11 +28,11 @@ import org.elasticsearch.common.SuppressForbidden;
|
||||||
import org.elasticsearch.common.io.PathUtils;
|
import org.elasticsearch.common.io.PathUtils;
|
||||||
import org.elasticsearch.common.logging.ESLogger;
|
import org.elasticsearch.common.logging.ESLogger;
|
||||||
import org.elasticsearch.common.logging.Loggers;
|
import org.elasticsearch.common.logging.Loggers;
|
||||||
|
import org.elasticsearch.common.network.NetworkModule;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.transport.TransportAddress;
|
import org.elasticsearch.common.transport.TransportAddress;
|
||||||
import org.elasticsearch.discovery.DiscoveryModule;
|
import org.elasticsearch.discovery.DiscoveryModule;
|
||||||
import org.elasticsearch.node.internal.InternalSettingsPreparer;
|
import org.elasticsearch.node.internal.InternalSettingsPreparer;
|
||||||
import org.elasticsearch.transport.TransportModule;
|
|
||||||
|
|
||||||
import java.io.Closeable;
|
import java.io.Closeable;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -111,9 +111,9 @@ final class ExternalNode implements Closeable {
|
||||||
case "path.home":
|
case "path.home":
|
||||||
case "node.mode":
|
case "node.mode":
|
||||||
case "node.local":
|
case "node.local":
|
||||||
case TransportModule.TRANSPORT_TYPE_KEY:
|
case NetworkModule.TRANSPORT_TYPE_KEY:
|
||||||
case DiscoveryModule.DISCOVERY_TYPE_KEY:
|
case DiscoveryModule.DISCOVERY_TYPE_KEY:
|
||||||
case TransportModule.TRANSPORT_SERVICE_TYPE_KEY:
|
case NetworkModule.TRANSPORT_SERVICE_TYPE_KEY:
|
||||||
case InternalSettingsPreparer.IGNORE_SYSTEM_PROPERTIES_SETTING:
|
case InternalSettingsPreparer.IGNORE_SYSTEM_PROPERTIES_SETTING:
|
||||||
continue;
|
continue;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -23,6 +23,7 @@ import org.elasticsearch.Version;
|
||||||
import org.elasticsearch.cluster.node.DiscoveryNode;
|
import org.elasticsearch.cluster.node.DiscoveryNode;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
||||||
|
import org.elasticsearch.common.network.NetworkModule;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.plugins.Plugin;
|
import org.elasticsearch.plugins.Plugin;
|
||||||
import org.elasticsearch.test.ESIntegTestCase;
|
import org.elasticsearch.test.ESIntegTestCase;
|
||||||
|
@ -30,7 +31,6 @@ import org.elasticsearch.test.VersionUtils;
|
||||||
import org.elasticsearch.test.hamcrest.ElasticsearchAssertions;
|
import org.elasticsearch.test.hamcrest.ElasticsearchAssertions;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.TransportException;
|
import org.elasticsearch.transport.TransportException;
|
||||||
import org.elasticsearch.transport.TransportModule;
|
|
||||||
import org.elasticsearch.transport.TransportRequest;
|
import org.elasticsearch.transport.TransportRequest;
|
||||||
import org.elasticsearch.transport.TransportRequestOptions;
|
import org.elasticsearch.transport.TransportRequestOptions;
|
||||||
import org.elasticsearch.transport.TransportResponse;
|
import org.elasticsearch.transport.TransportResponse;
|
||||||
|
@ -51,12 +51,12 @@ public class AssertingLocalTransport extends LocalTransport {
|
||||||
public String description() {
|
public String description() {
|
||||||
return "an asserting transport for testing";
|
return "an asserting transport for testing";
|
||||||
}
|
}
|
||||||
public void onModule(TransportModule transportModule) {
|
public void onModule(NetworkModule module) {
|
||||||
transportModule.addTransport("mock", AssertingLocalTransport.class);
|
module.registerTransport("mock", AssertingLocalTransport.class);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public Settings additionalSettings() {
|
public Settings additionalSettings() {
|
||||||
return Settings.builder().put(TransportModule.TRANSPORT_TYPE_KEY, "mock").build();
|
return Settings.builder().put(NetworkModule.TRANSPORT_TYPE_KEY, "mock").build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ import org.elasticsearch.common.component.LifecycleListener;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.io.stream.BytesStreamOutput;
|
import org.elasticsearch.common.io.stream.BytesStreamOutput;
|
||||||
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.NetworkService;
|
import org.elasticsearch.common.network.NetworkService;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.transport.BoundTransportAddress;
|
import org.elasticsearch.common.transport.BoundTransportAddress;
|
||||||
|
@ -38,7 +39,6 @@ import org.elasticsearch.transport.ConnectTransportException;
|
||||||
import org.elasticsearch.transport.RequestHandlerRegistry;
|
import org.elasticsearch.transport.RequestHandlerRegistry;
|
||||||
import org.elasticsearch.transport.Transport;
|
import org.elasticsearch.transport.Transport;
|
||||||
import org.elasticsearch.transport.TransportException;
|
import org.elasticsearch.transport.TransportException;
|
||||||
import org.elasticsearch.transport.TransportModule;
|
|
||||||
import org.elasticsearch.transport.TransportRequest;
|
import org.elasticsearch.transport.TransportRequest;
|
||||||
import org.elasticsearch.transport.TransportRequestOptions;
|
import org.elasticsearch.transport.TransportRequestOptions;
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
@ -75,12 +75,12 @@ public class MockTransportService extends TransportService {
|
||||||
public String description() {
|
public String description() {
|
||||||
return "a mock transport service for testing";
|
return "a mock transport service for testing";
|
||||||
}
|
}
|
||||||
public void onModule(TransportModule transportModule) {
|
public void onModule(NetworkModule module) {
|
||||||
transportModule.addTransportService("mock", MockTransportService.class);
|
module.registerTransportService("mock", MockTransportService.class);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public Settings additionalSettings() {
|
public Settings additionalSettings() {
|
||||||
return Settings.builder().put(TransportModule.TRANSPORT_SERVICE_TYPE_KEY, "mock").build();
|
return Settings.builder().put(NetworkModule.TRANSPORT_SERVICE_TYPE_KEY, "mock").build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue