This is an automated email from the ASF dual-hosted git repository. heneveld pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git
commit d3f34ab10ab9d58e971390a301a236143ca936da Author: Alex Heneveld <[email protected]> AuthorDate: Wed Aug 24 12:09:40 2022 +0100 provide more visibility of container lifecycle so consumers can tell when a container is up, should they wish to use it e.g. for a `kubectl cp` command --- .../brooklyn/tasks/kubectl/ContainerTaskFactory.java | 4 ++++ .../apache/brooklyn/tasks/kubectl/ContainerTaskResult.java | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/software/base/src/main/java/org/apache/brooklyn/tasks/kubectl/ContainerTaskFactory.java b/software/base/src/main/java/org/apache/brooklyn/tasks/kubectl/ContainerTaskFactory.java index 310888cf08..0cb3cd9236 100644 --- a/software/base/src/main/java/org/apache/brooklyn/tasks/kubectl/ContainerTaskFactory.java +++ b/software/base/src/main/java/org/apache/brooklyn/tasks/kubectl/ContainerTaskFactory.java @@ -195,6 +195,7 @@ public class ContainerTaskFactory<T extends ContainerTaskFactory<T,RET>,RET> imp // wait for it to be running (or failed / succeeded) - PodPhases phaseOnceActive = waitForContainerAvailable(entity, kubeJobName, result, timer); + result.containerStarted = true; // waitForContainerPodContainerState(kubeJobName, result, timer); // notify once pod is available @@ -221,6 +222,9 @@ public class ContainerTaskFactory<T extends ContainerTaskFactory<T,RET>,RET> imp if (Strings.isNonBlank(exitCodeS)) result.mainExitCode = Integer.parseInt(exitCodeS.trim()); else result.mainExitCode = -1; + result.containerEnded = true; + synchronized (result) { result.notifyAll(); } + if (result.mainExitCode!=0 && config.get(REQUIRE_EXIT_CODE_ZERO)) { LOG.info("Failed container job "+namespace+" (exit code "+result.mainExitCode+") output: "+result.mainStdout); throw new IllegalStateException("Non-zero exit code (" + result.mainExitCode + ") disallowed"); diff --git a/software/base/src/main/java/org/apache/brooklyn/tasks/kubectl/ContainerTaskResult.java b/software/base/src/main/java/org/apache/brooklyn/tasks/kubectl/ContainerTaskResult.java index 22cfe13d46..e0fd5f08c1 100644 --- a/software/base/src/main/java/org/apache/brooklyn/tasks/kubectl/ContainerTaskResult.java +++ b/software/base/src/main/java/org/apache/brooklyn/tasks/kubectl/ContainerTaskResult.java @@ -18,12 +18,17 @@ */ package org.apache.brooklyn.tasks.kubectl; +/** + * Object containing details of a container task. This object is notified when containerStarted and containerEnded are set. + */ public class ContainerTaskResult { String mainStdout; Integer mainExitCode; String namespace; String kubeJobName; public String kubePodName; + boolean containerStarted = false; + boolean containerEnded = false; /** * This will be 0 unless allowNonZeroExitCode was specified @@ -47,4 +52,13 @@ public class ContainerTaskResult { public String getKubePodName() { return kubePodName; } + + /** indicates container has started; namespace, pod name and job name will be available now */ + public boolean getContainerStarted() { + return containerStarted; + } + /** indicates container has ended; all output will be set */ + public boolean getContainerEnded() { + return containerEnded; + } }
