mirror of
https://github.com/kestra-io/kestra.git
synced 2025-12-19 18:05:41 -05:00
refactor: remove rendering from Docker (#7439)
rendering is done in the CommandsWrapper so no need to render again in the task runner
This commit is contained in:
@@ -428,7 +428,7 @@ public class Docker extends TaskRunner<Docker.DockerTaskRunnerDetailResult> {
|
||||
// start container
|
||||
dockerClient.startContainerCmd(exec.getId()).exec();
|
||||
|
||||
List<String> renderedCommands = this.renderCommands(runContext, taskCommands);
|
||||
List<String> renderedCommands = runContext.render(taskCommands.getCommands()).asList(String.class);
|
||||
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug(
|
||||
@@ -780,7 +780,7 @@ public class Docker extends TaskRunner<Docker.DockerTaskRunnerDetailResult> {
|
||||
|
||||
return container
|
||||
.withHostConfig(hostConfig)
|
||||
.withCmd(this.renderCommands(runContext, taskCommands))
|
||||
.withCmd(runContext.render(taskCommands.getCommands()).asList(String.class))
|
||||
.withAttachStderr(true)
|
||||
.withAttachStdout(true);
|
||||
}
|
||||
|
||||
@@ -124,52 +124,4 @@ class LogConsumerTest {
|
||||
assertThat(logs.stream().filter(m -> m.getLevel().equals(Level.TRACE)).filter(m -> m.getMessage().contains("Trace 2")).count(), is(1L));
|
||||
assertThat(logs.stream().filter(m -> m.getLevel().equals(Level.TRACE)).count(), greaterThanOrEqualTo(5L));
|
||||
}
|
||||
|
||||
@Test
|
||||
void logs_dynamicProperties() throws Exception {
|
||||
List<LogEntry> logs = new ArrayList<>();
|
||||
Flux<LogEntry> receive = TestsUtils.receive(logQueue, l -> logs.add(l.getLeft()));
|
||||
|
||||
RunContext runContext = TestsUtils.mockRunContext(runContextFactory, TASK, Map.of(
|
||||
"text", "World",
|
||||
"error", "Error",
|
||||
"trace", "Trace 2",
|
||||
"interpreter", "sh"
|
||||
));
|
||||
TaskCommands taskCommands = new CommandsWrapper(runContext)
|
||||
.withInterpreter(propertyFromList(List.of("/bin/{{ inputs.interpreter }}", "-c")))
|
||||
.withCommands(propertyFromList(List.of(
|
||||
"""
|
||||
echo '::{"logs": [{"level":"INFO","message":"Hello World"}]}::'
|
||||
echo '::{"logs": [{"level":"ERROR","message":"Hello {{ inputs.error }}"}]}::'
|
||||
echo '::{"logs": [{"level":"TRACE","message":"Hello Trace workdir:{{workingDir}}"}, {"level":"TRACE","message":"Hello {{ inputs.trace }}"}]}::'
|
||||
""")
|
||||
)
|
||||
);
|
||||
|
||||
Docker.from(DockerOptions.builder().image("alpine").build()).run(
|
||||
runContext,
|
||||
taskCommands,
|
||||
Collections.emptyList()
|
||||
);
|
||||
|
||||
receive.blockLast();
|
||||
|
||||
assertThat(logs.stream().filter(m -> m.getLevel().equals(Level.INFO)).count(), is(1L));
|
||||
String beforeLogMessage = logs.stream().filter(m -> m.getLevel().equals(Level.INFO)).findFirst().orElseThrow().getMessage();
|
||||
assertThat(beforeLogMessage, is("Hello World"));
|
||||
|
||||
assertThat(logs.stream().filter(m -> m.getLevel().equals(Level.ERROR)).count(), is(1L));
|
||||
assertThat(logs.stream().filter(m -> m.getLevel().equals(Level.TRACE)).filter(m -> m.getMessage().contains("Trace 2")).count(), is(1L));
|
||||
|
||||
Optional<String> logWithWorkingDir = logs.stream().filter(m -> m.getLevel().equals(Level.TRACE))
|
||||
.map(LogEntry::getMessage)
|
||||
.filter(message -> message.contains("Hello Trace workdir")).findFirst();
|
||||
|
||||
assertThat(logWithWorkingDir.isPresent(), is(true));
|
||||
String workingDir = logWithWorkingDir.get().split(":")[1];
|
||||
assertThat(workingDir, containsString("/tmp/"));
|
||||
|
||||
assertThat(logs.stream().filter(m -> m.getLevel().equals(Level.TRACE)).count(), greaterThanOrEqualTo(5L));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user