Merge pull request #18594 from jasontedor/plugins-cleanup
Plugins cleanup
This commit is contained in:
commit
d23db39445
|
@ -244,7 +244,7 @@ final class Security {
|
|||
addPath(policy, Environment.PATH_HOME_SETTING.getKey(), environment.binFile(), "read,readlink");
|
||||
addPath(policy, Environment.PATH_HOME_SETTING.getKey(), environment.libFile(), "read,readlink");
|
||||
addPath(policy, Environment.PATH_HOME_SETTING.getKey(), environment.modulesFile(), "read,readlink");
|
||||
addPath(policy, Environment.PATH_PLUGINS_SETTING.getKey(), environment.pluginsFile(), "read,readlink");
|
||||
addPath(policy, Environment.PATH_HOME_SETTING.getKey(), environment.pluginsFile(), "read,readlink");
|
||||
addPath(policy, Environment.PATH_CONF_SETTING.getKey(), environment.configFile(), "read,readlink");
|
||||
addPath(policy, Environment.PATH_SCRIPTS_SETTING.getKey(), environment.scriptsFile(), "read,readlink");
|
||||
// read-write dirs
|
||||
|
|
|
@ -332,7 +332,6 @@ public final class ClusterSettings extends AbstractScopedSettings {
|
|||
Environment.PATH_DATA_SETTING,
|
||||
Environment.PATH_HOME_SETTING,
|
||||
Environment.PATH_LOGS_SETTING,
|
||||
Environment.PATH_PLUGINS_SETTING,
|
||||
Environment.PATH_REPO_SETTING,
|
||||
Environment.PATH_SCRIPTS_SETTING,
|
||||
Environment.PATH_SHARED_DATA_SETTING,
|
||||
|
|
|
@ -53,7 +53,6 @@ public class Environment {
|
|||
public static final Setting<List<String>> PATH_DATA_SETTING =
|
||||
Setting.listSetting("path.data", Collections.emptyList(), Function.identity(), Property.NodeScope);
|
||||
public static final Setting<String> PATH_LOGS_SETTING = Setting.simpleString("path.logs", Property.NodeScope);
|
||||
public static final Setting<String> PATH_PLUGINS_SETTING = Setting.simpleString("path.plugins", Property.NodeScope);
|
||||
public static final Setting<List<String>> PATH_REPO_SETTING =
|
||||
Setting.listSetting("path.repo", Collections.emptyList(), Function.identity(), Property.NodeScope);
|
||||
public static final Setting<String> PATH_SHARED_DATA_SETTING = Setting.simpleString("path.shared_data", Property.NodeScope);
|
||||
|
@ -128,11 +127,7 @@ public class Environment {
|
|||
scriptsFile = configFile.resolve("scripts");
|
||||
}
|
||||
|
||||
if (PATH_PLUGINS_SETTING.exists(settings)) {
|
||||
pluginsFile = PathUtils.get(cleanPath(PATH_PLUGINS_SETTING.get(settings)));
|
||||
} else {
|
||||
pluginsFile = homeFile.resolve("plugins");
|
||||
}
|
||||
|
||||
List<String> dataPaths = PATH_DATA_SETTING.get(settings);
|
||||
if (dataPaths.isEmpty() == false) {
|
||||
|
|
|
@ -304,7 +304,9 @@ class InstallPluginCommand extends SettingCommand {
|
|||
|
||||
// be on the safe side: do not rely on that directories are always extracted
|
||||
// before their children (although this makes sense, but is it guaranteed?)
|
||||
if (!Files.isSymbolicLink(targetFile.getParent())) {
|
||||
Files.createDirectories(targetFile.getParent());
|
||||
}
|
||||
if (entry.isDirectory() == false) {
|
||||
try (OutputStream out = Files.newOutputStream(targetFile)) {
|
||||
int len;
|
||||
|
|
|
@ -71,7 +71,7 @@ class RemovePluginCommand extends SettingCommand {
|
|||
|
||||
Path pluginDir = env.pluginsFile().resolve(pluginName);
|
||||
if (Files.exists(pluginDir) == false) {
|
||||
throw new UserError(ExitCodes.USAGE, "Plugin " + pluginName + " not found. Run 'plugin list' to get list of installed plugins.");
|
||||
throw new UserError(ExitCodes.USAGE, "plugin " + pluginName + " not found; run 'elasticsearch-plugin list' to get list of installed plugins");
|
||||
}
|
||||
|
||||
List<Path> pluginPaths = new ArrayList<>();
|
||||
|
|
|
@ -220,9 +220,6 @@ public class TribeService extends AbstractLifecycleComponent<TribeService> {
|
|||
if (Environment.PATH_CONF_SETTING.exists(globalSettings)) {
|
||||
sb.put(Environment.PATH_CONF_SETTING.getKey(), Environment.PATH_CONF_SETTING.get(globalSettings));
|
||||
}
|
||||
if (Environment.PATH_PLUGINS_SETTING.exists(globalSettings)) {
|
||||
sb.put(Environment.PATH_PLUGINS_SETTING.getKey(), Environment.PATH_PLUGINS_SETTING.get(globalSettings));
|
||||
}
|
||||
if (Environment.PATH_LOGS_SETTING.exists(globalSettings)) {
|
||||
sb.put(Environment.PATH_LOGS_SETTING.getKey(), Environment.PATH_LOGS_SETTING.get(globalSettings));
|
||||
}
|
||||
|
|
|
@ -43,13 +43,11 @@ public class TribeServiceTests extends ESTestCase {
|
|||
.put("node.name", "nodename")
|
||||
.put("path.home", "some/path")
|
||||
.put("path.conf", "conf/path")
|
||||
.put("path.plugins", "plugins/path")
|
||||
.put("path.scripts", "scripts/path")
|
||||
.put("path.logs", "logs/path").build();
|
||||
Settings clientSettings = TribeService.buildClientSettings("tribe1", globalSettings, Settings.EMPTY);
|
||||
assertEquals("some/path", clientSettings.get("path.home"));
|
||||
assertEquals("conf/path", clientSettings.get("path.conf"));
|
||||
assertEquals("plugins/path", clientSettings.get("path.plugins"));
|
||||
assertEquals("scripts/path", clientSettings.get("path.scripts"));
|
||||
assertEquals("logs/path", clientSettings.get("path.logs"));
|
||||
|
||||
|
|
|
@ -180,18 +180,7 @@ set ES_JAVA_OPTS="-DproxyHost=host_name -DproxyPort=port_number"
|
|||
bin/elasticsearch-plugin install analysis-icu
|
||||
-----------------------------------
|
||||
|
||||
=== Settings related to plugins
|
||||
|
||||
[float]
|
||||
=== Custom plugins directory
|
||||
|
||||
The `plugins` directory can be changed from the default by adding the
|
||||
following to the `elasticsearch.yml` config file:
|
||||
|
||||
[source,yml]
|
||||
---------------------
|
||||
path.plugins: /path/to/custom/plugins/dir
|
||||
---------------------
|
||||
=== Plugins directory
|
||||
|
||||
The default location of the `plugins` directory depends on which package you install:
|
||||
|
||||
|
|
|
@ -112,3 +112,8 @@ Previously, Java system properties could be passed to the plugin
|
|||
command by passing `-D` style arguments directly to the plugin script.
|
||||
This is no longer permitted and such system properties must be passed
|
||||
via ES_JAVA_OPTS.
|
||||
|
||||
==== Custom plugins path
|
||||
|
||||
The ability to specify a custom plugins path via `path.plugins` has
|
||||
been removed.
|
||||
|
|
|
@ -87,7 +87,6 @@ configuration options are passed down from the tribe node to each node client:
|
|||
* `transport.publish_host`
|
||||
* `path.home`
|
||||
* `path.conf`
|
||||
* `path.plugins`
|
||||
* `path.logs`
|
||||
* `path.scripts`
|
||||
* `shield.*`
|
||||
|
|
|
@ -174,7 +174,6 @@ locations for a Debian-based system:
|
|||
| plugins
|
||||
| Plugin files location. Each plugin will be contained in a subdirectory.
|
||||
| /usr/share/elasticsearch/plugins
|
||||
| path.plugins
|
||||
|
||||
| repo
|
||||
| Shared file system repository locations. Can hold multiple locations. A file system repository can be placed in to any subdirectory of any directory specified here.
|
||||
|
|
|
@ -160,7 +160,6 @@ locations for an RPM-based system:
|
|||
| plugins
|
||||
| Plugin files location. Each plugin will be contained in a subdirectory.
|
||||
| /usr/share/elasticsearch/plugins
|
||||
| path.plugins
|
||||
|
||||
| repo
|
||||
| Shared file system repository locations. Can hold multiple locations. A file system repository can be placed in to any subdirectory of any directory specified here.
|
||||
|
|
|
@ -228,7 +228,6 @@ directory so that you do not delete important data later on.
|
|||
| plugins
|
||||
| Plugin files location. Each plugin will be contained in a subdirectory.
|
||||
| %ES_HOME%\plugins
|
||||
| path.plugins
|
||||
|
||||
| repo
|
||||
| Shared file system repository locations. Can hold multiple locations. A file system repository can be placed in to any subdirectory of any directory specified here.
|
||||
|
|
|
@ -147,7 +147,6 @@ directory so that you do not delete important data later on.
|
|||
| plugins
|
||||
| Plugin files location. Each plugin will be contained in a subdirectory.
|
||||
| $ES_HOME/plugins
|
||||
| path.plugins
|
||||
|
||||
| repo
|
||||
| Shared file system repository locations. Can hold multiple locations. A file system repository can be placed in to any subdirectory of any directory specified here.
|
||||
|
|
|
@ -77,7 +77,6 @@ public class EvilSecurityTests extends ESTestCase {
|
|||
settingsBuilder.put(Environment.PATH_HOME_SETTING.getKey(), esHome.resolve("home").toString());
|
||||
settingsBuilder.put(Environment.PATH_CONF_SETTING.getKey(), esHome.resolve("conf").toString());
|
||||
settingsBuilder.put(Environment.PATH_SCRIPTS_SETTING.getKey(), esHome.resolve("scripts").toString());
|
||||
settingsBuilder.put(Environment.PATH_PLUGINS_SETTING.getKey(), esHome.resolve("plugins").toString());
|
||||
settingsBuilder.putArray(Environment.PATH_DATA_SETTING.getKey(), esHome.resolve("data1").toString(), esHome.resolve("data2").toString());
|
||||
settingsBuilder.put(Environment.PATH_SHARED_DATA_SETTING.getKey(), esHome.resolve("custom").toString());
|
||||
settingsBuilder.put(Environment.PATH_LOGS_SETTING.getKey(), esHome.resolve("logs").toString());
|
||||
|
|
|
@ -73,7 +73,7 @@ public class RemovePluginCommandTests extends ESTestCase {
|
|||
|
||||
public void testMissing() throws Exception {
|
||||
UserError e = expectThrows(UserError.class, () -> removePlugin("dne", home));
|
||||
assertTrue(e.getMessage(), e.getMessage().contains("Plugin dne not found"));
|
||||
assertTrue(e.getMessage(), e.getMessage().contains("plugin dne not found"));
|
||||
assertRemoveCleaned(env);
|
||||
}
|
||||
|
||||
|
|
|
@ -113,25 +113,26 @@ fi
|
|||
fi
|
||||
}
|
||||
|
||||
@test "[$GROUP] install jvm-example plugin with a custom path.plugins" {
|
||||
@test "[$GROUP] install jvm-example plugin with a symlinked plugins path" {
|
||||
# Clean up after the last time this test was run
|
||||
rm -rf /tmp/plugins.*
|
||||
rm -rf /tmp/old_plugins.*
|
||||
|
||||
local oldPlugins="$ESPLUGINS"
|
||||
export ESPLUGINS=$(mktemp -d -t 'plugins.XXXX')
|
||||
|
||||
# Modify the path.plugins setting in configuration file
|
||||
echo "path.plugins: $ESPLUGINS" >> "$ESCONFIG/elasticsearch.yml"
|
||||
chown -R elasticsearch:elasticsearch "$ESPLUGINS"
|
||||
rm -rf "$ESPLUGINS"
|
||||
local es_plugins=$(mktemp -d -t 'plugins.XXXX')
|
||||
chown -R elasticsearch:elasticsearch "$es_plugins"
|
||||
ln -s "$es_plugins" "$ESPLUGINS"
|
||||
|
||||
install_jvm_example
|
||||
start_elasticsearch_service
|
||||
# check that configuration was actually picked up
|
||||
# check that symlinked plugin was actually picked up
|
||||
curl -s localhost:9200/_cat/configured_example | sed 's/ *$//' > /tmp/installed
|
||||
echo "foo" > /tmp/expected
|
||||
diff /tmp/installed /tmp/expected
|
||||
stop_elasticsearch_service
|
||||
remove_jvm_example
|
||||
|
||||
unlink "$ESPLUGINS"
|
||||
}
|
||||
|
||||
@test "[$GROUP] install jvm-example plugin with a custom CONFIG_DIR" {
|
||||
|
|
Loading…
Reference in New Issue