Cut over settings registration to a pull model (#18890)
Today we have a push model for registering basically anything. All our extension points are defined on modules which we pass in to plugins. This is harder to maintain and adds unnecessary dependencies on the modules itself. This change moves towards a pull model where the plugin offers a getter kind of method to get the extensions. This will also help in the future if we need to pass dependencies to the extension points which can easily be defined on the method as arguments if a pull model is used.
This commit is contained in:
parent
5aa4769b25
commit
b22c526b34
|
@ -753,7 +753,6 @@
|
|||
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]client[/\\]AbstractClientHeadersTestCase.java" checks="LineLength" />
|
||||
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]cluster[/\\]ClusterHealthIT.java" checks="LineLength" />
|
||||
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]cluster[/\\]ClusterInfoServiceIT.java" checks="LineLength" />
|
||||
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]cluster[/\\]ClusterModuleTests.java" checks="LineLength" />
|
||||
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]cluster[/\\]ClusterStateDiffIT.java" checks="LineLength" />
|
||||
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]cluster[/\\]ClusterStateTests.java" checks="LineLength" />
|
||||
<suppress files="core[/\\]src[/\\]test[/\\]java[/\\]org[/\\]elasticsearch[/\\]cluster[/\\]DiskUsageTests.java" checks="LineLength" />
|
||||
|
|
|
@ -37,19 +37,21 @@ import org.elasticsearch.common.inject.ModulesBuilder;
|
|||
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
||||
import org.elasticsearch.common.network.NetworkModule;
|
||||
import org.elasticsearch.common.network.NetworkService;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.common.transport.TransportAddress;
|
||||
import org.elasticsearch.common.util.BigArrays;
|
||||
import org.elasticsearch.indices.breaker.CircuitBreakerModule;
|
||||
import org.elasticsearch.indices.breaker.CircuitBreakerService;
|
||||
import org.elasticsearch.monitor.MonitorService;
|
||||
import org.elasticsearch.node.Node;
|
||||
import org.elasticsearch.node.internal.InternalSettingsPreparer;
|
||||
import org.elasticsearch.plugins.Plugin;
|
||||
import org.elasticsearch.plugins.PluginsModule;
|
||||
import org.elasticsearch.plugins.PluginsService;
|
||||
import org.elasticsearch.search.SearchModule;
|
||||
import org.elasticsearch.threadpool.ExecutorBuilder;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
import org.elasticsearch.threadpool.ThreadPoolModule;
|
||||
import org.elasticsearch.transport.TransportService;
|
||||
import org.elasticsearch.transport.netty.NettyTransport;
|
||||
|
||||
|
@ -134,10 +136,9 @@ public class TransportClient extends AbstractClient {
|
|||
modules.add(pluginModule);
|
||||
}
|
||||
modules.add(new PluginsModule(pluginsService));
|
||||
modules.add(new SettingsModule(settings));
|
||||
modules.add(new NetworkModule(networkService, settings, true, namedWriteableRegistry));
|
||||
modules.add(new ClusterNameModule(settings));
|
||||
modules.add(new ThreadPoolModule(threadPool));
|
||||
modules.add(b -> b.bind(ThreadPool.class).toInstance(threadPool));
|
||||
modules.add(new SearchModule(settings, namedWriteableRegistry) {
|
||||
@Override
|
||||
protected void configure() {
|
||||
|
@ -145,9 +146,20 @@ public class TransportClient extends AbstractClient {
|
|||
}
|
||||
});
|
||||
modules.add(new ActionModule(false, true));
|
||||
modules.add(new CircuitBreakerModule(settings));
|
||||
|
||||
pluginsService.processModules(modules);
|
||||
final List<Setting<?>> additionalSettings = new ArrayList<>();
|
||||
final List<String> additionalSettingsFilter = new ArrayList<>();
|
||||
additionalSettings.addAll(pluginsService.getPluginSettings());
|
||||
additionalSettingsFilter.addAll(pluginsService.getPluginSettingsFilter());
|
||||
for (final ExecutorBuilder<?> builder : threadPool.builders()) {
|
||||
additionalSettings.addAll(builder.getRegisteredSettings());
|
||||
}
|
||||
SettingsModule settingsModule = new SettingsModule(settings, additionalSettings, additionalSettingsFilter);
|
||||
CircuitBreakerService circuitBreakerService = Node.createCircuitBreakerService(settingsModule.getSettings(),
|
||||
settingsModule.getClusterSettings());
|
||||
modules.add(settingsModule);
|
||||
modules.add((b -> b.bind(CircuitBreakerService.class).toInstance(circuitBreakerService)));
|
||||
|
||||
Injector injector = modules.createInjector();
|
||||
final TransportService transportService = injector.getInstance(TransportService.class);
|
||||
|
|
|
@ -420,6 +420,7 @@ public final class ClusterSettings extends AbstractScopedSettings {
|
|||
ResourceWatcherService.RELOAD_INTERVAL_MEDIUM,
|
||||
ResourceWatcherService.RELOAD_INTERVAL_LOW,
|
||||
SearchModule.INDICES_MAX_CLAUSE_COUNT_SETTING,
|
||||
ThreadPool.ESTIMATED_TIME_INTERVAL_SETTING
|
||||
ThreadPool.ESTIMATED_TIME_INTERVAL_SETTING,
|
||||
Node.BREAKER_TYPE_KEY
|
||||
)));
|
||||
}
|
||||
|
|
|
@ -81,6 +81,11 @@ public class Setting<T> extends ToXContentToBytes {
|
|||
*/
|
||||
Filtered,
|
||||
|
||||
/**
|
||||
* iff this setting is shared with more than one module ie. can be defined multiple times.
|
||||
*/
|
||||
Shared,
|
||||
|
||||
/**
|
||||
* iff this setting can be dynamically updateable
|
||||
*/
|
||||
|
@ -247,6 +252,13 @@ public class Setting<T> extends ToXContentToBytes {
|
|||
return properties.contains(Property.Deprecated);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns <code>true</code> if this setting is shared with more than one other module or plugin, otherwise <code>false</code>
|
||||
*/
|
||||
public boolean isShared() {
|
||||
return properties.contains(Property.Shared);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns <code>true</code> iff this setting is a group setting. Group settings represent a set of settings rather than a single value.
|
||||
* The key, see {@link #getKey()}, in contrast to non-group settings is a prefix like <tt>cluster.store.</tt> that matches all settings
|
||||
|
|
|
@ -19,7 +19,8 @@
|
|||
|
||||
package org.elasticsearch.common.settings;
|
||||
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Binder;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.logging.ESLogger;
|
||||
import org.elasticsearch.common.logging.Loggers;
|
||||
import org.elasticsearch.common.xcontent.ToXContent;
|
||||
|
@ -28,9 +29,11 @@ import org.elasticsearch.common.xcontent.XContentType;
|
|||
import org.elasticsearch.tribe.TribeService;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
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.Predicate;
|
||||
|
@ -40,7 +43,7 @@ import java.util.stream.IntStream;
|
|||
/**
|
||||
* A module that binds the provided settings to the {@link Settings} interface.
|
||||
*/
|
||||
public class SettingsModule extends AbstractModule {
|
||||
public class SettingsModule implements Module {
|
||||
|
||||
private final Settings settings;
|
||||
private final Set<String> settingsFilterPattern = new HashSet<>();
|
||||
|
@ -49,8 +52,14 @@ public class SettingsModule extends AbstractModule {
|
|||
private static final Predicate<String> TRIBE_CLIENT_NODE_SETTINGS_PREDICATE = (s) -> s.startsWith("tribe.")
|
||||
&& TribeService.TRIBE_SETTING_KEYS.contains(s) == false;
|
||||
private final ESLogger logger;
|
||||
private final IndexScopedSettings indexScopedSettings;
|
||||
private final ClusterSettings clusterSettings;
|
||||
|
||||
public SettingsModule(Settings settings) {
|
||||
public SettingsModule(Settings settings, Setting<?>... additionalSettings) {
|
||||
this(settings, Arrays.asList(additionalSettings), Collections.emptyList());
|
||||
}
|
||||
|
||||
public SettingsModule(Settings settings, List<Setting<?>> additionalSettings, List<String> settingsFilter) {
|
||||
logger = Loggers.getLogger(getClass(), settings);
|
||||
this.settings = settings;
|
||||
for (Setting<?> setting : ClusterSettings.BUILT_IN_CLUSTER_SETTINGS) {
|
||||
|
@ -59,12 +68,16 @@ public class SettingsModule extends AbstractModule {
|
|||
for (Setting<?> setting : IndexScopedSettings.BUILT_IN_INDEX_SETTINGS) {
|
||||
registerSetting(setting);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
final IndexScopedSettings indexScopedSettings = new IndexScopedSettings(settings, new HashSet<>(this.indexSettings.values()));
|
||||
final ClusterSettings clusterSettings = new ClusterSettings(settings, new HashSet<>(this.nodeSettings.values()));
|
||||
for (Setting<?> setting : additionalSettings) {
|
||||
registerSetting(setting);
|
||||
}
|
||||
|
||||
for (String filter : settingsFilter) {
|
||||
registerSettingsFilter(filter);
|
||||
}
|
||||
this.indexScopedSettings = new IndexScopedSettings(settings, new HashSet<>(this.indexSettings.values()));
|
||||
this.clusterSettings = new ClusterSettings(settings, new HashSet<>(this.nodeSettings.values()));
|
||||
Settings indexSettings = settings.filter((s) -> (s.startsWith("index.") &&
|
||||
// special case - we want to get Did you mean indices.query.bool.max_clause_count
|
||||
// which means we need to by-pass this check for this setting
|
||||
|
@ -87,7 +100,7 @@ public class SettingsModule extends AbstractModule {
|
|||
"In order to upgrade all indices the settings must be updated via the /${index}/_settings API. " +
|
||||
"Unless all settings are dynamic all indices must be closed in order to apply the upgrade" +
|
||||
"Indices created in the future should use index templates to set default values."
|
||||
).split(" ")) {
|
||||
).split(" ")) {
|
||||
if (count + word.length() > 85) {
|
||||
builder.append(System.lineSeparator());
|
||||
count = 0;
|
||||
|
@ -124,19 +137,23 @@ public class SettingsModule extends AbstractModule {
|
|||
final Predicate<String> acceptOnlyClusterSettings = TRIBE_CLIENT_NODE_SETTINGS_PREDICATE.negate();
|
||||
clusterSettings.validate(settings.filter(acceptOnlyClusterSettings));
|
||||
validateTribeSettings(settings, clusterSettings);
|
||||
bind(Settings.class).toInstance(settings);
|
||||
bind(SettingsFilter.class).toInstance(new SettingsFilter(settings, settingsFilterPattern));
|
||||
}
|
||||
|
||||
bind(ClusterSettings.class).toInstance(clusterSettings);
|
||||
bind(IndexScopedSettings.class).toInstance(indexScopedSettings);
|
||||
@Override
|
||||
public void configure(Binder binder) {
|
||||
binder.bind(Settings.class).toInstance(settings);
|
||||
binder.bind(SettingsFilter.class).toInstance(new SettingsFilter(settings, settingsFilterPattern));
|
||||
binder.bind(ClusterSettings.class).toInstance(clusterSettings);
|
||||
binder.bind(IndexScopedSettings.class).toInstance(indexScopedSettings);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Registers a new setting. This method should be used by plugins in order to expose any custom settings the plugin defines.
|
||||
* Unless a setting is registered the setting is unusable. If a setting is never the less specified the node will reject
|
||||
* the setting during startup.
|
||||
*/
|
||||
public void registerSetting(Setting<?> setting) {
|
||||
private void registerSetting(Setting<?> setting) {
|
||||
if (setting.isFiltered()) {
|
||||
if (settingsFilterPattern.contains(setting.getKey()) == false) {
|
||||
registerSettingsFilter(setting.getKey());
|
||||
|
@ -144,13 +161,15 @@ public class SettingsModule extends AbstractModule {
|
|||
}
|
||||
if (setting.hasNodeScope() || setting.hasIndexScope()) {
|
||||
if (setting.hasNodeScope()) {
|
||||
if (nodeSettings.containsKey(setting.getKey())) {
|
||||
Setting<?> existingSetting = nodeSettings.get(setting.getKey());
|
||||
if (existingSetting != null && (setting.isShared() == false || existingSetting.isShared() == false)) {
|
||||
throw new IllegalArgumentException("Cannot register setting [" + setting.getKey() + "] twice");
|
||||
}
|
||||
nodeSettings.put(setting.getKey(), setting);
|
||||
}
|
||||
if (setting.hasIndexScope()) {
|
||||
if (indexSettings.containsKey(setting.getKey())) {
|
||||
Setting<?> existingSetting = indexSettings.get(setting.getKey());
|
||||
if (existingSetting != null && (setting.isShared() == false || existingSetting.isShared() == false)) {
|
||||
throw new IllegalArgumentException("Cannot register setting [" + setting.getKey() + "] twice");
|
||||
}
|
||||
indexSettings.put(setting.getKey(), setting);
|
||||
|
@ -164,7 +183,7 @@ public class SettingsModule extends AbstractModule {
|
|||
* Registers a settings filter pattern that allows to filter out certain settings that for instance contain sensitive information
|
||||
* or if a setting is for internal purposes only. The given pattern must either be a valid settings key or a simple regexp pattern.
|
||||
*/
|
||||
public void registerSettingsFilter(String filter) {
|
||||
private void registerSettingsFilter(String filter) {
|
||||
if (SettingsFilter.isValidPattern(filter) == false) {
|
||||
throw new IllegalArgumentException("filter [" + filter +"] is invalid must be either a key or a regex pattern");
|
||||
}
|
||||
|
@ -174,19 +193,6 @@ public class SettingsModule extends AbstractModule {
|
|||
settingsFilterPattern.add(filter);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a setting has already been registered
|
||||
*/
|
||||
public boolean exists(Setting<?> setting) {
|
||||
if (setting.hasNodeScope()) {
|
||||
return nodeSettings.containsKey(setting.getKey());
|
||||
}
|
||||
if (setting.hasIndexScope()) {
|
||||
return indexSettings.containsKey(setting.getKey());
|
||||
}
|
||||
throw new IllegalArgumentException("setting scope is unknown. This should never happen!");
|
||||
}
|
||||
|
||||
private void validateTribeSettings(Settings settings, ClusterSettings clusterSettings) {
|
||||
Map<String, Settings> groups = settings.filter(TRIBE_CLIENT_NODE_SETTINGS_PREDICATE).getGroups("tribe.", true);
|
||||
for (Map.Entry<String, Settings> tribeSettings : groups.entrySet()) {
|
||||
|
@ -200,4 +206,16 @@ public class SettingsModule extends AbstractModule {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Settings getSettings() {
|
||||
return settings;
|
||||
}
|
||||
|
||||
public IndexScopedSettings getIndexScopedSettings() {
|
||||
return indexScopedSettings;
|
||||
}
|
||||
|
||||
public ClusterSettings getClusterSettings() {
|
||||
return clusterSettings;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
package org.elasticsearch.env;
|
||||
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -27,13 +28,16 @@ import org.elasticsearch.common.inject.AbstractModule;
|
|||
public class EnvironmentModule extends AbstractModule {
|
||||
|
||||
private final Environment environment;
|
||||
private final ThreadPool threadPool;
|
||||
|
||||
public EnvironmentModule(Environment environment) {
|
||||
public EnvironmentModule(Environment environment, ThreadPool threadPool) {
|
||||
this.threadPool = threadPool;
|
||||
this.environment = environment;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(ThreadPool.class).toInstance(threadPool);
|
||||
bind(Environment.class).toInstance(environment);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,48 +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.indices.breaker;
|
||||
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
|
||||
public class CircuitBreakerModule extends AbstractModule {
|
||||
|
||||
public static final String TYPE_KEY = "indices.breaker.type";
|
||||
|
||||
private final Settings settings;
|
||||
|
||||
public CircuitBreakerModule(Settings settings) {
|
||||
this.settings = settings;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
String type = settings.get(TYPE_KEY);
|
||||
Class<? extends CircuitBreakerService> impl;
|
||||
if (type == null || type.equals("hierarchy")) {
|
||||
impl = HierarchyCircuitBreakerService.class;
|
||||
} else if (type.equals("none")) {
|
||||
impl = NoneCircuitBreakerService.class;
|
||||
} else {
|
||||
throw new IllegalArgumentException("Unknown circuit breaker type [" + type + "]");
|
||||
}
|
||||
bind(CircuitBreakerService.class).to(impl).asEagerSingleton();
|
||||
}
|
||||
}
|
|
@ -64,4 +64,5 @@ public abstract class CircuitBreakerService extends AbstractLifecycleComponent<C
|
|||
@Override
|
||||
protected void doClose() {
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -23,7 +23,6 @@ import org.elasticsearch.common.breaker.ChildMemoryCircuitBreaker;
|
|||
import org.elasticsearch.common.breaker.CircuitBreaker;
|
||||
import org.elasticsearch.common.breaker.CircuitBreakingException;
|
||||
import org.elasticsearch.common.breaker.NoopCircuitBreaker;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.logging.Loggers;
|
||||
import org.elasticsearch.common.settings.ClusterSettings;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
|
@ -79,7 +78,6 @@ public class HierarchyCircuitBreakerService extends CircuitBreakerService {
|
|||
// Tripped count for when redistribution was attempted but wasn't successful
|
||||
private final AtomicLong parentTripCount = new AtomicLong(0);
|
||||
|
||||
@Inject
|
||||
public HierarchyCircuitBreakerService(Settings settings, ClusterSettings clusterSettings) {
|
||||
super(settings);
|
||||
this.fielddataSettings = new BreakerSettings(CircuitBreaker.FIELDDATA,
|
||||
|
|
|
@ -78,7 +78,9 @@ import org.elasticsearch.http.HttpServerTransport;
|
|||
import org.elasticsearch.indices.IndicesModule;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.indices.analysis.AnalysisModule;
|
||||
import org.elasticsearch.indices.breaker.CircuitBreakerModule;
|
||||
import org.elasticsearch.indices.breaker.CircuitBreakerService;
|
||||
import org.elasticsearch.indices.breaker.HierarchyCircuitBreakerService;
|
||||
import org.elasticsearch.indices.breaker.NoneCircuitBreakerService;
|
||||
import org.elasticsearch.indices.cluster.IndicesClusterStateService;
|
||||
import org.elasticsearch.indices.store.IndicesStore;
|
||||
import org.elasticsearch.indices.ttl.IndicesTTLService;
|
||||
|
@ -101,7 +103,6 @@ import org.elasticsearch.snapshots.SnapshotsService;
|
|||
import org.elasticsearch.tasks.TaskPersistenceService;
|
||||
import org.elasticsearch.threadpool.ExecutorBuilder;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
import org.elasticsearch.threadpool.ThreadPoolModule;
|
||||
import org.elasticsearch.transport.TransportService;
|
||||
import org.elasticsearch.tribe.TribeModule;
|
||||
import org.elasticsearch.tribe.TribeService;
|
||||
|
@ -133,6 +134,7 @@ import java.util.function.Function;
|
|||
*/
|
||||
public class Node implements Closeable {
|
||||
|
||||
|
||||
public static final Setting<Boolean> WRITE_PORTS_FIELD_SETTING =
|
||||
Setting.boolSetting("node.portsfile", false, Property.NodeScope);
|
||||
public static final Setting<Boolean> NODE_DATA_SETTING = Setting.boolSetting("node.data", true, Property.NodeScope);
|
||||
|
@ -146,6 +148,16 @@ public class Node implements Closeable {
|
|||
Setting.boolSetting("node.ingest", true, Property.NodeScope);
|
||||
public static final Setting<String> NODE_NAME_SETTING = Setting.simpleString("node.name", Property.NodeScope);
|
||||
public static final Setting<Settings> NODE_ATTRIBUTES = Setting.groupSetting("node.attr.", Property.NodeScope);
|
||||
public static final Setting<String> BREAKER_TYPE_KEY = new Setting<>("indices.breaker.type", "hierarchy", (s) -> {
|
||||
switch (s) {
|
||||
case "hierarchy":
|
||||
case "none":
|
||||
return s;
|
||||
default:
|
||||
throw new IllegalArgumentException("indices.breaker.type must be one of [hierarchy, none] but was: " + s);
|
||||
}
|
||||
}, Setting.Property.NodeScope);
|
||||
|
||||
|
||||
|
||||
private static final String CLIENT_TYPE = "node";
|
||||
|
@ -168,8 +180,9 @@ public class Node implements Closeable {
|
|||
protected Node(Environment tmpEnv, Version version, Collection<Class<? extends Plugin>> classpathPlugins) {
|
||||
Settings tmpSettings = Settings.builder().put(tmpEnv.settings())
|
||||
.put(Client.CLIENT_TYPE_SETTING_S.getKey(), CLIENT_TYPE).build();
|
||||
tmpSettings = TribeService.processSettings(tmpSettings);
|
||||
final List<Closeable> resourcesToClose = new ArrayList<>(); // register everything we need to release in the case of an error
|
||||
|
||||
tmpSettings = TribeService.processSettings(tmpSettings);
|
||||
ESLogger logger = Loggers.getLogger(Node.class, NODE_NAME_SETTING.get(tmpSettings));
|
||||
final String displayVersion = version + (Build.CURRENT.isSnapshot() ? "-SNAPSHOT" : "");
|
||||
final JvmInfo jvmInfo = JvmInfo.jvmInfo();
|
||||
|
@ -203,40 +216,48 @@ public class Node implements Closeable {
|
|||
this.pluginsService = new PluginsService(tmpSettings, tmpEnv.modulesFile(), tmpEnv.pluginsFile(), classpathPlugins);
|
||||
this.settings = pluginsService.updatedSettings();
|
||||
// create the environment based on the finalized (processed) view of the settings
|
||||
this.environment = new Environment(this.settings());
|
||||
|
||||
final NodeEnvironment nodeEnvironment;
|
||||
try {
|
||||
nodeEnvironment = new NodeEnvironment(this.settings, this.environment);
|
||||
} catch (IOException ex) {
|
||||
throw new IllegalStateException("Failed to created node environment", ex);
|
||||
}
|
||||
final NetworkService networkService = new NetworkService(settings);
|
||||
this.environment = new Environment(this.settings);
|
||||
final List<ExecutorBuilder<?>> executorBuilders = pluginsService.getExecutorBuilders(settings);
|
||||
final ThreadPool threadPool = new ThreadPool(settings, executorBuilders.toArray(new ExecutorBuilder[0]));
|
||||
final ScriptModule scriptModule = ScriptModule.create(settings, pluginsService.filterPlugins(ScriptPlugin.class));
|
||||
NamedWriteableRegistry namedWriteableRegistry = new NamedWriteableRegistry();
|
||||
|
||||
boolean success = false;
|
||||
try {
|
||||
final ThreadPool threadPool = new ThreadPool(settings, executorBuilders.toArray(new ExecutorBuilder[0]));
|
||||
resourcesToClose.add(() -> ThreadPool.terminate(threadPool, 10, TimeUnit.SECONDS));
|
||||
final List<Setting<?>> additionalSettings = new ArrayList<>();
|
||||
final List<String> additionalSettingsFilter = new ArrayList<>();
|
||||
additionalSettings.addAll(pluginsService.getPluginSettings());
|
||||
additionalSettingsFilter.addAll(pluginsService.getPluginSettingsFilter());
|
||||
for (final ExecutorBuilder<?> builder : threadPool.builders()) {
|
||||
additionalSettings.addAll(builder.getRegisteredSettings());
|
||||
}
|
||||
final ScriptModule scriptModule = ScriptModule.create(settings, pluginsService.filterPlugins(ScriptPlugin.class));
|
||||
additionalSettings.addAll(scriptModule.getSettings());
|
||||
// this is as early as we can validate settings at this point. we already pass them to ScriptModule as well as ThreadPool
|
||||
// so we might be late here already
|
||||
final SettingsModule settingsModule = new SettingsModule(this.settings, additionalSettings, additionalSettingsFilter);
|
||||
final NodeEnvironment nodeEnvironment;
|
||||
try {
|
||||
nodeEnvironment = new NodeEnvironment(this.settings, this.environment);
|
||||
resourcesToClose.add(nodeEnvironment);
|
||||
} catch (IOException ex) {
|
||||
throw new IllegalStateException("Failed to created node environment", ex);
|
||||
}
|
||||
final NetworkService networkService = new NetworkService(settings);
|
||||
NamedWriteableRegistry namedWriteableRegistry = new NamedWriteableRegistry();
|
||||
ModulesBuilder modules = new ModulesBuilder();
|
||||
modules.add(new Version.Module(version));
|
||||
modules.add(new CircuitBreakerModule(settings));
|
||||
// plugin modules must be added here, before others or we can get crazy injection errors...
|
||||
for (Module pluginModule : pluginsService.nodeModules()) {
|
||||
modules.add(pluginModule);
|
||||
}
|
||||
final MonitorService monitorService = new MonitorService(settings, nodeEnvironment, threadPool);
|
||||
modules.add(new PluginsModule(pluginsService));
|
||||
SettingsModule settingsModule = new SettingsModule(this.settings);
|
||||
modules.add(settingsModule);
|
||||
modules.add(new EnvironmentModule(environment));
|
||||
modules.add(new EnvironmentModule(environment, threadPool));
|
||||
modules.add(new NodeModule(this, monitorService));
|
||||
modules.add(new NetworkModule(networkService, settings, false, namedWriteableRegistry));
|
||||
modules.add(scriptModule);
|
||||
modules.add(new NodeEnvironmentModule(nodeEnvironment));
|
||||
modules.add(new ClusterNameModule(this.settings));
|
||||
final ThreadPoolModule threadPoolModule = new ThreadPoolModule(threadPool);
|
||||
modules.add(threadPoolModule);
|
||||
modules.add(new DiscoveryModule(this.settings));
|
||||
modules.add(new ClusterModule(this.settings));
|
||||
modules.add(new IndicesModule());
|
||||
|
@ -248,23 +269,20 @@ public class Node implements Closeable {
|
|||
modules.add(new RepositoriesModule());
|
||||
modules.add(new TribeModule());
|
||||
modules.add(new AnalysisModule(environment));
|
||||
|
||||
pluginsService.processModules(modules);
|
||||
|
||||
scriptModule.prepareSettings(settingsModule);
|
||||
|
||||
threadPoolModule.prepareSettings(settingsModule);
|
||||
|
||||
CircuitBreakerService circuitBreakerService = createCircuitBreakerService(settingsModule.getSettings(),
|
||||
settingsModule.getClusterSettings());
|
||||
resourcesToClose.add(circuitBreakerService);
|
||||
modules.add(settingsModule);
|
||||
modules.add(b -> b.bind(CircuitBreakerService.class).toInstance(circuitBreakerService));
|
||||
injector = modules.createInjector();
|
||||
|
||||
client = injector.getInstance(Client.class);
|
||||
success = true;
|
||||
} catch (IOException ex) {
|
||||
throw new ElasticsearchException("failed to bind service", ex);
|
||||
} finally {
|
||||
if (!success) {
|
||||
nodeEnvironment.close();
|
||||
ThreadPool.terminate(threadPool, 10, TimeUnit.SECONDS);
|
||||
IOUtils.closeWhileHandlingException(resourcesToClose);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -590,4 +608,19 @@ public class Node implements Closeable {
|
|||
throw new RuntimeException("Failed to rename ports file", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new {@link CircuitBreakerService} based on the settings provided.
|
||||
* @see #BREAKER_TYPE_KEY
|
||||
*/
|
||||
public static CircuitBreakerService createCircuitBreakerService(Settings settings, ClusterSettings clusterSettings) {
|
||||
String type = BREAKER_TYPE_KEY.get(settings);
|
||||
if (type.equals("hierarchy")) {
|
||||
return new HierarchyCircuitBreakerService(settings, clusterSettings);
|
||||
} else if (type.equals("none")) {
|
||||
return new NoneCircuitBreakerService();
|
||||
} else {
|
||||
throw new IllegalArgumentException("Unknown circuit breaker type [" + type + "]");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,7 +21,9 @@ package org.elasticsearch.plugins;
|
|||
|
||||
import org.elasticsearch.common.component.LifecycleComponent;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.index.IndexModule;
|
||||
import org.elasticsearch.script.ScriptModule;
|
||||
import org.elasticsearch.threadpool.ExecutorBuilder;
|
||||
|
@ -76,6 +78,16 @@ public abstract class Plugin {
|
|||
*/
|
||||
public void onIndexModule(IndexModule indexModule) {}
|
||||
|
||||
/**
|
||||
* Returns a list of additional {@link Setting} definitions for this plugin.
|
||||
*/
|
||||
public List<Setting<?>> getSettings() { return Collections.emptyList(); }
|
||||
|
||||
/**
|
||||
* Returns a list of additional settings filter for this plugin
|
||||
*/
|
||||
public List<String> getSettingsFilter() { return Collections.emptyList(); }
|
||||
|
||||
/**
|
||||
* Old-style guice index level extension point.
|
||||
*
|
||||
|
@ -84,6 +96,15 @@ public abstract class Plugin {
|
|||
@Deprecated
|
||||
public final void onModule(IndexModule indexModule) {}
|
||||
|
||||
|
||||
/**
|
||||
* Old-style guice settings extension point.
|
||||
*
|
||||
* @deprecated use #getSettings and #getSettingsFilter instead
|
||||
*/
|
||||
@Deprecated
|
||||
public final void onModule(SettingsModule settingsModule) {}
|
||||
|
||||
/**
|
||||
* Old-style guice scripting extension point.
|
||||
*
|
||||
|
|
|
@ -39,6 +39,7 @@ import org.elasticsearch.common.logging.Loggers;
|
|||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Setting.Property;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.index.IndexModule;
|
||||
import org.elasticsearch.script.NativeScriptFactory;
|
||||
import org.elasticsearch.script.ScriptContext;
|
||||
|
@ -64,7 +65,6 @@ import java.util.Map;
|
|||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static org.elasticsearch.common.io.FileSystemUtils.isAccessibleDirectory;
|
||||
|
||||
|
@ -83,6 +83,14 @@ public class PluginsService extends AbstractComponent {
|
|||
|
||||
private final Map<Plugin, List<OnModuleReference>> onModuleReferences;
|
||||
|
||||
public List<Setting<?>> getPluginSettings() {
|
||||
return plugins.stream().flatMap(p -> p.v2().getSettings().stream()).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public List<String> getPluginSettingsFilter() {
|
||||
return plugins.stream().flatMap(p -> p.v2().getSettingsFilter().stream()).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
static class OnModuleReference {
|
||||
public final Class<? extends Module> moduleClass;
|
||||
public final Method onModuleMethod;
|
||||
|
@ -288,6 +296,7 @@ public class PluginsService extends AbstractComponent {
|
|||
plugin.v2().onIndexModule(indexModule);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get information about plugins and modules
|
||||
*/
|
||||
|
|
|
@ -20,10 +20,11 @@
|
|||
package org.elasticsearch.script;
|
||||
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.plugins.ScriptPlugin;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
@ -57,13 +58,16 @@ public class ScriptModule extends AbstractModule {
|
|||
* This method is called after all modules have been processed but before we actually validate all settings. This allows the
|
||||
* script extensions to add all their settings.
|
||||
*/
|
||||
public void prepareSettings(SettingsModule settingsModule) {
|
||||
scriptSettings.getScriptTypeSettings().forEach(settingsModule::registerSetting);
|
||||
scriptSettings.getScriptContextSettings().forEach(settingsModule::registerSetting);
|
||||
scriptSettings.getScriptLanguageSettings().forEach(settingsModule::registerSetting);
|
||||
settingsModule.registerSetting(scriptSettings.getDefaultScriptLanguageSetting());
|
||||
public List<Setting<?>> getSettings() {
|
||||
ArrayList<Setting<?>> settings = new ArrayList<>();
|
||||
scriptSettings.getScriptTypeSettings().forEach(settings::add);
|
||||
scriptSettings.getScriptContextSettings().forEach(settings::add);
|
||||
scriptSettings.getScriptLanguageSettings().forEach(settings::add);
|
||||
settings.add(scriptSettings.getDefaultScriptLanguageSetting());
|
||||
return settings;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
ScriptSettings scriptSettings = new ScriptSettings(scriptEngineRegistry, scriptContextRegistry);
|
||||
|
|
|
@ -51,7 +51,7 @@ public abstract class ExecutorBuilder<U extends ExecutorBuilder.ExecutorSettings
|
|||
*
|
||||
* @return the list of registered settings
|
||||
*/
|
||||
abstract List<Setting<?>> getRegisteredSettings();
|
||||
public abstract List<Setting<?>> getRegisteredSettings();
|
||||
|
||||
/**
|
||||
* Return an executor settings object from the node-level settings.
|
||||
|
|
|
@ -86,7 +86,7 @@ public final class FixedExecutorBuilder extends ExecutorBuilder<FixedExecutorBui
|
|||
}
|
||||
|
||||
@Override
|
||||
List<Setting<?>> getRegisteredSettings() {
|
||||
public List<Setting<?>> getRegisteredSettings() {
|
||||
return Arrays.asList(sizeSetting, queueSizeSetting);
|
||||
}
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ public final class ScalingExecutorBuilder extends ExecutorBuilder<ScalingExecuto
|
|||
}
|
||||
|
||||
@Override
|
||||
List<Setting<?>> getRegisteredSettings() {
|
||||
public List<Setting<?>> getRegisteredSettings() {
|
||||
return Arrays.asList(coreSetting, maxSetting, keepAliveSetting);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,44 +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.threadpool;
|
||||
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
|
||||
public class ThreadPoolModule extends AbstractModule {
|
||||
|
||||
private final ThreadPool threadPool;
|
||||
|
||||
public ThreadPoolModule(final ThreadPool threadPool) {
|
||||
this.threadPool = threadPool;
|
||||
}
|
||||
|
||||
public void prepareSettings(SettingsModule settingsModule) {
|
||||
for (final ExecutorBuilder<?> builder : threadPool.builders()) {
|
||||
builder.getRegisteredSettings().forEach(settingsModule::registerSetting);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(ThreadPool.class).toInstance(threadPool);
|
||||
}
|
||||
|
||||
}
|
|
@ -67,32 +67,32 @@ public class ClusterModuleTests extends ModuleTestCase {
|
|||
}
|
||||
|
||||
public void testRegisterClusterDynamicSettingDuplicate() {
|
||||
SettingsModule module = new SettingsModule(Settings.EMPTY);
|
||||
try {
|
||||
module.registerSetting(EnableAllocationDecider.CLUSTER_ROUTING_ALLOCATION_ENABLE_SETTING);
|
||||
new SettingsModule(Settings.EMPTY, EnableAllocationDecider.CLUSTER_ROUTING_ALLOCATION_ENABLE_SETTING);
|
||||
} catch (IllegalArgumentException e) {
|
||||
assertEquals(e.getMessage(), "Cannot register setting [" + EnableAllocationDecider.CLUSTER_ROUTING_ALLOCATION_ENABLE_SETTING.getKey() + "] twice");
|
||||
assertEquals(e.getMessage(),
|
||||
"Cannot register setting [" + EnableAllocationDecider.CLUSTER_ROUTING_ALLOCATION_ENABLE_SETTING.getKey() + "] twice");
|
||||
}
|
||||
}
|
||||
|
||||
public void testRegisterClusterDynamicSetting() {
|
||||
SettingsModule module = new SettingsModule(Settings.EMPTY);
|
||||
module.registerSetting(Setting.boolSetting("foo.bar", false, Property.Dynamic, Property.NodeScope));
|
||||
SettingsModule module = new SettingsModule(Settings.EMPTY,
|
||||
Setting.boolSetting("foo.bar", false, Property.Dynamic, Property.NodeScope));
|
||||
assertInstanceBinding(module, ClusterSettings.class, service -> service.hasDynamicSetting("foo.bar"));
|
||||
}
|
||||
|
||||
public void testRegisterIndexDynamicSettingDuplicate() {
|
||||
SettingsModule module = new SettingsModule(Settings.EMPTY);
|
||||
try {
|
||||
module.registerSetting(EnableAllocationDecider.INDEX_ROUTING_ALLOCATION_ENABLE_SETTING);
|
||||
new SettingsModule(Settings.EMPTY, EnableAllocationDecider.INDEX_ROUTING_ALLOCATION_ENABLE_SETTING);
|
||||
} catch (IllegalArgumentException e) {
|
||||
assertEquals(e.getMessage(), "Cannot register setting [" + EnableAllocationDecider.INDEX_ROUTING_ALLOCATION_ENABLE_SETTING.getKey() + "] twice");
|
||||
assertEquals(e.getMessage(),
|
||||
"Cannot register setting [" + EnableAllocationDecider.INDEX_ROUTING_ALLOCATION_ENABLE_SETTING.getKey() + "] twice");
|
||||
}
|
||||
}
|
||||
|
||||
public void testRegisterIndexDynamicSetting() {
|
||||
SettingsModule module = new SettingsModule(Settings.EMPTY);
|
||||
module.registerSetting(Setting.boolSetting("index.foo.bar", false, Property.Dynamic, Property.IndexScope));
|
||||
SettingsModule module = new SettingsModule(Settings.EMPTY,
|
||||
Setting.boolSetting("index.foo.bar", false, Property.Dynamic, Property.IndexScope));
|
||||
assertInstanceBinding(module, IndexScopedSettings.class, service -> service.hasDynamicSetting("index.foo.bar"));
|
||||
}
|
||||
|
||||
|
@ -101,7 +101,8 @@ public class ClusterModuleTests extends ModuleTestCase {
|
|||
try {
|
||||
module.registerAllocationDecider(EnableAllocationDecider.class);
|
||||
} catch (IllegalArgumentException e) {
|
||||
assertEquals(e.getMessage(), "Can't register the same [allocation_decider] more than once for [" + EnableAllocationDecider.class.getName() + "]");
|
||||
assertEquals(e.getMessage(),
|
||||
"Can't register the same [allocation_decider] more than once for [" + EnableAllocationDecider.class.getName() + "]");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -146,7 +147,8 @@ public class ClusterModuleTests extends ModuleTestCase {
|
|||
module.registerIndexTemplateFilter(FakeIndexTemplateFilter.class);
|
||||
module.registerIndexTemplateFilter(FakeIndexTemplateFilter.class);
|
||||
} catch (IllegalArgumentException e) {
|
||||
assertEquals(e.getMessage(), "Can't register the same [index_template_filter] more than once for [" + FakeIndexTemplateFilter.class.getName() + "]");
|
||||
assertEquals(e.getMessage(),
|
||||
"Can't register the same [index_template_filter] more than once for [" + FakeIndexTemplateFilter.class.getName() + "]");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -30,7 +30,9 @@ import org.elasticsearch.plugins.Plugin;
|
|||
import org.elasticsearch.test.ESIntegTestCase;
|
||||
import org.elasticsearch.test.ESIntegTestCase.ClusterScope;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.test.ESIntegTestCase.Scope.SUITE;
|
||||
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
|
||||
|
@ -72,12 +74,16 @@ public class SettingsFilteringIT extends ESIntegTestCase {
|
|||
return Settings.builder().put("some.node.setting", true).put("some.other.node.setting", true).build();
|
||||
}
|
||||
|
||||
public void onModule(SettingsModule module) {
|
||||
module.registerSetting(SOME_NODE_SETTING);
|
||||
module.registerSetting(SOME_OTHER_NODE_SETTING);
|
||||
module.registerSetting(Setting.groupSetting("index.filter_test.", Property.IndexScope));
|
||||
module.registerSettingsFilter("index.filter_test.foo");
|
||||
module.registerSettingsFilter("index.filter_test.bar*");
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(SOME_NODE_SETTING,
|
||||
SOME_OTHER_NODE_SETTING,
|
||||
Setting.groupSetting("index.filter_test.", Property.IndexScope));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getSettingsFilter() {
|
||||
return Arrays.asList("index.filter_test.foo", "index.filter_test.bar*");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -21,6 +21,10 @@ package org.elasticsearch.common.settings;
|
|||
|
||||
import org.elasticsearch.common.inject.ModuleTestCase;
|
||||
import org.elasticsearch.common.settings.Setting.Property;
|
||||
import org.joda.time.MonthDay;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
|
@ -35,18 +39,16 @@ public class SettingsModuleTests extends ModuleTestCase {
|
|||
}
|
||||
{
|
||||
Settings settings = Settings.builder().put("cluster.routing.allocation.balance.shard", "[2.0]").build();
|
||||
SettingsModule module = new SettingsModule(settings);
|
||||
IllegalArgumentException ex = expectThrows(IllegalArgumentException.class,
|
||||
() -> assertInstanceBinding(module, Settings.class, (s) -> s == settings));
|
||||
() -> new SettingsModule(settings));
|
||||
assertEquals("Failed to parse value [[2.0]] for setting [cluster.routing.allocation.balance.shard]", ex.getMessage());
|
||||
}
|
||||
|
||||
{
|
||||
Settings settings = Settings.builder().put("cluster.routing.allocation.balance.shard", "[2.0]")
|
||||
.put("some.foo.bar", 1).build();
|
||||
SettingsModule module = new SettingsModule(settings);
|
||||
IllegalArgumentException ex = expectThrows(IllegalArgumentException.class,
|
||||
() -> assertInstanceBinding(module, Settings.class, (s) -> s == settings));
|
||||
() -> new SettingsModule(settings));
|
||||
assertEquals("Failed to parse value [[2.0]] for setting [cluster.routing.allocation.balance.shard]", ex.getMessage());
|
||||
assertEquals(1, ex.getSuppressed().length);
|
||||
assertEquals("unknown setting [some.foo.bar]", ex.getSuppressed()[0].getMessage());
|
||||
|
@ -55,9 +57,8 @@ public class SettingsModuleTests extends ModuleTestCase {
|
|||
{
|
||||
Settings settings = Settings.builder().put("index.codec", "default")
|
||||
.put("index.foo.bar", 1).build();
|
||||
SettingsModule module = new SettingsModule(settings);
|
||||
IllegalArgumentException ex = expectThrows(IllegalArgumentException.class,
|
||||
() -> assertInstanceBinding(module, Settings.class, (s) -> s == settings));
|
||||
() -> new SettingsModule(settings));
|
||||
assertEquals("node settings must not contain any index level settings", ex.getMessage());
|
||||
}
|
||||
|
||||
|
@ -71,16 +72,13 @@ public class SettingsModuleTests extends ModuleTestCase {
|
|||
public void testRegisterSettings() {
|
||||
{
|
||||
Settings settings = Settings.builder().put("some.custom.setting", "2.0").build();
|
||||
SettingsModule module = new SettingsModule(settings);
|
||||
module.registerSetting(Setting.floatSetting("some.custom.setting", 1.0f, Property.NodeScope));
|
||||
SettingsModule module = new SettingsModule(settings, Setting.floatSetting("some.custom.setting", 1.0f, Property.NodeScope));
|
||||
assertInstanceBinding(module, Settings.class, (s) -> s == settings);
|
||||
}
|
||||
{
|
||||
Settings settings = Settings.builder().put("some.custom.setting", "false").build();
|
||||
SettingsModule module = new SettingsModule(settings);
|
||||
module.registerSetting(Setting.floatSetting("some.custom.setting", 1.0f, Property.NodeScope));
|
||||
try {
|
||||
assertInstanceBinding(module, Settings.class, (s) -> s == settings);
|
||||
new SettingsModule(settings, Setting.floatSetting("some.custom.setting", 1.0f, Property.NodeScope));
|
||||
fail();
|
||||
} catch (IllegalArgumentException ex) {
|
||||
assertEquals("Failed to parse value [false] for setting [some.custom.setting]", ex.getMessage());
|
||||
|
@ -96,9 +94,8 @@ public class SettingsModuleTests extends ModuleTestCase {
|
|||
}
|
||||
{
|
||||
Settings settings = Settings.builder().put("tribe.t1.cluster.routing.allocation.balance.shard", "[2.0]").build();
|
||||
SettingsModule module = new SettingsModule(settings);
|
||||
try {
|
||||
assertInstanceBinding(module, Settings.class, (s) -> s == settings);
|
||||
new SettingsModule(settings);
|
||||
fail();
|
||||
} catch (IllegalArgumentException ex) {
|
||||
assertEquals(
|
||||
|
@ -116,9 +113,8 @@ public class SettingsModuleTests extends ModuleTestCase {
|
|||
}
|
||||
{
|
||||
Settings settings = Settings.builder().put("tribe.blocks.write", "BOOM").build();
|
||||
SettingsModule module = new SettingsModule(settings);
|
||||
try {
|
||||
assertInstanceBinding(module, Settings.class, (s) -> s == settings);
|
||||
new SettingsModule(settings);
|
||||
fail();
|
||||
} catch (IllegalArgumentException ex) {
|
||||
assertEquals("Failed to parse value [BOOM] cannot be parsed to boolean [ true/1/on/yes OR false/0/off/no ]",
|
||||
|
@ -127,9 +123,8 @@ public class SettingsModuleTests extends ModuleTestCase {
|
|||
}
|
||||
{
|
||||
Settings settings = Settings.builder().put("tribe.blocks.wtf", "BOOM").build();
|
||||
SettingsModule module = new SettingsModule(settings);
|
||||
try {
|
||||
assertInstanceBinding(module, Settings.class, (s) -> s == settings);
|
||||
new SettingsModule(settings);
|
||||
fail();
|
||||
} catch (IllegalArgumentException ex) {
|
||||
assertEquals("tribe.blocks validation failed: unknown setting [wtf]", ex.getMessage());
|
||||
|
@ -147,9 +142,8 @@ public class SettingsModuleTests extends ModuleTestCase {
|
|||
|
||||
{
|
||||
Settings settings = Settings.builder().put("logger._root", "BOOM").put("logger.transport", "WOW").build();
|
||||
SettingsModule module = new SettingsModule(settings);
|
||||
try {
|
||||
assertInstanceBinding(module, Settings.class, (s) -> s == settings);
|
||||
new SettingsModule(settings);
|
||||
fail();
|
||||
} catch (IllegalArgumentException ex) {
|
||||
assertEquals("No enum constant org.elasticsearch.common.logging.ESLoggerFactory.LogLevel.BOOM", ex.getMessage());
|
||||
|
@ -160,18 +154,17 @@ public class SettingsModuleTests extends ModuleTestCase {
|
|||
|
||||
public void testRegisterSettingsFilter() {
|
||||
Settings settings = Settings.builder().put("foo.bar", "false").put("bar.foo", false).put("bar.baz", false).build();
|
||||
SettingsModule module = new SettingsModule(settings);
|
||||
module.registerSetting(Setting.boolSetting("foo.bar", true, Property.NodeScope));
|
||||
module.registerSetting(Setting.boolSetting("bar.foo", true, Property.NodeScope, Property.Filtered));
|
||||
module.registerSetting(Setting.boolSetting("bar.baz", true, Property.NodeScope));
|
||||
|
||||
module.registerSettingsFilter("foo.*");
|
||||
try {
|
||||
module.registerSettingsFilter("bar.foo");
|
||||
new SettingsModule(settings, Arrays.asList(Setting.boolSetting("foo.bar", true, Property.NodeScope),
|
||||
Setting.boolSetting("bar.foo", true, Property.NodeScope, Property.Filtered),
|
||||
Setting.boolSetting("bar.baz", true, Property.NodeScope)), Arrays.asList("foo.*", "bar.foo"));
|
||||
fail();
|
||||
} catch (IllegalArgumentException ex) {
|
||||
assertEquals("filter [bar.foo] has already been registered", ex.getMessage());
|
||||
}
|
||||
SettingsModule module = new SettingsModule(settings, Arrays.asList(Setting.boolSetting("foo.bar", true, Property.NodeScope),
|
||||
Setting.boolSetting("bar.foo", true, Property.NodeScope, Property.Filtered),
|
||||
Setting.boolSetting("bar.baz", true, Property.NodeScope)), Arrays.asList("foo.*"));
|
||||
assertInstanceBinding(module, Settings.class, (s) -> s == settings);
|
||||
assertInstanceBinding(module, SettingsFilter.class, (s) -> s.filter(settings).getAsMap().size() == 1);
|
||||
assertInstanceBinding(module, SettingsFilter.class, (s) -> s.filter(settings).getAsMap().containsKey("bar.baz"));
|
||||
|
@ -180,29 +173,30 @@ public class SettingsModuleTests extends ModuleTestCase {
|
|||
}
|
||||
|
||||
public void testMutuallyExclusiveScopes() {
|
||||
new SettingsModule(Settings.EMPTY).registerSetting(Setting.simpleString("foo.bar", Property.NodeScope));
|
||||
new SettingsModule(Settings.EMPTY).registerSetting(Setting.simpleString("foo.bar", Property.IndexScope));
|
||||
new SettingsModule(Settings.EMPTY, Setting.simpleString("foo.bar", Property.NodeScope));
|
||||
new SettingsModule(Settings.EMPTY, Setting.simpleString("index.foo.bar", Property.IndexScope));
|
||||
|
||||
// Those should fail
|
||||
try {
|
||||
new SettingsModule(Settings.EMPTY).registerSetting(Setting.simpleString("foo.bar"));
|
||||
new SettingsModule(Settings.EMPTY, Setting.simpleString("foo.bar"));
|
||||
fail("No scope should fail");
|
||||
} catch (IllegalArgumentException e) {
|
||||
assertThat(e.getMessage(), containsString("No scope found for setting"));
|
||||
}
|
||||
// Some settings have both scopes - that's fine too if they have per-node defaults
|
||||
SettingsModule module = new SettingsModule(Settings.EMPTY);
|
||||
module.registerSetting(Setting.simpleString("foo.bar", Property.IndexScope, Property.NodeScope));
|
||||
|
||||
try {
|
||||
module.registerSetting(Setting.simpleString("foo.bar", Property.NodeScope));
|
||||
new SettingsModule(Settings.EMPTY,
|
||||
Setting.simpleString("foo.bar", Property.IndexScope, Property.NodeScope),
|
||||
Setting.simpleString("foo.bar", Property.NodeScope));
|
||||
fail("already registered");
|
||||
} catch (IllegalArgumentException e) {
|
||||
assertThat(e.getMessage(), containsString("Cannot register setting [foo.bar] twice"));
|
||||
}
|
||||
|
||||
try {
|
||||
module.registerSetting(Setting.simpleString("foo.bar", Property.IndexScope));
|
||||
new SettingsModule(Settings.EMPTY,
|
||||
Setting.simpleString("foo.bar", Property.IndexScope, Property.NodeScope),
|
||||
Setting.simpleString("foo.bar", Property.IndexScope));
|
||||
fail("already registered");
|
||||
} catch (IllegalArgumentException e) {
|
||||
assertThat(e.getMessage(), containsString("Cannot register setting [foo.bar] twice"));
|
||||
|
@ -211,10 +205,28 @@ public class SettingsModuleTests extends ModuleTestCase {
|
|||
|
||||
public void testOldMaxClauseCountSetting() {
|
||||
Settings settings = Settings.builder().put("index.query.bool.max_clause_count", 1024).build();
|
||||
SettingsModule module = new SettingsModule(settings);
|
||||
IllegalArgumentException ex = expectThrows(IllegalArgumentException.class,
|
||||
() -> assertInstanceBinding(module, Settings.class, (s) -> s == settings));
|
||||
() -> new SettingsModule(settings));
|
||||
assertEquals("unknown setting [index.query.bool.max_clause_count] did you mean [indices.query.bool.max_clause_count]?",
|
||||
ex.getMessage());
|
||||
}
|
||||
|
||||
public void testRegisterShared() {
|
||||
Property scope = randomFrom(Property.NodeScope, Property.IndexScope);
|
||||
expectThrows(IllegalArgumentException.class, () ->
|
||||
new SettingsModule(Settings.EMPTY,
|
||||
Setting.simpleString("index.foo.bar", scope), Setting.simpleString("index.foo.bar", scope))
|
||||
);
|
||||
expectThrows(IllegalArgumentException.class, () ->
|
||||
new SettingsModule(Settings.EMPTY,
|
||||
Setting.simpleString("index.foo.bar", scope, Property.Shared), Setting.simpleString("index.foo.bar", scope))
|
||||
);
|
||||
expectThrows(IllegalArgumentException.class, () ->
|
||||
new SettingsModule(Settings.EMPTY,
|
||||
Setting.simpleString("index.foo.bar", scope), Setting.simpleString("index.foo.bar", scope, Property.Shared))
|
||||
);
|
||||
new SettingsModule(Settings.EMPTY,
|
||||
Setting.simpleString("index.foo.bar", scope, Property.Shared),
|
||||
Setting.simpleString("index.foo.bar", scope, Property.Shared));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,13 +23,14 @@ import org.elasticsearch.common.inject.Module;
|
|||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Setting.Property;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.plugins.Plugin;
|
||||
import org.elasticsearch.test.ESIntegTestCase;
|
||||
import org.elasticsearch.test.ESIntegTestCase.ClusterScope;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.test.ESIntegTestCase.Scope.SUITE;
|
||||
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
|
||||
|
@ -62,8 +63,9 @@ public class SettingsListenerIT extends ESIntegTestCase {
|
|||
return "Settings Listenern Plugin";
|
||||
}
|
||||
|
||||
public void onModule(SettingsModule settingsModule) {
|
||||
settingsModule.registerSetting(SettingsTestingService.VALUE);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(SettingsTestingService.VALUE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -50,7 +50,9 @@ import org.elasticsearch.index.IndexNotFoundException;
|
|||
import org.elasticsearch.plugins.Plugin;
|
||||
import org.elasticsearch.test.ESIntegTestCase;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import static org.elasticsearch.action.support.WriteRequest.RefreshPolicy.IMMEDIATE;
|
||||
|
@ -606,10 +608,9 @@ public class IndicesOptionsIntegrationIT extends ESIntegTestCase {
|
|||
new Setting<>("index.e", "", Function.identity(), Property.IndexScope);
|
||||
|
||||
|
||||
public void onModule(SettingsModule module) {
|
||||
module.registerSetting(INDEX_A);
|
||||
module.registerSetting(INDEX_C);
|
||||
module.registerSetting(INDEX_E);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(INDEX_A, INDEX_C, INDEX_E);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -49,6 +49,7 @@ import org.elasticsearch.test.engine.ThrowingLeafReaderWrapper;
|
|||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
|
||||
|
@ -209,9 +210,9 @@ public class RandomExceptionCircuitBreakerIT extends ESIntegTestCase {
|
|||
return "a mock reader wrapper that throws random exceptions for testing";
|
||||
}
|
||||
|
||||
public void onModule(SettingsModule module) {
|
||||
module.registerSetting(EXCEPTION_TOP_LEVEL_RATIO_SETTING);
|
||||
module.registerSetting(EXCEPTION_LOW_LEVEL_RATIO_SETTING);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(EXCEPTION_TOP_LEVEL_RATIO_SETTING, EXCEPTION_LOW_LEVEL_RATIO_SETTING);
|
||||
}
|
||||
|
||||
public void onModule(MockEngineFactoryPlugin.MockEngineReaderModule module) {
|
||||
|
|
|
@ -24,20 +24,22 @@ import org.elasticsearch.cluster.ClusterState;
|
|||
import org.elasticsearch.common.Nullable;
|
||||
import org.elasticsearch.common.inject.Injector;
|
||||
import org.elasticsearch.common.inject.ModulesBuilder;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.env.Environment;
|
||||
import org.elasticsearch.env.EnvironmentModule;
|
||||
import org.elasticsearch.script.ScriptService.ScriptType;
|
||||
import org.elasticsearch.test.ESTestCase;
|
||||
import org.elasticsearch.test.InternalSettingsPlugin;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
import org.elasticsearch.threadpool.ThreadPoolModule;
|
||||
import org.elasticsearch.watcher.ResourceWatcherService;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
|
@ -51,14 +53,14 @@ public class NativeScriptTests extends ESTestCase {
|
|||
.put("node.name", "testNativeScript")
|
||||
.put(Environment.PATH_HOME_SETTING.getKey(), createTempDir())
|
||||
.build();
|
||||
SettingsModule settingsModule = new SettingsModule(settings);
|
||||
ScriptModule scriptModule = new ScriptModule(new NativeScriptEngineService(settings,
|
||||
Collections.singletonMap("my", new MyNativeScriptFactory())));
|
||||
scriptModule.prepareSettings(settingsModule);
|
||||
List<Setting<?>> scriptSettings = scriptModule.getSettings();
|
||||
scriptSettings.add(InternalSettingsPlugin.VERSION_CREATED);
|
||||
SettingsModule settingsModule = new SettingsModule(settings, scriptSettings, Collections.emptyList());
|
||||
final ThreadPool threadPool = new ThreadPool(settings);
|
||||
Injector injector = new ModulesBuilder().add(
|
||||
new EnvironmentModule(new Environment(settings)),
|
||||
new ThreadPoolModule(threadPool),
|
||||
new EnvironmentModule(new Environment(settings), threadPool),
|
||||
new SettingsModule(settings),
|
||||
scriptModule).createInjector();
|
||||
|
||||
|
|
|
@ -29,9 +29,9 @@ import org.elasticsearch.common.ParsingException;
|
|||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Injector;
|
||||
import org.elasticsearch.common.inject.ModulesBuilder;
|
||||
import org.elasticsearch.common.inject.multibindings.Multibinder;
|
||||
import org.elasticsearch.common.inject.util.Providers;
|
||||
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||
|
@ -46,31 +46,21 @@ import org.elasticsearch.indices.IndicesModule;
|
|||
import org.elasticsearch.indices.breaker.CircuitBreakerService;
|
||||
import org.elasticsearch.indices.breaker.NoneCircuitBreakerService;
|
||||
import org.elasticsearch.indices.query.IndicesQueriesRegistry;
|
||||
import org.elasticsearch.script.MockScriptEngine;
|
||||
import org.elasticsearch.script.ScriptContext;
|
||||
import org.elasticsearch.script.ScriptContextRegistry;
|
||||
import org.elasticsearch.script.ScriptEngineRegistry;
|
||||
import org.elasticsearch.script.ScriptEngineService;
|
||||
import org.elasticsearch.script.ScriptModule;
|
||||
import org.elasticsearch.script.ScriptService;
|
||||
import org.elasticsearch.script.ScriptSettings;
|
||||
import org.elasticsearch.search.SearchModule;
|
||||
import org.elasticsearch.test.ESTestCase;
|
||||
import org.elasticsearch.test.IndexSettingsModule;
|
||||
import org.elasticsearch.test.InternalSettingsPlugin;
|
||||
import org.elasticsearch.test.VersionUtils;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
import org.elasticsearch.threadpool.ThreadPoolModule;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
@ -115,12 +105,12 @@ public class AggregatorParsingTests extends ESTestCase {
|
|||
final ClusterService clusterService = createClusterService(threadPool);
|
||||
setState(clusterService, new ClusterState.Builder(clusterService.state()).metaData(new MetaData.Builder()
|
||||
.put(new IndexMetaData.Builder(index.getName()).settings(indexSettings).numberOfShards(1).numberOfReplicas(0))));
|
||||
SettingsModule settingsModule = new SettingsModule(settings);
|
||||
settingsModule.registerSetting(InternalSettingsPlugin.VERSION_CREATED);
|
||||
ScriptModule scriptModule = newTestScriptModule();
|
||||
scriptModule.prepareSettings(settingsModule);
|
||||
injector = new ModulesBuilder().add(new EnvironmentModule(new Environment(settings)), settingsModule,
|
||||
new ThreadPoolModule(threadPool), scriptModule, new IndicesModule() {
|
||||
List<Setting<?>> scriptSettings = scriptModule.getSettings();
|
||||
scriptSettings.add(InternalSettingsPlugin.VERSION_CREATED);
|
||||
SettingsModule settingsModule = new SettingsModule(settings, scriptSettings, Collections.emptyList());
|
||||
injector = new ModulesBuilder().add(new EnvironmentModule(new Environment(settings), threadPool), settingsModule
|
||||
, scriptModule, new IndicesModule() {
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
|
|
|
@ -28,12 +28,12 @@ import org.elasticsearch.common.ParseFieldMatcher;
|
|||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Injector;
|
||||
import org.elasticsearch.common.inject.ModulesBuilder;
|
||||
import org.elasticsearch.common.inject.multibindings.Multibinder;
|
||||
import org.elasticsearch.common.inject.util.Providers;
|
||||
import org.elasticsearch.common.io.stream.BytesStreamOutput;
|
||||
import org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput;
|
||||
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
||||
import org.elasticsearch.common.io.stream.StreamInput;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.common.xcontent.ToXContent;
|
||||
|
@ -50,30 +50,20 @@ import org.elasticsearch.indices.IndicesModule;
|
|||
import org.elasticsearch.indices.breaker.CircuitBreakerService;
|
||||
import org.elasticsearch.indices.breaker.NoneCircuitBreakerService;
|
||||
import org.elasticsearch.indices.query.IndicesQueriesRegistry;
|
||||
import org.elasticsearch.script.MockScriptEngine;
|
||||
import org.elasticsearch.script.ScriptContext;
|
||||
import org.elasticsearch.script.ScriptContextRegistry;
|
||||
import org.elasticsearch.script.ScriptEngineRegistry;
|
||||
import org.elasticsearch.script.ScriptEngineService;
|
||||
import org.elasticsearch.script.ScriptModule;
|
||||
import org.elasticsearch.script.ScriptService;
|
||||
import org.elasticsearch.script.ScriptSettings;
|
||||
import org.elasticsearch.search.SearchModule;
|
||||
import org.elasticsearch.test.ESTestCase;
|
||||
import org.elasticsearch.test.IndexSettingsModule;
|
||||
import org.elasticsearch.test.InternalSettingsPlugin;
|
||||
import org.elasticsearch.test.VersionUtils;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
import org.elasticsearch.threadpool.ThreadPoolModule;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.elasticsearch.test.ClusterServiceUtils.createClusterService;
|
||||
import static org.elasticsearch.test.ClusterServiceUtils.setState;
|
||||
|
@ -129,14 +119,13 @@ public abstract class BaseAggregationTestCase<AB extends AbstractAggregationBuil
|
|||
final ClusterService clusterService = createClusterService(threadPool);
|
||||
setState(clusterService, new ClusterState.Builder(clusterService.state()).metaData(new MetaData.Builder()
|
||||
.put(new IndexMetaData.Builder(index.getName()).settings(indexSettings).numberOfShards(1).numberOfReplicas(0))));
|
||||
SettingsModule settingsModule = new SettingsModule(settings);
|
||||
settingsModule.registerSetting(InternalSettingsPlugin.VERSION_CREATED);
|
||||
ScriptModule scriptModule = newTestScriptModule();
|
||||
scriptModule.prepareSettings(settingsModule);
|
||||
List<Setting<?>> scriptSettings = scriptModule.getSettings();
|
||||
scriptSettings.add(InternalSettingsPlugin.VERSION_CREATED);
|
||||
SettingsModule settingsModule = new SettingsModule(settings, scriptSettings, Collections.emptyList());
|
||||
injector = new ModulesBuilder().add(
|
||||
new EnvironmentModule(new Environment(settings)),
|
||||
new EnvironmentModule(new Environment(settings), threadPool),
|
||||
settingsModule,
|
||||
new ThreadPoolModule(threadPool),
|
||||
scriptModule,
|
||||
new IndicesModule() {
|
||||
|
||||
|
|
|
@ -28,12 +28,12 @@ import org.elasticsearch.common.ParseFieldMatcher;
|
|||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Injector;
|
||||
import org.elasticsearch.common.inject.ModulesBuilder;
|
||||
import org.elasticsearch.common.inject.multibindings.Multibinder;
|
||||
import org.elasticsearch.common.inject.util.Providers;
|
||||
import org.elasticsearch.common.io.stream.BytesStreamOutput;
|
||||
import org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput;
|
||||
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
||||
import org.elasticsearch.common.io.stream.StreamInput;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.common.xcontent.ToXContent;
|
||||
|
@ -44,37 +44,27 @@ import org.elasticsearch.common.xcontent.XContentType;
|
|||
import org.elasticsearch.env.Environment;
|
||||
import org.elasticsearch.env.EnvironmentModule;
|
||||
import org.elasticsearch.index.Index;
|
||||
import org.elasticsearch.test.AbstractQueryTestCase;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.indices.IndicesModule;
|
||||
import org.elasticsearch.indices.breaker.CircuitBreakerService;
|
||||
import org.elasticsearch.indices.breaker.NoneCircuitBreakerService;
|
||||
import org.elasticsearch.indices.query.IndicesQueriesRegistry;
|
||||
import org.elasticsearch.script.MockScriptEngine;
|
||||
import org.elasticsearch.script.ScriptContext;
|
||||
import org.elasticsearch.script.ScriptContextRegistry;
|
||||
import org.elasticsearch.script.ScriptEngineRegistry;
|
||||
import org.elasticsearch.script.ScriptEngineService;
|
||||
import org.elasticsearch.script.ScriptModule;
|
||||
import org.elasticsearch.script.ScriptService;
|
||||
import org.elasticsearch.script.ScriptSettings;
|
||||
import org.elasticsearch.search.SearchModule;
|
||||
import org.elasticsearch.search.aggregations.pipeline.AbstractPipelineAggregatorBuilder;
|
||||
import org.elasticsearch.test.AbstractQueryTestCase;
|
||||
import org.elasticsearch.test.ESTestCase;
|
||||
import org.elasticsearch.test.IndexSettingsModule;
|
||||
import org.elasticsearch.test.InternalSettingsPlugin;
|
||||
import org.elasticsearch.test.VersionUtils;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
import org.elasticsearch.threadpool.ThreadPoolModule;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.elasticsearch.test.ClusterServiceUtils.createClusterService;
|
||||
import static org.elasticsearch.test.ClusterServiceUtils.setState;
|
||||
|
@ -129,14 +119,13 @@ public abstract class BasePipelineAggregationTestCase<AF extends AbstractPipelin
|
|||
final ClusterService clusterService = createClusterService(threadPool);
|
||||
setState(clusterService, new ClusterState.Builder(clusterService.state()).metaData(new MetaData.Builder()
|
||||
.put(new IndexMetaData.Builder(index.getName()).settings(indexSettings).numberOfShards(1).numberOfReplicas(0))));
|
||||
SettingsModule settingsModule = new SettingsModule(settings);
|
||||
settingsModule.registerSetting(InternalSettingsPlugin.VERSION_CREATED);
|
||||
ScriptModule scriptModule = newTestScriptModule();
|
||||
scriptModule.prepareSettings(settingsModule);
|
||||
List<Setting<?>> scriptSettings = scriptModule.getSettings();
|
||||
scriptSettings.add(InternalSettingsPlugin.VERSION_CREATED);
|
||||
SettingsModule settingsModule = new SettingsModule(settings, scriptSettings, Collections.emptyList());
|
||||
injector = new ModulesBuilder().add(
|
||||
new EnvironmentModule(new Environment(settings)),
|
||||
new EnvironmentModule(new Environment(settings),threadPool),
|
||||
settingsModule,
|
||||
new ThreadPoolModule(threadPool),
|
||||
scriptModule,
|
||||
new IndicesModule() {
|
||||
|
||||
|
|
|
@ -44,7 +44,9 @@ import org.elasticsearch.test.engine.MockEngineSupport;
|
|||
import org.elasticsearch.test.engine.ThrowingLeafReaderWrapper;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
|
||||
|
@ -160,9 +162,9 @@ public class SearchWithRandomExceptionsIT extends ESIntegTestCase {
|
|||
public String name() {
|
||||
return "random-exception-reader-wrapper";
|
||||
}
|
||||
public void onModule(SettingsModule module) {
|
||||
module.registerSetting(EXCEPTION_TOP_LEVEL_RATIO_SETTING);
|
||||
module.registerSetting(EXCEPTION_LOW_LEVEL_RATIO_SETTING);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(EXCEPTION_TOP_LEVEL_RATIO_SETTING, EXCEPTION_LOW_LEVEL_RATIO_SETTING);
|
||||
}
|
||||
@Override
|
||||
public String description() {
|
||||
|
|
|
@ -30,12 +30,12 @@ import org.elasticsearch.common.bytes.BytesReference;
|
|||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Injector;
|
||||
import org.elasticsearch.common.inject.ModulesBuilder;
|
||||
import org.elasticsearch.common.inject.multibindings.Multibinder;
|
||||
import org.elasticsearch.common.inject.util.Providers;
|
||||
import org.elasticsearch.common.io.stream.BytesStreamOutput;
|
||||
import org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput;
|
||||
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
||||
import org.elasticsearch.common.io.stream.StreamInput;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.common.text.Text;
|
||||
|
@ -54,15 +54,9 @@ import org.elasticsearch.indices.IndicesModule;
|
|||
import org.elasticsearch.indices.breaker.CircuitBreakerService;
|
||||
import org.elasticsearch.indices.breaker.NoneCircuitBreakerService;
|
||||
import org.elasticsearch.indices.query.IndicesQueriesRegistry;
|
||||
import org.elasticsearch.script.MockScriptEngine;
|
||||
import org.elasticsearch.script.Script;
|
||||
import org.elasticsearch.script.ScriptContext;
|
||||
import org.elasticsearch.script.ScriptContextRegistry;
|
||||
import org.elasticsearch.script.ScriptEngineRegistry;
|
||||
import org.elasticsearch.script.ScriptEngineService;
|
||||
import org.elasticsearch.script.ScriptModule;
|
||||
import org.elasticsearch.script.ScriptService;
|
||||
import org.elasticsearch.script.ScriptSettings;
|
||||
import org.elasticsearch.search.SearchModule;
|
||||
import org.elasticsearch.search.aggregations.AggregationBuilders;
|
||||
import org.elasticsearch.search.aggregations.AggregatorParsers;
|
||||
|
@ -85,16 +79,13 @@ import org.elasticsearch.test.IndexSettingsModule;
|
|||
import org.elasticsearch.test.InternalSettingsPlugin;
|
||||
import org.elasticsearch.test.VersionUtils;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
import org.elasticsearch.threadpool.ThreadPoolModule;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static org.elasticsearch.test.ClusterServiceUtils.createClusterService;
|
||||
|
@ -136,13 +127,12 @@ public class SearchSourceBuilderTests extends ESTestCase {
|
|||
final ClusterService clusterService = createClusterService(threadPool);
|
||||
setState(clusterService, new ClusterState.Builder(clusterService.state()).metaData(new MetaData.Builder()
|
||||
.put(new IndexMetaData.Builder(index.getName()).settings(indexSettings).numberOfShards(1).numberOfReplicas(0))));
|
||||
SettingsModule settingsModule = new SettingsModule(settings);
|
||||
settingsModule.registerSetting(InternalSettingsPlugin.VERSION_CREATED);
|
||||
ScriptModule scriptModule = newTestScriptModule();
|
||||
scriptModule.prepareSettings(settingsModule);
|
||||
List<Setting<?>> scriptSettings = scriptModule.getSettings();
|
||||
scriptSettings.add(InternalSettingsPlugin.VERSION_CREATED);
|
||||
SettingsModule settingsModule = new SettingsModule(settings, scriptSettings, Collections.emptyList());
|
||||
injector = new ModulesBuilder().add(
|
||||
new EnvironmentModule(new Environment(settings)), settingsModule,
|
||||
new ThreadPoolModule(threadPool),
|
||||
new EnvironmentModule(new Environment(settings), threadPool), settingsModule,
|
||||
scriptModule, new IndicesModule() {
|
||||
@Override
|
||||
protected void configure() {
|
||||
|
|
|
@ -48,6 +48,7 @@ import java.io.UnsupportedEncodingException;
|
|||
import java.nio.file.Path;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
@ -76,9 +77,9 @@ public class MockRepository extends FsRepository {
|
|||
repositoriesModule.registerRepository("mock", MockRepository.class, BlobStoreIndexShardRepository.class);
|
||||
}
|
||||
|
||||
public void onModule(SettingsModule module) {
|
||||
module.registerSetting(USERNAME_SETTING);
|
||||
module.registerSetting(PASSWORD_SETTING);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(USERNAME_SETTING, PASSWORD_SETTING);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ import org.elasticsearch.common.inject.ModulesBuilder;
|
|||
import org.elasticsearch.common.inject.multibindings.Multibinder;
|
||||
import org.elasticsearch.common.inject.util.Providers;
|
||||
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||
|
@ -67,13 +68,13 @@ import org.elasticsearch.test.ESTestCase;
|
|||
import org.elasticsearch.test.IndexSettingsModule;
|
||||
import org.elasticsearch.test.InternalSettingsPlugin;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
import org.elasticsearch.threadpool.ThreadPoolModule;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Proxy;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
|
@ -102,16 +103,15 @@ public class TemplateQueryParserTests extends ESTestCase {
|
|||
});
|
||||
IndexSettings idxSettings = IndexSettingsModule.newIndexSettings("test", settings);
|
||||
Index index = idxSettings.getIndex();
|
||||
SettingsModule settingsModule = new SettingsModule(settings);
|
||||
// TODO: make this use a mock engine instead of mustache and it will no longer be messy!
|
||||
ScriptModule scriptModule = new ScriptModule(new MustacheScriptEngineService(settings));
|
||||
scriptModule.prepareSettings(settingsModule);
|
||||
settingsModule.registerSetting(InternalSettingsPlugin.VERSION_CREATED);
|
||||
List<Setting<?>> scriptSettings = scriptModule.getSettings();
|
||||
scriptSettings.add(InternalSettingsPlugin.VERSION_CREATED);
|
||||
SettingsModule settingsModule = new SettingsModule(settings, scriptSettings, Collections.emptyList());
|
||||
final ThreadPool threadPool = new ThreadPool(settings);
|
||||
injector = new ModulesBuilder().add(
|
||||
new EnvironmentModule(new Environment(settings)),
|
||||
new EnvironmentModule(new Environment(settings), threadPool),
|
||||
settingsModule,
|
||||
new ThreadPoolModule(threadPool),
|
||||
new SearchModule(settings, new NamedWriteableRegistry()) {
|
||||
@Override
|
||||
protected void configureSearch() {
|
||||
|
|
|
@ -23,6 +23,7 @@ import org.elasticsearch.action.ActionModule;
|
|||
import org.elasticsearch.client.Client;
|
||||
import org.elasticsearch.client.transport.TransportClient;
|
||||
import org.elasticsearch.common.network.NetworkModule;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.indices.IndicesModule;
|
||||
|
@ -31,6 +32,8 @@ import org.elasticsearch.search.SearchModule;
|
|||
import org.elasticsearch.search.fetch.FetchSubPhase;
|
||||
import org.elasticsearch.search.highlight.HighlightPhase;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public class PercolatorPlugin extends Plugin {
|
||||
|
@ -76,8 +79,9 @@ public class PercolatorPlugin extends Plugin {
|
|||
module.registerFetchSubPhase(new PercolatorHighlightSubFetchPhase(settings, module.getHighlighters()));
|
||||
}
|
||||
|
||||
public void onModule(SettingsModule module) {
|
||||
module.registerSetting(PercolatorFieldMapper.INDEX_MAP_UNMAPPED_FIELDS_AS_STRING_SETTING);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(PercolatorFieldMapper.INDEX_MAP_UNMAPPED_FIELDS_AS_STRING_SETTING);
|
||||
}
|
||||
|
||||
static boolean transportClientMode(Settings settings) {
|
||||
|
|
|
@ -24,6 +24,7 @@ import org.elasticsearch.cloud.azure.management.AzureComputeService;
|
|||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.logging.ESLogger;
|
||||
import org.elasticsearch.common.logging.Loggers;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.discovery.DiscoveryModule;
|
||||
|
@ -31,8 +32,10 @@ import org.elasticsearch.discovery.azure.AzureUnicastHostsProvider;
|
|||
import org.elasticsearch.discovery.zen.ZenDiscovery;
|
||||
import org.elasticsearch.plugins.Plugin;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class AzureDiscoveryPlugin extends Plugin {
|
||||
|
||||
|
@ -67,16 +70,18 @@ public class AzureDiscoveryPlugin extends Plugin {
|
|||
}
|
||||
}
|
||||
|
||||
public void onModule(SettingsModule settingsModule) {
|
||||
settingsModule.registerSetting(AzureComputeService.Discovery.REFRESH_SETTING);
|
||||
settingsModule.registerSetting(AzureComputeService.Management.KEYSTORE_PASSWORD_SETTING);
|
||||
settingsModule.registerSetting(AzureComputeService.Management.KEYSTORE_PATH_SETTING);
|
||||
settingsModule.registerSetting(AzureComputeService.Management.KEYSTORE_TYPE_SETTING);
|
||||
settingsModule.registerSetting(AzureComputeService.Management.SUBSCRIPTION_ID_SETTING);
|
||||
settingsModule.registerSetting(AzureComputeService.Management.SERVICE_NAME_SETTING);
|
||||
settingsModule.registerSetting(AzureComputeService.Discovery.HOST_TYPE_SETTING);
|
||||
settingsModule.registerSetting(AzureComputeService.Discovery.DEPLOYMENT_NAME_SETTING);
|
||||
settingsModule.registerSetting(AzureComputeService.Discovery.DEPLOYMENT_SLOT_SETTING);
|
||||
settingsModule.registerSetting(AzureComputeService.Discovery.ENDPOINT_NAME_SETTING);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(AzureComputeService.Discovery.REFRESH_SETTING,
|
||||
AzureComputeService.Management.KEYSTORE_PASSWORD_SETTING,
|
||||
AzureComputeService.Management.KEYSTORE_PATH_SETTING,
|
||||
AzureComputeService.Management.KEYSTORE_TYPE_SETTING,
|
||||
AzureComputeService.Management.SUBSCRIPTION_ID_SETTING,
|
||||
AzureComputeService.Management.SERVICE_NAME_SETTING,
|
||||
AzureComputeService.Discovery.HOST_TYPE_SETTING,
|
||||
AzureComputeService.Discovery.DEPLOYMENT_NAME_SETTING,
|
||||
AzureComputeService.Discovery.DEPLOYMENT_SLOT_SETTING,
|
||||
AzureComputeService.Discovery.ENDPOINT_NAME_SETTING);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -28,8 +28,8 @@ import org.elasticsearch.cloud.azure.management.AzureComputeService;
|
|||
import org.elasticsearch.common.SuppressForbidden;
|
||||
import org.elasticsearch.common.io.FileSystemUtils;
|
||||
import org.elasticsearch.common.logging.Loggers;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.discovery.DiscoveryModule;
|
||||
import org.elasticsearch.env.Environment;
|
||||
import org.elasticsearch.node.Node;
|
||||
|
@ -57,6 +57,7 @@ import java.nio.charset.StandardCharsets;
|
|||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.security.KeyStore;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
@ -83,8 +84,9 @@ public class AzureDiscoveryClusterFormationTests extends ESIntegTestCase {
|
|||
return AzureDiscoveryClusterFormationTests.class.getName();
|
||||
}
|
||||
|
||||
public void onModule(SettingsModule settingsModule) {
|
||||
settingsModule.registerSetting(AzureComputeService.Management.ENDPOINT_SETTING);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(AzureComputeService.Management.ENDPOINT_SETTING);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -42,43 +42,44 @@ public interface AwsEc2Service {
|
|||
* cloud.aws.access_key: AWS Access key. Shared with repository-s3 plugin
|
||||
*/
|
||||
Setting<String> KEY_SETTING =
|
||||
Setting.simpleString("cloud.aws.access_key", Property.NodeScope, Property.Filtered);
|
||||
Setting.simpleString("cloud.aws.access_key", Property.NodeScope, Property.Filtered, Property.Shared);
|
||||
/**
|
||||
* cloud.aws.secret_key: AWS Secret key. Shared with repository-s3 plugin
|
||||
*/
|
||||
Setting<String> SECRET_SETTING =
|
||||
Setting.simpleString("cloud.aws.secret_key", Property.NodeScope, Property.Filtered);
|
||||
Setting.simpleString("cloud.aws.secret_key", Property.NodeScope, Property.Filtered, Property.Shared);
|
||||
/**
|
||||
* cloud.aws.protocol: Protocol for AWS API: http or https. Defaults to https. Shared with repository-s3 plugin
|
||||
*/
|
||||
Setting<Protocol> PROTOCOL_SETTING = new Setting<>("cloud.aws.protocol", "https", s -> Protocol.valueOf(s.toUpperCase(Locale.ROOT)),
|
||||
Property.NodeScope);
|
||||
Property.NodeScope, Property.Shared);
|
||||
/**
|
||||
* cloud.aws.proxy.host: In case of proxy, define its hostname/IP. Shared with repository-s3 plugin
|
||||
*/
|
||||
Setting<String> PROXY_HOST_SETTING = Setting.simpleString("cloud.aws.proxy.host", Property.NodeScope);
|
||||
Setting<String> PROXY_HOST_SETTING = Setting.simpleString("cloud.aws.proxy.host", Property.NodeScope, Property.Shared);
|
||||
/**
|
||||
* cloud.aws.proxy.port: In case of proxy, define its port. Defaults to 80. Shared with repository-s3 plugin
|
||||
*/
|
||||
Setting<Integer> PROXY_PORT_SETTING = Setting.intSetting("cloud.aws.proxy.port", 80, 0, 1<<16, Property.NodeScope);
|
||||
Setting<Integer> PROXY_PORT_SETTING = Setting.intSetting("cloud.aws.proxy.port", 80, 0, 1<<16, Property.NodeScope,
|
||||
Property.Shared);
|
||||
/**
|
||||
* cloud.aws.proxy.username: In case of proxy with auth, define the username. Shared with repository-s3 plugin
|
||||
*/
|
||||
Setting<String> PROXY_USERNAME_SETTING = Setting.simpleString("cloud.aws.proxy.username", Property.NodeScope);
|
||||
Setting<String> PROXY_USERNAME_SETTING = Setting.simpleString("cloud.aws.proxy.username", Property.NodeScope, Property.Shared);
|
||||
/**
|
||||
* cloud.aws.proxy.password: In case of proxy with auth, define the password. Shared with repository-s3 plugin
|
||||
*/
|
||||
Setting<String> PROXY_PASSWORD_SETTING =
|
||||
Setting.simpleString("cloud.aws.proxy.password", Property.NodeScope, Property.Filtered);
|
||||
Setting.simpleString("cloud.aws.proxy.password", Property.NodeScope, Property.Filtered, Property.Shared);
|
||||
/**
|
||||
* cloud.aws.signer: If you are using an old AWS API version, you can define a Signer. Shared with repository-s3 plugin
|
||||
*/
|
||||
Setting<String> SIGNER_SETTING = Setting.simpleString("cloud.aws.signer", Property.NodeScope);
|
||||
Setting<String> SIGNER_SETTING = Setting.simpleString("cloud.aws.signer", Property.NodeScope, Property.Shared);
|
||||
/**
|
||||
* cloud.aws.region: Region. Shared with repository-s3 plugin
|
||||
*/
|
||||
Setting<String> REGION_SETTING =
|
||||
new Setting<>("cloud.aws.region", "", s -> s.toLowerCase(Locale.ROOT), Property.NodeScope);
|
||||
new Setting<>("cloud.aws.region", "", s -> s.toLowerCase(Locale.ROOT), Property.NodeScope, Property.Shared);
|
||||
|
||||
/**
|
||||
* Defines specific ec2 settings starting with cloud.aws.ec2.
|
||||
|
|
|
@ -38,7 +38,9 @@ import org.elasticsearch.plugins.Plugin;
|
|||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -104,48 +106,38 @@ public class Ec2DiscoveryPlugin extends Plugin {
|
|||
discoveryModule.addUnicastHostProvider(EC2, AwsEc2UnicastHostsProvider.class);
|
||||
}
|
||||
|
||||
public void onModule(SettingsModule settingsModule) {
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(
|
||||
// Register global cloud aws settings: cloud.aws (might have been registered in ec2 plugin)
|
||||
registerSettingIfMissing(settingsModule, AwsEc2Service.KEY_SETTING);
|
||||
registerSettingIfMissing(settingsModule, AwsEc2Service.SECRET_SETTING);
|
||||
registerSettingIfMissing(settingsModule, AwsEc2Service.PROTOCOL_SETTING);
|
||||
registerSettingIfMissing(settingsModule, AwsEc2Service.PROXY_HOST_SETTING);
|
||||
registerSettingIfMissing(settingsModule, AwsEc2Service.PROXY_PORT_SETTING);
|
||||
registerSettingIfMissing(settingsModule, AwsEc2Service.PROXY_USERNAME_SETTING);
|
||||
registerSettingIfMissing(settingsModule, AwsEc2Service.PROXY_PASSWORD_SETTING);
|
||||
registerSettingIfMissing(settingsModule, AwsEc2Service.SIGNER_SETTING);
|
||||
registerSettingIfMissing(settingsModule, AwsEc2Service.REGION_SETTING);
|
||||
|
||||
AwsEc2Service.KEY_SETTING,
|
||||
AwsEc2Service.SECRET_SETTING,
|
||||
AwsEc2Service.PROTOCOL_SETTING,
|
||||
AwsEc2Service.PROXY_HOST_SETTING,
|
||||
AwsEc2Service.PROXY_PORT_SETTING,
|
||||
AwsEc2Service.PROXY_USERNAME_SETTING,
|
||||
AwsEc2Service.PROXY_PASSWORD_SETTING,
|
||||
AwsEc2Service.SIGNER_SETTING,
|
||||
AwsEc2Service.REGION_SETTING,
|
||||
// Register EC2 specific settings: cloud.aws.ec2
|
||||
settingsModule.registerSetting(AwsEc2Service.CLOUD_EC2.KEY_SETTING);
|
||||
settingsModule.registerSetting(AwsEc2Service.CLOUD_EC2.SECRET_SETTING);
|
||||
settingsModule.registerSetting(AwsEc2Service.CLOUD_EC2.PROTOCOL_SETTING);
|
||||
settingsModule.registerSetting(AwsEc2Service.CLOUD_EC2.PROXY_HOST_SETTING);
|
||||
settingsModule.registerSetting(AwsEc2Service.CLOUD_EC2.PROXY_PORT_SETTING);
|
||||
settingsModule.registerSetting(AwsEc2Service.CLOUD_EC2.PROXY_USERNAME_SETTING);
|
||||
settingsModule.registerSetting(AwsEc2Service.CLOUD_EC2.PROXY_PASSWORD_SETTING);
|
||||
settingsModule.registerSetting(AwsEc2Service.CLOUD_EC2.SIGNER_SETTING);
|
||||
settingsModule.registerSetting(AwsEc2Service.CLOUD_EC2.REGION_SETTING);
|
||||
settingsModule.registerSetting(AwsEc2Service.CLOUD_EC2.ENDPOINT_SETTING);
|
||||
|
||||
AwsEc2Service.CLOUD_EC2.KEY_SETTING,
|
||||
AwsEc2Service.CLOUD_EC2.SECRET_SETTING,
|
||||
AwsEc2Service.CLOUD_EC2.PROTOCOL_SETTING,
|
||||
AwsEc2Service.CLOUD_EC2.PROXY_HOST_SETTING,
|
||||
AwsEc2Service.CLOUD_EC2.PROXY_PORT_SETTING,
|
||||
AwsEc2Service.CLOUD_EC2.PROXY_USERNAME_SETTING,
|
||||
AwsEc2Service.CLOUD_EC2.PROXY_PASSWORD_SETTING,
|
||||
AwsEc2Service.CLOUD_EC2.SIGNER_SETTING,
|
||||
AwsEc2Service.CLOUD_EC2.REGION_SETTING,
|
||||
AwsEc2Service.CLOUD_EC2.ENDPOINT_SETTING,
|
||||
// Register EC2 discovery settings: discovery.ec2
|
||||
settingsModule.registerSetting(AwsEc2Service.DISCOVERY_EC2.HOST_TYPE_SETTING);
|
||||
settingsModule.registerSetting(AwsEc2Service.DISCOVERY_EC2.ANY_GROUP_SETTING);
|
||||
settingsModule.registerSetting(AwsEc2Service.DISCOVERY_EC2.GROUPS_SETTING);
|
||||
settingsModule.registerSetting(AwsEc2Service.DISCOVERY_EC2.AVAILABILITY_ZONES_SETTING);
|
||||
settingsModule.registerSetting(AwsEc2Service.DISCOVERY_EC2.NODE_CACHE_TIME_SETTING);
|
||||
settingsModule.registerSetting(AwsEc2Service.DISCOVERY_EC2.TAG_SETTING);
|
||||
|
||||
AwsEc2Service.DISCOVERY_EC2.HOST_TYPE_SETTING,
|
||||
AwsEc2Service.DISCOVERY_EC2.ANY_GROUP_SETTING,
|
||||
AwsEc2Service.DISCOVERY_EC2.GROUPS_SETTING,
|
||||
AwsEc2Service.DISCOVERY_EC2.AVAILABILITY_ZONES_SETTING,
|
||||
AwsEc2Service.DISCOVERY_EC2.NODE_CACHE_TIME_SETTING,
|
||||
AwsEc2Service.DISCOVERY_EC2.TAG_SETTING,
|
||||
// Register cloud node settings: cloud.node
|
||||
settingsModule.registerSetting(AwsEc2Service.AUTO_ATTRIBUTE_SETTING);
|
||||
}
|
||||
|
||||
/**
|
||||
* We manage potential duplicates between s3 and ec2 plugins (cloud.aws.xxx)
|
||||
*/
|
||||
private void registerSettingIfMissing(SettingsModule settingsModule, Setting<?> setting) {
|
||||
if (settingsModule.exists(setting) == false) {
|
||||
settingsModule.registerSetting(setting);
|
||||
}
|
||||
AwsEc2Service.AUTO_ATTRIBUTE_SETTING);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ import org.elasticsearch.common.component.LifecycleComponent;
|
|||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.logging.ESLogger;
|
||||
import org.elasticsearch.common.logging.Loggers;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.discovery.DiscoveryModule;
|
||||
|
@ -37,8 +38,10 @@ import org.elasticsearch.plugins.Plugin;
|
|||
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class GceDiscoveryPlugin extends Plugin {
|
||||
|
||||
|
@ -100,13 +103,15 @@ public class GceDiscoveryPlugin extends Plugin {
|
|||
discoveryModule.addUnicastHostProvider(GCE, GceUnicastHostsProvider.class);
|
||||
}
|
||||
|
||||
public void onModule(SettingsModule settingsModule) {
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(
|
||||
// Register GCE settings
|
||||
settingsModule.registerSetting(GceComputeService.PROJECT_SETTING);
|
||||
settingsModule.registerSetting(GceComputeService.ZONE_SETTING);
|
||||
settingsModule.registerSetting(GceUnicastHostsProvider.TAGS_SETTING);
|
||||
settingsModule.registerSetting(GceComputeService.REFRESH_SETTING);
|
||||
settingsModule.registerSetting(GceComputeService.RETRY_SETTING);
|
||||
settingsModule.registerSetting(GceComputeService.MAX_WAIT_SETTING);
|
||||
GceComputeService.PROJECT_SETTING,
|
||||
GceComputeService.ZONE_SETTING,
|
||||
GceUnicastHostsProvider.TAGS_SETTING,
|
||||
GceComputeService.REFRESH_SETTING,
|
||||
GceComputeService.RETRY_SETTING,
|
||||
GceComputeService.MAX_WAIT_SETTING);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ import org.elasticsearch.common.SuppressForbidden;
|
|||
import org.elasticsearch.common.io.FileSystemUtils;
|
||||
import org.elasticsearch.common.logging.ESLogger;
|
||||
import org.elasticsearch.common.logging.Loggers;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.plugin.discovery.gce.GceDiscoveryPlugin;
|
||||
|
@ -48,6 +49,7 @@ import java.nio.charset.StandardCharsets;
|
|||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.security.KeyStore;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
@ -74,10 +76,10 @@ public class GceDiscoverTests extends ESIntegTestCase {
|
|||
return "GceDiscoverTests";
|
||||
}
|
||||
|
||||
public void onModule(SettingsModule module) {
|
||||
module.registerSetting(GceComputeServiceImpl.GCE_HOST);
|
||||
module.registerSetting(GceComputeServiceImpl.GCE_ROOT_URL);
|
||||
module.registerSetting(GceComputeServiceImpl.GCE_VALIDATE_CERTIFICATES);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(GceComputeServiceImpl.GCE_HOST, GceComputeServiceImpl.GCE_ROOT_URL,
|
||||
GceComputeServiceImpl.GCE_VALIDATE_CERTIFICATES);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -22,10 +22,14 @@ package org.elasticsearch.mapper.attachments;
|
|||
import org.elasticsearch.common.logging.DeprecationLogger;
|
||||
import org.elasticsearch.common.logging.ESLogger;
|
||||
import org.elasticsearch.common.logging.ESLoggerFactory;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.indices.IndicesModule;
|
||||
import org.elasticsearch.plugins.Plugin;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class MapperAttachmentsPlugin extends Plugin {
|
||||
|
||||
|
||||
|
@ -42,11 +46,13 @@ public class MapperAttachmentsPlugin extends Plugin {
|
|||
return "Adds the attachment type allowing to parse difference attachment formats";
|
||||
}
|
||||
|
||||
public void onModule(SettingsModule settingsModule) {
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
deprecationLogger.deprecated("[mapper-attachments] plugin has been deprecated and will be replaced by [ingest-attachment] plugin.");
|
||||
settingsModule.registerSetting(AttachmentMapper.INDEX_ATTACHMENT_DETECT_LANGUAGE_SETTING);
|
||||
settingsModule.registerSetting(AttachmentMapper.INDEX_ATTACHMENT_IGNORE_ERRORS_SETTING);
|
||||
settingsModule.registerSetting(AttachmentMapper.INDEX_ATTACHMENT_INDEXED_CHARS_SETTING);
|
||||
|
||||
return Arrays.asList(AttachmentMapper.INDEX_ATTACHMENT_DETECT_LANGUAGE_SETTING,
|
||||
AttachmentMapper.INDEX_ATTACHMENT_IGNORE_ERRORS_SETTING,
|
||||
AttachmentMapper.INDEX_ATTACHMENT_INDEXED_CHARS_SETTING);
|
||||
}
|
||||
|
||||
public void onModule(IndicesModule indicesModule) {
|
||||
|
|
|
@ -24,6 +24,7 @@ import org.elasticsearch.cloud.azure.storage.AzureStorageService;
|
|||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.logging.ESLogger;
|
||||
import org.elasticsearch.common.logging.Loggers;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.index.snapshots.blobstore.BlobStoreIndexShardRepository;
|
||||
|
@ -31,8 +32,10 @@ import org.elasticsearch.plugins.Plugin;
|
|||
import org.elasticsearch.repositories.RepositoriesModule;
|
||||
import org.elasticsearch.repositories.azure.AzureRepository;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -67,16 +70,20 @@ public class AzureRepositoryPlugin extends Plugin {
|
|||
module.registerRepository(AzureRepository.TYPE, AzureRepository.class, BlobStoreIndexShardRepository.class);
|
||||
}
|
||||
|
||||
public void onModule(SettingsModule module) {
|
||||
module.registerSetting(AzureStorageService.Storage.ACCOUNT_SETTING);
|
||||
module.registerSetting(AzureStorageService.Storage.COMPRESS_SETTING);
|
||||
module.registerSetting(AzureStorageService.Storage.CONTAINER_SETTING);
|
||||
module.registerSetting(AzureStorageService.Storage.BASE_PATH_SETTING);
|
||||
module.registerSetting(AzureStorageService.Storage.CHUNK_SIZE_SETTING);
|
||||
module.registerSetting(AzureStorageService.Storage.LOCATION_MODE_SETTING);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(AzureStorageService.Storage.ACCOUNT_SETTING,
|
||||
AzureStorageService.Storage.COMPRESS_SETTING,
|
||||
AzureStorageService.Storage.CONTAINER_SETTING,
|
||||
AzureStorageService.Storage.BASE_PATH_SETTING,
|
||||
AzureStorageService.Storage.CHUNK_SIZE_SETTING,
|
||||
AzureStorageService.Storage.LOCATION_MODE_SETTING);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getSettingsFilter() {
|
||||
// Cloud storage API settings using a pattern needed to be hidden
|
||||
module.registerSettingsFilter(AzureStorageService.Storage.PREFIX + "*.account");
|
||||
module.registerSettingsFilter(AzureStorageService.Storage.PREFIX + "*.key");
|
||||
return Arrays.asList(AzureStorageService.Storage.PREFIX + "*.account", AzureStorageService.Storage.PREFIX + "*.key");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,8 +47,7 @@ public class AzureStorageSettingsFilterTests extends ESTestCase {
|
|||
|
||||
public void testSettingsFiltering() throws IOException {
|
||||
AzureRepositoryPlugin p = new AzureRepositoryPlugin(Settings.EMPTY);
|
||||
SettingsModule module = new SettingsModule(Settings.EMPTY);
|
||||
p.onModule(module);
|
||||
SettingsModule module = new SettingsModule(Settings.EMPTY, p.getSettings(), p.getSettingsFilter());
|
||||
SettingsFilter settingsFilter = ModuleTestCase.bindAndGetInstance(module, SettingsFilter.class);
|
||||
|
||||
// Test using direct filtering
|
||||
|
|
|
@ -40,43 +40,44 @@ public interface AwsS3Service extends LifecycleComponent<AwsS3Service> {
|
|||
* cloud.aws.access_key: AWS Access key. Shared with discovery-ec2 plugin
|
||||
*/
|
||||
Setting<String> KEY_SETTING =
|
||||
Setting.simpleString("cloud.aws.access_key", Property.NodeScope, Property.Filtered);
|
||||
Setting.simpleString("cloud.aws.access_key", Property.NodeScope, Property.Filtered, Property.Shared);
|
||||
/**
|
||||
* cloud.aws.secret_key: AWS Secret key. Shared with discovery-ec2 plugin
|
||||
*/
|
||||
Setting<String> SECRET_SETTING =
|
||||
Setting.simpleString("cloud.aws.secret_key", Property.NodeScope, Property.Filtered);
|
||||
Setting.simpleString("cloud.aws.secret_key", Property.NodeScope, Property.Filtered, Property.Shared);
|
||||
/**
|
||||
* cloud.aws.protocol: Protocol for AWS API: http or https. Defaults to https. Shared with discovery-ec2 plugin
|
||||
*/
|
||||
Setting<Protocol> PROTOCOL_SETTING = new Setting<>("cloud.aws.protocol", "https", s -> Protocol.valueOf(s.toUpperCase(Locale.ROOT)),
|
||||
Property.NodeScope);
|
||||
Property.NodeScope, Property.Shared);
|
||||
/**
|
||||
* cloud.aws.proxy.host: In case of proxy, define its hostname/IP. Shared with discovery-ec2 plugin
|
||||
*/
|
||||
Setting<String> PROXY_HOST_SETTING = Setting.simpleString("cloud.aws.proxy.host", Property.NodeScope);
|
||||
Setting<String> PROXY_HOST_SETTING = Setting.simpleString("cloud.aws.proxy.host", Property.NodeScope, Property.Shared);
|
||||
/**
|
||||
* cloud.aws.proxy.port: In case of proxy, define its port. Defaults to 80. Shared with discovery-ec2 plugin
|
||||
*/
|
||||
Setting<Integer> PROXY_PORT_SETTING = Setting.intSetting("cloud.aws.proxy.port", 80, 0, 1<<16, Property.NodeScope);
|
||||
Setting<Integer> PROXY_PORT_SETTING = Setting.intSetting("cloud.aws.proxy.port", 80, 0, 1<<16, Property.NodeScope,
|
||||
Property.Shared);
|
||||
/**
|
||||
* cloud.aws.proxy.username: In case of proxy with auth, define the username. Shared with discovery-ec2 plugin
|
||||
*/
|
||||
Setting<String> PROXY_USERNAME_SETTING = Setting.simpleString("cloud.aws.proxy.username", Property.NodeScope);
|
||||
Setting<String> PROXY_USERNAME_SETTING = Setting.simpleString("cloud.aws.proxy.username", Property.NodeScope, Property.Shared);
|
||||
/**
|
||||
* cloud.aws.proxy.password: In case of proxy with auth, define the password. Shared with discovery-ec2 plugin
|
||||
*/
|
||||
Setting<String> PROXY_PASSWORD_SETTING =
|
||||
Setting.simpleString("cloud.aws.proxy.password", Property.NodeScope, Property.Filtered);
|
||||
Setting.simpleString("cloud.aws.proxy.password", Property.NodeScope, Property.Filtered, Property.Shared);
|
||||
/**
|
||||
* cloud.aws.signer: If you are using an old AWS API version, you can define a Signer. Shared with discovery-ec2 plugin
|
||||
*/
|
||||
Setting<String> SIGNER_SETTING = Setting.simpleString("cloud.aws.signer", Property.NodeScope);
|
||||
Setting<String> SIGNER_SETTING = Setting.simpleString("cloud.aws.signer", Property.NodeScope, Property.Shared);
|
||||
/**
|
||||
* cloud.aws.region: Region. Shared with discovery-ec2 plugin
|
||||
*/
|
||||
Setting<String> REGION_SETTING =
|
||||
new Setting<>("cloud.aws.region", "", s -> s.toLowerCase(Locale.ROOT), Property.NodeScope);
|
||||
new Setting<>("cloud.aws.region", "", s -> s.toLowerCase(Locale.ROOT), Property.NodeScope, Property.Shared);
|
||||
|
||||
/**
|
||||
* Defines specific s3 settings starting with cloud.aws.s3.
|
||||
|
|
|
@ -34,8 +34,10 @@ import org.elasticsearch.repositories.s3.S3Repository;
|
|||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -89,69 +91,61 @@ public class S3RepositoryPlugin extends Plugin {
|
|||
repositoriesModule.registerRepository(S3Repository.TYPE, S3Repository.class, BlobStoreIndexShardRepository.class);
|
||||
}
|
||||
|
||||
public void onModule(SettingsModule settingsModule) {
|
||||
// Register global cloud aws settings: cloud.aws (might have been registered in ec2 plugin)
|
||||
registerSettingIfMissing(settingsModule, AwsS3Service.KEY_SETTING);
|
||||
registerSettingIfMissing(settingsModule, AwsS3Service.SECRET_SETTING);
|
||||
registerSettingIfMissing(settingsModule, AwsS3Service.PROTOCOL_SETTING);
|
||||
registerSettingIfMissing(settingsModule, AwsS3Service.PROXY_HOST_SETTING);
|
||||
registerSettingIfMissing(settingsModule, AwsS3Service.PROXY_PORT_SETTING);
|
||||
registerSettingIfMissing(settingsModule, AwsS3Service.PROXY_USERNAME_SETTING);
|
||||
registerSettingIfMissing(settingsModule, AwsS3Service.PROXY_PASSWORD_SETTING);
|
||||
registerSettingIfMissing(settingsModule, AwsS3Service.SIGNER_SETTING);
|
||||
registerSettingIfMissing(settingsModule, AwsS3Service.REGION_SETTING);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList( // Register global cloud aws settings: cloud.aws (might have been registered in ec2 plugin)
|
||||
AwsS3Service.KEY_SETTING,
|
||||
AwsS3Service.SECRET_SETTING,
|
||||
AwsS3Service.PROTOCOL_SETTING,
|
||||
AwsS3Service.PROXY_HOST_SETTING,
|
||||
AwsS3Service.PROXY_PORT_SETTING,
|
||||
AwsS3Service.PROXY_USERNAME_SETTING,
|
||||
AwsS3Service.PROXY_PASSWORD_SETTING,
|
||||
AwsS3Service.SIGNER_SETTING,
|
||||
AwsS3Service.REGION_SETTING,
|
||||
|
||||
// Register S3 specific settings: cloud.aws.s3
|
||||
settingsModule.registerSetting(AwsS3Service.CLOUD_S3.KEY_SETTING);
|
||||
settingsModule.registerSetting(AwsS3Service.CLOUD_S3.SECRET_SETTING);
|
||||
settingsModule.registerSetting(AwsS3Service.CLOUD_S3.PROTOCOL_SETTING);
|
||||
settingsModule.registerSetting(AwsS3Service.CLOUD_S3.PROXY_HOST_SETTING);
|
||||
settingsModule.registerSetting(AwsS3Service.CLOUD_S3.PROXY_PORT_SETTING);
|
||||
settingsModule.registerSetting(AwsS3Service.CLOUD_S3.PROXY_USERNAME_SETTING);
|
||||
settingsModule.registerSetting(AwsS3Service.CLOUD_S3.PROXY_PASSWORD_SETTING);
|
||||
settingsModule.registerSetting(AwsS3Service.CLOUD_S3.SIGNER_SETTING);
|
||||
settingsModule.registerSetting(AwsS3Service.CLOUD_S3.REGION_SETTING);
|
||||
settingsModule.registerSetting(AwsS3Service.CLOUD_S3.ENDPOINT_SETTING);
|
||||
AwsS3Service.CLOUD_S3.KEY_SETTING,
|
||||
AwsS3Service.CLOUD_S3.SECRET_SETTING,
|
||||
AwsS3Service.CLOUD_S3.PROTOCOL_SETTING,
|
||||
AwsS3Service.CLOUD_S3.PROXY_HOST_SETTING,
|
||||
AwsS3Service.CLOUD_S3.PROXY_PORT_SETTING,
|
||||
AwsS3Service.CLOUD_S3.PROXY_USERNAME_SETTING,
|
||||
AwsS3Service.CLOUD_S3.PROXY_PASSWORD_SETTING,
|
||||
AwsS3Service.CLOUD_S3.SIGNER_SETTING,
|
||||
AwsS3Service.CLOUD_S3.REGION_SETTING,
|
||||
AwsS3Service.CLOUD_S3.ENDPOINT_SETTING,
|
||||
|
||||
// Register S3 repositories settings: repositories.s3
|
||||
settingsModule.registerSetting(S3Repository.Repositories.KEY_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repositories.SECRET_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repositories.BUCKET_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repositories.REGION_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repositories.ENDPOINT_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repositories.PROTOCOL_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repositories.SERVER_SIDE_ENCRYPTION_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repositories.BUFFER_SIZE_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repositories.MAX_RETRIES_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repositories.CHUNK_SIZE_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repositories.COMPRESS_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repositories.STORAGE_CLASS_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repositories.CANNED_ACL_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repositories.BASE_PATH_SETTING);
|
||||
S3Repository.Repositories.KEY_SETTING,
|
||||
S3Repository.Repositories.SECRET_SETTING,
|
||||
S3Repository.Repositories.BUCKET_SETTING,
|
||||
S3Repository.Repositories.REGION_SETTING,
|
||||
S3Repository.Repositories.ENDPOINT_SETTING,
|
||||
S3Repository.Repositories.PROTOCOL_SETTING,
|
||||
S3Repository.Repositories.SERVER_SIDE_ENCRYPTION_SETTING,
|
||||
S3Repository.Repositories.BUFFER_SIZE_SETTING,
|
||||
S3Repository.Repositories.MAX_RETRIES_SETTING,
|
||||
S3Repository.Repositories.CHUNK_SIZE_SETTING,
|
||||
S3Repository.Repositories.COMPRESS_SETTING,
|
||||
S3Repository.Repositories.STORAGE_CLASS_SETTING,
|
||||
S3Repository.Repositories.CANNED_ACL_SETTING,
|
||||
S3Repository.Repositories.BASE_PATH_SETTING,
|
||||
|
||||
// Register S3 single repository settings
|
||||
settingsModule.registerSetting(S3Repository.Repository.KEY_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repository.SECRET_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repository.BUCKET_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repository.ENDPOINT_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repository.PROTOCOL_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repository.REGION_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repository.SERVER_SIDE_ENCRYPTION_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repository.BUFFER_SIZE_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repository.MAX_RETRIES_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repository.CHUNK_SIZE_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repository.COMPRESS_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repository.STORAGE_CLASS_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repository.CANNED_ACL_SETTING);
|
||||
settingsModule.registerSetting(S3Repository.Repository.BASE_PATH_SETTING);
|
||||
}
|
||||
|
||||
/**
|
||||
* We manage potential duplicates between s3 and ec2 plugins (cloud.aws.xxx)
|
||||
*/
|
||||
private void registerSettingIfMissing(SettingsModule settingsModule, Setting<?> setting) {
|
||||
if (settingsModule.exists(setting) == false) {
|
||||
settingsModule.registerSetting(setting);
|
||||
}
|
||||
S3Repository.Repository.KEY_SETTING,
|
||||
S3Repository.Repository.SECRET_SETTING,
|
||||
S3Repository.Repository.BUCKET_SETTING,
|
||||
S3Repository.Repository.ENDPOINT_SETTING,
|
||||
S3Repository.Repository.PROTOCOL_SETTING,
|
||||
S3Repository.Repository.REGION_SETTING,
|
||||
S3Repository.Repository.SERVER_SIDE_ENCRYPTION_SETTING,
|
||||
S3Repository.Repository.BUFFER_SIZE_SETTING,
|
||||
S3Repository.Repository.MAX_RETRIES_SETTING,
|
||||
S3Repository.Repository.CHUNK_SIZE_SETTING,
|
||||
S3Repository.Repository.COMPRESS_SETTING,
|
||||
S3Repository.Repository.STORAGE_CLASS_SETTING,
|
||||
S3Repository.Repository.CANNED_ACL_SETTING,
|
||||
S3Repository.Repository.BASE_PATH_SETTING);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,13 +22,16 @@ import org.apache.lucene.index.AssertingDirectoryReader;
|
|||
import org.apache.lucene.index.FilterDirectoryReader;
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
import org.elasticsearch.common.inject.Module;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.plugins.Plugin;
|
||||
import org.elasticsearch.test.engine.MockEngineFactory;
|
||||
import org.elasticsearch.test.engine.MockEngineSupport;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
// this must exist in the same package as IndexModule to allow access to setting the impl
|
||||
public class MockEngineFactoryPlugin extends Plugin {
|
||||
|
@ -43,9 +46,9 @@ public class MockEngineFactoryPlugin extends Plugin {
|
|||
|
||||
private Class<? extends FilterDirectoryReader> readerWrapper = AssertingDirectoryReader.class;
|
||||
|
||||
public void onModule(SettingsModule module) {
|
||||
module.registerSetting(MockEngineSupport.DISABLE_FLUSH_ON_CLOSE);
|
||||
module.registerSetting(MockEngineSupport.WRAP_READER_RATIO);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(MockEngineSupport.DISABLE_FLUSH_ON_CLOSE, MockEngineSupport.WRAP_READER_RATIO);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -60,6 +60,7 @@ import org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput;
|
|||
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
||||
import org.elasticsearch.common.io.stream.StreamInput;
|
||||
import org.elasticsearch.common.settings.IndexScopedSettings;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.common.unit.Fuzziness;
|
||||
|
@ -108,7 +109,6 @@ import org.elasticsearch.script.ScriptSettings;
|
|||
import org.elasticsearch.search.SearchModule;
|
||||
import org.elasticsearch.search.internal.SearchContext;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
import org.elasticsearch.threadpool.ThreadPoolModule;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.DateTimeZone;
|
||||
import org.junit.After;
|
||||
|
@ -880,15 +880,16 @@ public abstract class AbstractQueryTestCase<QB extends AbstractQueryBuilder<QB>>
|
|||
Environment env = InternalSettingsPreparer.prepareEnvironment(settings, null);
|
||||
PluginsService pluginsService =new PluginsService(settings, env.modulesFile(), env.pluginsFile(), plugins);
|
||||
|
||||
SettingsModule settingsModule = new SettingsModule(settings);
|
||||
settingsModule.registerSetting(InternalSettingsPlugin.VERSION_CREATED);
|
||||
final Client proxy = (Client) Proxy.newProxyInstance(
|
||||
Client.class.getClassLoader(),
|
||||
new Class[]{Client.class},
|
||||
clientInvocationHandler);
|
||||
NamedWriteableRegistry namedWriteableRegistry = new NamedWriteableRegistry();
|
||||
ScriptModule scriptModule = newTestScriptModule();
|
||||
scriptModule.prepareSettings(settingsModule);
|
||||
List<Setting<?>> scriptSettings = scriptModule.getSettings();
|
||||
scriptSettings.addAll(pluginsService.getPluginSettings());
|
||||
scriptSettings.add(InternalSettingsPlugin.VERSION_CREATED);
|
||||
SettingsModule settingsModule = new SettingsModule(settings, scriptSettings, pluginsService.getPluginSettingsFilter());
|
||||
searchModule = new SearchModule(settings, namedWriteableRegistry) {
|
||||
@Override
|
||||
protected void configureSearch() {
|
||||
|
@ -901,9 +902,8 @@ public abstract class AbstractQueryTestCase<QB extends AbstractQueryBuilder<QB>>
|
|||
}
|
||||
modulesBuilder.add(new PluginsModule(pluginsService));
|
||||
modulesBuilder.add(
|
||||
new EnvironmentModule(new Environment(settings)),
|
||||
new EnvironmentModule(new Environment(settings), threadPool),
|
||||
settingsModule,
|
||||
new ThreadPoolModule(threadPool),
|
||||
new IndicesModule() {
|
||||
@Override
|
||||
public void configure() {
|
||||
|
|
|
@ -1806,8 +1806,9 @@ public abstract class ESIntegTestCase extends ESTestCase {
|
|||
public String description() {
|
||||
return "a test plugin that registers index.tests.seed as an index setting";
|
||||
}
|
||||
public void onModule(SettingsModule module) {
|
||||
module.registerSetting(INDEX_TEST_SEED_SETTING);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(INDEX_TEST_SEED_SETTING);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -773,8 +773,7 @@ public abstract class ESTestCase extends LuceneTestCase {
|
|||
for (Consumer<AnalysisModule> consumer : moduleConsumers) {
|
||||
consumer.accept(analysisModule);
|
||||
}
|
||||
SettingsModule settingsModule = new SettingsModule(nodeSettings);
|
||||
settingsModule.registerSetting(InternalSettingsPlugin.VERSION_CREATED);
|
||||
SettingsModule settingsModule = new SettingsModule(nodeSettings, InternalSettingsPlugin.VERSION_CREATED);
|
||||
final AnalysisService analysisService = analysisModule.buildRegistry().build(IndexSettingsModule.newIndexSettings(index, indexSettings));
|
||||
return analysisService;
|
||||
}
|
||||
|
|
|
@ -24,6 +24,9 @@ import org.elasticsearch.common.settings.Setting.Property;
|
|||
import org.elasticsearch.common.settings.SettingsModule;
|
||||
import org.elasticsearch.plugins.Plugin;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public final class InternalSettingsPlugin extends Plugin {
|
||||
@Override
|
||||
public String name() {
|
||||
|
@ -42,9 +45,8 @@ public final class InternalSettingsPlugin extends Plugin {
|
|||
public static final Setting<Long> INDEX_CREATION_DATE_SETTING =
|
||||
Setting.longSetting(IndexMetaData.SETTING_CREATION_DATE, -1, -1, Property.IndexScope, Property.NodeScope);
|
||||
|
||||
public void onModule(SettingsModule module) {
|
||||
module.registerSetting(VERSION_CREATED);
|
||||
module.registerSetting(MERGE_ENABLED);
|
||||
module.registerSetting(INDEX_CREATION_DATE_SETTING);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(VERSION_CREATED, MERGE_ENABLED, INDEX_CREATION_DATE_SETTING);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1940,7 +1940,7 @@ public final class InternalTestCluster extends TestCluster {
|
|||
private void assertRequestsFinished() {
|
||||
if (size() > 0) {
|
||||
for (NodeAndClient nodeAndClient : nodes.values()) {
|
||||
CircuitBreaker inFlightRequestsBreaker = getInstance(HierarchyCircuitBreakerService.class, nodeAndClient.name)
|
||||
CircuitBreaker inFlightRequestsBreaker = getInstance(CircuitBreakerService.class, nodeAndClient.name)
|
||||
.getBreaker(CircuitBreaker.IN_FLIGHT_REQUESTS);
|
||||
try {
|
||||
// see #ensureEstimatedStats()
|
||||
|
|
|
@ -34,8 +34,10 @@ import org.elasticsearch.index.shard.IndexShardState;
|
|||
import org.elasticsearch.index.shard.ShardId;
|
||||
import org.elasticsearch.plugins.Plugin;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This is a testing plugin that registers a generic {@link org.elasticsearch.test.MockIndexEventListener.TestEventListener} as a node level service as well as a listener
|
||||
|
@ -65,8 +67,9 @@ public final class MockIndexEventListener {
|
|||
* For tests to pass in to fail on listener invocation
|
||||
*/
|
||||
public static final Setting<Boolean> INDEX_FAIL = Setting.boolSetting("index.fail", false, Property.IndexScope);
|
||||
public void onModule(SettingsModule module) {
|
||||
module.registerSetting(INDEX_FAIL);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(INDEX_FAIL);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -38,9 +38,11 @@ import org.elasticsearch.index.store.IndexStore;
|
|||
import org.elasticsearch.index.store.IndexStoreConfig;
|
||||
import org.elasticsearch.plugins.Plugin;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.IdentityHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class MockFSIndexStore extends IndexStore {
|
||||
|
@ -62,14 +64,14 @@ public class MockFSIndexStore extends IndexStore {
|
|||
return Settings.builder().put(IndexModule.INDEX_STORE_TYPE_SETTING.getKey(), "mock").build();
|
||||
}
|
||||
|
||||
public void onModule(SettingsModule module) {
|
||||
|
||||
module.registerSetting(INDEX_CHECK_INDEX_ON_CLOSE_SETTING);
|
||||
module.registerSetting(MockFSDirectoryService.CRASH_INDEX_SETTING);
|
||||
module.registerSetting(MockFSDirectoryService.RANDOM_IO_EXCEPTION_RATE_SETTING);
|
||||
module.registerSetting(MockFSDirectoryService.RANDOM_PREVENT_DOUBLE_WRITE_SETTING);
|
||||
module.registerSetting(MockFSDirectoryService.RANDOM_NO_DELETE_OPEN_FILE_SETTING);
|
||||
module.registerSetting(MockFSDirectoryService.RANDOM_IO_EXCEPTION_RATE_ON_OPEN_SETTING);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(INDEX_CHECK_INDEX_ON_CLOSE_SETTING,
|
||||
MockFSDirectoryService.CRASH_INDEX_SETTING,
|
||||
MockFSDirectoryService.RANDOM_IO_EXCEPTION_RATE_SETTING,
|
||||
MockFSDirectoryService.RANDOM_PREVENT_DOUBLE_WRITE_SETTING,
|
||||
MockFSDirectoryService.RANDOM_NO_DELETE_OPEN_FILE_SETTING,
|
||||
MockFSDirectoryService.RANDOM_IO_EXCEPTION_RATE_ON_OPEN_SETTING);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -42,6 +42,8 @@ import org.elasticsearch.transport.TransportResponseHandler;
|
|||
import org.elasticsearch.transport.local.LocalTransport;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class AssertingLocalTransport extends LocalTransport {
|
||||
|
@ -63,9 +65,9 @@ public class AssertingLocalTransport extends LocalTransport {
|
|||
return Settings.builder().put(NetworkModule.TRANSPORT_TYPE_KEY, "mock").build();
|
||||
}
|
||||
|
||||
public void onModule(SettingsModule module) {
|
||||
module.registerSetting(ASSERTING_TRANSPORT_MIN_VERSION_KEY);
|
||||
module.registerSetting(ASSERTING_TRANSPORT_MAX_VERSION_KEY);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(ASSERTING_TRANSPORT_MIN_VERSION_KEY, ASSERTING_TRANSPORT_MAX_VERSION_KEY);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ package org.elasticsearch.test.transport;
|
|||
|
||||
import org.elasticsearch.Version;
|
||||
import org.elasticsearch.cluster.ClusterName;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.transport.TransportService;
|
||||
|
||||
import org.elasticsearch.cluster.node.DiscoveryNode;
|
||||
|
@ -91,8 +92,9 @@ public class MockTransportService extends TransportService {
|
|||
module.registerTransportService("mock", MockTransportService.class);
|
||||
}
|
||||
|
||||
public void onModule(SettingsModule module) {
|
||||
module.registerSetting(MockTaskManager.USE_MOCK_TASK_MANAGER_SETTING);
|
||||
@Override
|
||||
public List<Setting<?>> getSettings() {
|
||||
return Arrays.asList(MockTaskManager.USE_MOCK_TASK_MANAGER_SETTING);
|
||||
}
|
||||
@Override
|
||||
public Settings additionalSettings() {
|
||||
|
|
Loading…
Reference in New Issue