mirror of
https://github.com/kestra-io/kestra.git
synced 2025-12-19 18:05:41 -05:00
feat(plugin): bring cloneForPlugin to the RunContext
To replace the usage of the RunContextInitializer for that as plugins using another plugin needs it. Part-of: https://github.com/kestra-io/kestra-ee/issues/4228
This commit is contained in:
@@ -6,10 +6,12 @@ import com.google.common.base.CaseFormat;
|
|||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import io.kestra.core.exceptions.IllegalVariableEvaluationException;
|
import io.kestra.core.exceptions.IllegalVariableEvaluationException;
|
||||||
import io.kestra.core.metrics.MetricRegistry;
|
import io.kestra.core.metrics.MetricRegistry;
|
||||||
|
import io.kestra.core.models.Plugin;
|
||||||
import io.kestra.core.models.executions.AbstractMetricEntry;
|
import io.kestra.core.models.executions.AbstractMetricEntry;
|
||||||
import io.kestra.core.models.property.Property;
|
import io.kestra.core.models.property.Property;
|
||||||
import io.kestra.core.models.tasks.Task;
|
import io.kestra.core.models.tasks.Task;
|
||||||
import io.kestra.core.models.triggers.AbstractTrigger;
|
import io.kestra.core.models.triggers.AbstractTrigger;
|
||||||
|
import io.kestra.core.plugins.PluginConfigurations;
|
||||||
import io.kestra.core.services.KVStoreService;
|
import io.kestra.core.services.KVStoreService;
|
||||||
import io.kestra.core.storages.Storage;
|
import io.kestra.core.storages.Storage;
|
||||||
import io.kestra.core.storages.StorageInterface;
|
import io.kestra.core.storages.StorageInterface;
|
||||||
@@ -235,6 +237,14 @@ public class DefaultRunContext extends RunContext {
|
|||||||
return runContext;
|
return runContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RunContext cloneForPlugin(Plugin plugin) {
|
||||||
|
PluginConfigurations pluginConfigurations = applicationContext.getBean(PluginConfigurations.class);
|
||||||
|
DefaultRunContext runContext = clone();
|
||||||
|
runContext.pluginConfiguration = pluginConfigurations.getConfigurationByPluginTypeOrAliases(plugin.getType(), plugin.getClass());
|
||||||
|
return runContext;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
|
|||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
import io.kestra.core.encryption.EncryptionService;
|
import io.kestra.core.encryption.EncryptionService;
|
||||||
import io.kestra.core.exceptions.IllegalVariableEvaluationException;
|
import io.kestra.core.exceptions.IllegalVariableEvaluationException;
|
||||||
|
import io.kestra.core.models.Plugin;
|
||||||
import io.kestra.core.models.executions.AbstractMetricEntry;
|
import io.kestra.core.models.executions.AbstractMetricEntry;
|
||||||
import io.kestra.core.models.property.Property;
|
import io.kestra.core.models.property.Property;
|
||||||
import io.kestra.core.models.property.PropertyContext;
|
import io.kestra.core.models.property.PropertyContext;
|
||||||
@@ -204,4 +205,10 @@ public abstract class RunContext implements PropertyContext {
|
|||||||
* when Namespace ACLs are used (EE).
|
* when Namespace ACLs are used (EE).
|
||||||
*/
|
*/
|
||||||
public abstract AclChecker acl();
|
public abstract AclChecker acl();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clone this run context for a specific plugin.
|
||||||
|
* @return a new run context with the plugin configuration of the given plugin.
|
||||||
|
*/
|
||||||
|
public abstract RunContext cloneForPlugin(Plugin plugin);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
package io.kestra.core.runners;
|
package io.kestra.core.runners;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import io.kestra.core.models.Plugin;
|
|
||||||
import io.kestra.core.models.executions.TaskRun;
|
import io.kestra.core.models.executions.TaskRun;
|
||||||
import io.kestra.core.models.tasks.Task;
|
import io.kestra.core.models.tasks.Task;
|
||||||
import io.kestra.core.models.tasks.runners.TaskRunner;
|
|
||||||
import io.kestra.core.models.triggers.AbstractTrigger;
|
import io.kestra.core.models.triggers.AbstractTrigger;
|
||||||
import io.kestra.core.models.triggers.TriggerContext;
|
import io.kestra.core.models.triggers.TriggerContext;
|
||||||
import io.kestra.core.plugins.PluginConfigurations;
|
import io.kestra.core.plugins.PluginConfigurations;
|
||||||
@@ -53,20 +51,6 @@ public class RunContextInitializer {
|
|||||||
@Value("${kestra.encryption.secret-key}")
|
@Value("${kestra.encryption.secret-key}")
|
||||||
protected Optional<String> secretKey;
|
protected Optional<String> secretKey;
|
||||||
|
|
||||||
/**
|
|
||||||
* Initializes the given {@link RunContext} for the given {@link Plugin}.
|
|
||||||
*
|
|
||||||
* @param runContext The {@link RunContext} to initialize.
|
|
||||||
* @param plugin The {@link TaskRunner} used for initialization.
|
|
||||||
* @return The {@link RunContext} to initialize
|
|
||||||
*/
|
|
||||||
public DefaultRunContext forPlugin(final DefaultRunContext runContext,
|
|
||||||
final Plugin plugin) {
|
|
||||||
runContext.init(applicationContext);
|
|
||||||
runContext.setPluginConfiguration(pluginConfigurations.getConfigurationByPluginTypeOrAliases(plugin.getType(), plugin.getClass()));
|
|
||||||
return runContext;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the given {@link RunContext} for the given {@link WorkerTask} for executor.
|
* Initializes the given {@link RunContext} for the given {@link WorkerTask} for executor.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -157,9 +157,7 @@ public class CommandsWrapper implements TaskCommands {
|
|||||||
FilesService.inputFiles(runContext, realTaskRunner.additionalVars(runContext, this), this.inputFiles);
|
FilesService.inputFiles(runContext, realTaskRunner.additionalVars(runContext, this), this.inputFiles);
|
||||||
}
|
}
|
||||||
|
|
||||||
RunContextInitializer initializer = ((DefaultRunContext) runContext).getApplicationContext().getBean(RunContextInitializer.class);
|
RunContext taskRunnerRunContext = runContext.cloneForPlugin(realTaskRunner);
|
||||||
|
|
||||||
RunContext taskRunnerRunContext = initializer.forPlugin(((DefaultRunContext) runContext).clone(), realTaskRunner);
|
|
||||||
|
|
||||||
List<String> renderedCommands = this.renderCommands(runContext, commands);
|
List<String> renderedCommands = this.renderCommands(runContext, commands);
|
||||||
List<String> renderedBeforeCommands = this.renderCommands(runContext, beforeCommands);
|
List<String> renderedBeforeCommands = this.renderCommands(runContext, beforeCommands);
|
||||||
|
|||||||
@@ -402,7 +402,7 @@ public class DefaultWorker implements Worker {
|
|||||||
WorkerTask currentWorkerTask = workingDirectory.workerTask(
|
WorkerTask currentWorkerTask = workingDirectory.workerTask(
|
||||||
workerTask.getTaskRun(),
|
workerTask.getTaskRun(),
|
||||||
currentTask,
|
currentTask,
|
||||||
runContextInitializer.forPlugin(runContext, currentTask)
|
runContext.cloneForPlugin(currentTask)
|
||||||
);
|
);
|
||||||
|
|
||||||
// all tasks will be handled immediately by the worker
|
// all tasks will be handled immediately by the worker
|
||||||
|
|||||||
Reference in New Issue
Block a user