Skip to content

Commit 3a87232

Browse files
committed
Path environement paths in to entitlement bootstrap
This commit adds the data dirs, config dir and temp dir into entitlement bootstrapping. It doesn't yet use them in entitlement policies, but makes them available to use within initialization.
1 parent 9ad3f68 commit 3a87232

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

libs/entitlement/src/main/java/org/elasticsearch/entitlement/bootstrap/EntitlementBootstrap.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,17 @@
3131

3232
public class EntitlementBootstrap {
3333

34-
public record BootstrapArgs(Map<String, Policy> pluginPolicies, Function<Class<?>, String> pluginResolver) {
34+
public record BootstrapArgs(Map<String, Policy> pluginPolicies, Function<Class<?>, String> pluginResolver,
35+
Path[] dataDirs, Path configDir, Path tempDir) {
3536
public BootstrapArgs {
3637
requireNonNull(pluginPolicies);
3738
requireNonNull(pluginResolver);
39+
requireNonNull(dataDirs);
40+
if (dataDirs.length == 0) {
41+
throw new IllegalArgumentException("must provide at least one data directory");
42+
}
43+
requireNonNull(configDir);
44+
requireNonNull(tempDir);
3845
}
3946
}
4047

@@ -50,13 +57,17 @@ public static BootstrapArgs bootstrapArgs() {
5057
*
5158
* @param pluginPolicies a map holding policies for plugins (and modules), by plugin (or module) name.
5259
* @param pluginResolver a functor to map a Java Class to the plugin it belongs to (the plugin name).
60+
* @param dataDirs data directories for Elasticsearch
61+
* @param configDir the config directory for Elasticsearch
62+
* @param tempDir the temp directory for Elasticsearch
5363
*/
54-
public static void bootstrap(Map<String, Policy> pluginPolicies, Function<Class<?>, String> pluginResolver) {
64+
public static void bootstrap(Map<String, Policy> pluginPolicies, Function<Class<?>, String> pluginResolver,
65+
Path[] dataDirs, Path configDir, Path tempDir) {
5566
logger.debug("Loading entitlement agent");
5667
if (EntitlementBootstrap.bootstrapArgs != null) {
5768
throw new IllegalStateException("plugin data is already set");
5869
}
59-
EntitlementBootstrap.bootstrapArgs = new BootstrapArgs(pluginPolicies, pluginResolver);
70+
EntitlementBootstrap.bootstrapArgs = new BootstrapArgs(pluginPolicies, pluginResolver, dataDirs, configDir, tempDir);
6071
exportInitializationToAgent();
6172
loadAgent(findAgentJar());
6273
selfTest();

server/src/main/java/org/elasticsearch/bootstrap/Elasticsearch.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,8 @@ private static void initPhase2(Bootstrap bootstrap) throws IOException {
242242
pluginsLoader = PluginsLoader.createPluginsLoader(modulesBundles, pluginsBundles, findPluginsWithNativeAccess(pluginPolicies));
243243

244244
var pluginsResolver = PluginsResolver.create(pluginsLoader);
245-
EntitlementBootstrap.bootstrap(pluginPolicies, pluginsResolver::resolveClassToPluginName);
245+
EntitlementBootstrap.bootstrap(pluginPolicies, pluginsResolver::resolveClassToPluginName,
246+
nodeEnv.dataFiles(), nodeEnv.configFile(), nodeEnv.tmpFile());
246247
} else if (RuntimeVersionFeature.isSecurityManagerAvailable()) {
247248
// no need to explicitly enable native access for legacy code
248249
pluginsLoader = PluginsLoader.createPluginsLoader(modulesBundles, pluginsBundles, Map.of());

0 commit comments

Comments
 (0)