mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-03-27 18:38:41 +00:00
Plugins: use resource files for list of modules and plugins
This adds modules.txt and plugins.txt to the core jar resource files, which the install plugin command statically loads, in place of the previously hardcoded lists (which have often gone out of date).
This commit is contained in:
parent
edfbdf2748
commit
a9e7bdc54c
core
@ -121,6 +121,36 @@ forbiddenPatterns {
|
||||
exclude '**/org/elasticsearch/cluster/routing/shard_routes.txt'
|
||||
}
|
||||
|
||||
task generateModulesList {
|
||||
List<String> modules = project(':modules').subprojects.collect { it.name }
|
||||
File modulesFile = new File(buildDir, 'generated-resources/modules.txt')
|
||||
processResources.from(modulesFile)
|
||||
inputs.property('modules', modules)
|
||||
outputs.file(modulesFile)
|
||||
doLast {
|
||||
modulesFile.parentFile.mkdirs()
|
||||
modulesFile.setText(modules.join('\n'), 'UTF-8')
|
||||
}
|
||||
}
|
||||
|
||||
task generatePluginsList {
|
||||
List<String> plugins = project(':plugins').subprojects
|
||||
.findAll { it.name.contains('example') == false }
|
||||
.collect { it.name }
|
||||
File pluginsFile = new File(buildDir, 'generated-resources/plugins.txt')
|
||||
processResources.from(pluginsFile)
|
||||
inputs.property('plugins', plugins)
|
||||
outputs.file(pluginsFile)
|
||||
doLast {
|
||||
pluginsFile.parentFile.mkdirs()
|
||||
pluginsFile.setText(plugins.join('\n'), 'UTF-8')
|
||||
}
|
||||
}
|
||||
|
||||
processResources {
|
||||
dependsOn generateModulesList, generatePluginsList
|
||||
}
|
||||
|
||||
thirdPartyAudit.excludes = [
|
||||
// uses internal java api: sun.security.x509 (X509CertInfo, X509CertImpl, X500Name)
|
||||
'org.jboss.netty.handler.ssl.util.OpenJdkSelfSignedCertGenerator',
|
||||
|
@ -19,23 +19,6 @@
|
||||
|
||||
package org.elasticsearch.plugins;
|
||||
|
||||
import joptsimple.OptionSet;
|
||||
import joptsimple.OptionSpec;
|
||||
import org.apache.lucene.util.IOUtils;
|
||||
import org.elasticsearch.Build;
|
||||
import org.elasticsearch.Version;
|
||||
import org.elasticsearch.bootstrap.JarHell;
|
||||
import org.elasticsearch.cli.Command;
|
||||
import org.elasticsearch.cli.ExitCodes;
|
||||
import org.elasticsearch.cli.SettingCommand;
|
||||
import org.elasticsearch.cli.Terminal;
|
||||
import org.elasticsearch.cli.UserError;
|
||||
import org.elasticsearch.common.hash.MessageDigests;
|
||||
import org.elasticsearch.common.io.FileSystemUtils;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.env.Environment;
|
||||
import org.elasticsearch.node.internal.InternalSettingsPreparer;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
@ -62,12 +45,28 @@ import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipInputStream;
|
||||
|
||||
import joptsimple.OptionSet;
|
||||
import joptsimple.OptionSpec;
|
||||
import org.apache.lucene.util.IOUtils;
|
||||
import org.elasticsearch.Build;
|
||||
import org.elasticsearch.Version;
|
||||
import org.elasticsearch.bootstrap.JarHell;
|
||||
import org.elasticsearch.cli.ExitCodes;
|
||||
import org.elasticsearch.cli.SettingCommand;
|
||||
import org.elasticsearch.cli.Terminal;
|
||||
import org.elasticsearch.cli.UserError;
|
||||
import org.elasticsearch.common.hash.MessageDigests;
|
||||
import org.elasticsearch.common.io.FileSystemUtils;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.env.Environment;
|
||||
import org.elasticsearch.node.internal.InternalSettingsPreparer;
|
||||
|
||||
import static java.util.Collections.unmodifiableSet;
|
||||
import static org.elasticsearch.cli.Terminal.Verbosity.VERBOSE;
|
||||
import static org.elasticsearch.common.util.set.Sets.newHashSet;
|
||||
|
||||
/**
|
||||
* A command for the plugin cli to install a plugin into elasticsearch.
|
||||
@ -103,37 +102,41 @@ class InstallPluginCommand extends SettingCommand {
|
||||
|
||||
private static final String PROPERTY_SUPPORT_STAGING_URLS = "es.plugins.staging";
|
||||
|
||||
// TODO: make this a resource file generated by gradle
|
||||
static final Set<String> MODULES = unmodifiableSet(newHashSet(
|
||||
"ingest-grok",
|
||||
"lang-expression",
|
||||
"lang-groovy",
|
||||
"lang-painless",
|
||||
"reindex"));
|
||||
/** The builtin modules, which are plugins, but cannot be installed or removed. */
|
||||
static final Set<String> MODULES;
|
||||
static {
|
||||
try (InputStream stream = InstallPluginCommand.class.getResourceAsStream("/modules.txt");
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8))) {
|
||||
Set<String> modules = new HashSet<>();
|
||||
String line = reader.readLine();
|
||||
while (line != null) {
|
||||
modules.add(line.trim());
|
||||
line = reader.readLine();
|
||||
}
|
||||
MODULES = Collections.unmodifiableSet(modules);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: make this a resource file generated by gradle
|
||||
static final Set<String> OFFICIAL_PLUGINS = unmodifiableSet(new LinkedHashSet<>(Arrays.asList(
|
||||
"analysis-icu",
|
||||
"analysis-kuromoji",
|
||||
"analysis-phonetic",
|
||||
"analysis-smartcn",
|
||||
"analysis-stempel",
|
||||
"discovery-azure",
|
||||
"discovery-ec2",
|
||||
"discovery-gce",
|
||||
"ingest-attachment",
|
||||
"ingest-geoip",
|
||||
"lang-javascript",
|
||||
"lang-python",
|
||||
"mapper-attachments",
|
||||
"mapper-murmur3",
|
||||
"mapper-size",
|
||||
"repository-azure",
|
||||
"repository-gcs",
|
||||
"repository-hdfs",
|
||||
"repository-s3",
|
||||
"store-smb",
|
||||
"x-pack")));
|
||||
/** The official plugins that can be installed simply by name. */
|
||||
static final Set<String> OFFICIAL_PLUGINS;
|
||||
static {
|
||||
try (InputStream stream = InstallPluginCommand.class.getResourceAsStream("/plugins.txt");
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8))) {
|
||||
Set<String> plugins = new TreeSet<>(); // use tree set to get sorting for help command
|
||||
String line = reader.readLine();
|
||||
while (line != null) {
|
||||
plugins.add(line.trim());
|
||||
line = reader.readLine();
|
||||
}
|
||||
plugins.add("x-pack");
|
||||
OFFICIAL_PLUGINS = Collections.unmodifiableSet(plugins);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private final OptionSpec<Void> batchOption;
|
||||
private final OptionSpec<String> arguments;
|
||||
|
Loading…
x
Reference in New Issue
Block a user