Skip to content

Commit f5aa081

Browse files
authored
Pass environment paths into entitlement bootstrap (elastic#121347) (elastic#121398)
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 ca16db9 commit f5aa081

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

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

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

3232
public class EntitlementBootstrap {
3333

34-
public record BootstrapArgs(Map<String, Policy> pluginPolicies, Function<Class<?>, String> pluginResolver) {
34+
public record BootstrapArgs(
35+
Map<String, Policy> pluginPolicies,
36+
Function<Class<?>, String> pluginResolver,
37+
Path[] dataDirs,
38+
Path configDir,
39+
Path tempDir
40+
) {
3541
public BootstrapArgs {
3642
requireNonNull(pluginPolicies);
3743
requireNonNull(pluginResolver);
44+
requireNonNull(dataDirs);
45+
if (dataDirs.length == 0) {
46+
throw new IllegalArgumentException("must provide at least one data directory");
47+
}
48+
requireNonNull(configDir);
49+
requireNonNull(tempDir);
3850
}
3951
}
4052

@@ -50,13 +62,22 @@ public static BootstrapArgs bootstrapArgs() {
5062
*
5163
* @param pluginPolicies a map holding policies for plugins (and modules), by plugin (or module) name.
5264
* @param pluginResolver a functor to map a Java Class to the plugin it belongs to (the plugin name).
65+
* @param dataDirs data directories for Elasticsearch
66+
* @param configDir the config directory for Elasticsearch
67+
* @param tempDir the temp directory for Elasticsearch
5368
*/
54-
public static void bootstrap(Map<String, Policy> pluginPolicies, Function<Class<?>, String> pluginResolver) {
69+
public static void bootstrap(
70+
Map<String, Policy> pluginPolicies,
71+
Function<Class<?>, String> pluginResolver,
72+
Path[] dataDirs,
73+
Path configDir,
74+
Path tempDir
75+
) {
5576
logger.debug("Loading entitlement agent");
5677
if (EntitlementBootstrap.bootstrapArgs != null) {
5778
throw new IllegalStateException("plugin data is already set");
5879
}
59-
EntitlementBootstrap.bootstrapArgs = new BootstrapArgs(pluginPolicies, pluginResolver);
80+
EntitlementBootstrap.bootstrapArgs = new BootstrapArgs(pluginPolicies, pluginResolver, dataDirs, configDir, tempDir);
6081
exportInitializationToAgent();
6182
loadAgent(findAgentJar());
6283
selfTest();

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

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

238238
var pluginsResolver = PluginsResolver.create(pluginsLoader);
239-
EntitlementBootstrap.bootstrap(pluginPolicies, pluginsResolver::resolveClassToPluginName);
239+
EntitlementBootstrap.bootstrap(
240+
pluginPolicies,
241+
pluginsResolver::resolveClassToPluginName,
242+
nodeEnv.dataFiles(),
243+
nodeEnv.configFile(),
244+
nodeEnv.tmpFile()
245+
);
240246
} else if (RuntimeVersionFeature.isSecurityManagerAvailable()) {
241247
// no need to explicitly enable native access for legacy code
242248
pluginsLoader = PluginsLoader.createPluginsLoader(modulesBundles, pluginsBundles, Map.of());

0 commit comments

Comments
 (0)