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
The following commit(s) were added to refs/heads/master by this push:
new 1b93348544 correclty use pull policy default, and show kubeconfig yaml
file
1b93348544 is described below
commit 1b93348544be0c4968e133b43f3a429ee4337fd3
Author: Alex Heneveld <[email protected]>
AuthorDate: Wed Sep 6 17:32:05 2023 +0100
correclty use pull policy default, and show kubeconfig yaml file
---
.../tasks/kubectl/ContainerTaskFactory.java | 10 +++---
.../brooklyn/tasks/kubectl/KubeJobFileCreator.java | 36 ++++++++++++++++++----
2 files changed, 36 insertions(+), 10 deletions(-)
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 70e6219336..0ca46cda75 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
@@ -42,6 +42,7 @@ import
org.apache.brooklyn.util.core.task.system.ProcessTaskWrapper;
import org.apache.brooklyn.util.core.task.system.SimpleProcessTaskFactory;
import
org.apache.brooklyn.util.core.task.system.internal.SystemProcessTaskFactory;
import org.apache.brooklyn.util.exceptions.Exceptions;
+import org.apache.brooklyn.util.stream.Streams;
import org.apache.brooklyn.util.text.Identifiers;
import org.apache.brooklyn.util.text.StringShortener;
import org.apache.brooklyn.util.text.Strings;
@@ -124,7 +125,7 @@ public class ContainerTaskFactory<T extends
ContainerTaskFactory<T,RET>,RET> imp
LOG.debug("Submitting container job in namespace
"+namespace+", name "+kubeJobName);
Map<String, String> env = new
ShellEnvironmentSerializer(((EntityInternal)entity).getManagementContext()).serialize(EntityInitializers.resolve(config,
SHELL_ENVIRONMENT));
- final
BrooklynBomOsgiArchiveInstaller.FileWithTempInfo<File> jobYaml = new
KubeJobFileCreator()
+ KubeJobFileCreator kubeJobFileCreator = new
KubeJobFileCreator()
.withImage(containerImage)
.withImagePullPolicy(containerImagePullPolicy)
.withName(kubeJobName)
@@ -133,9 +134,10 @@ public class ContainerTaskFactory<T extends
ContainerTaskFactory<T,RET>,RET> imp
.withEnv(env)
.withVolumeMounts(volumeMounts)
.withVolumes(volumes)
- .withWorkingDir(workingDir)
- .createFile();
+ .withWorkingDir(workingDir);
+ final
BrooklynBomOsgiArchiveInstaller.FileWithTempInfo<File> jobYaml =
kubeJobFileCreator.createFile();
Tasks.addTagDynamically(BrooklynTaskTags.tagForEnvStream(BrooklynTaskTags.STREAM_ENV,
env));
+
Tasks.addTagDynamically(BrooklynTaskTags.tagForStream("kube job config",
Streams.byteArrayOfString(kubeJobFileCreator.getAsString())));
try {
@@ -612,7 +614,7 @@ public class ContainerTaskFactory<T extends
ContainerTaskFactory<T,RET>,RET> imp
public T image(String image) { config.put(CONTAINER_IMAGE, image); return
self(); }
public T allowingNonZeroExitCode() { return allowingNonZeroExitCode(true);
}
public T allowingNonZeroExitCode(boolean allowNonZero) {
config.put(REQUIRE_EXIT_CODE_ZERO, !allowNonZero); return self(); }
- public T imagePullPolicy(PullPolicy policy) {
config.put(CONTAINER_IMAGE_PULL_POLICY, policy); return self(); }
+ public T imagePullPolicy(PullPolicy policy) { if (policy==null)
config.remove(CONTAINER_IMAGE_PULL_POLICY); else
config.put(CONTAINER_IMAGE_PULL_POLICY, policy); return self(); }
@Override
public T environmentVariables(Map<String,String> map) {
return environmentVariablesRaw(map);
diff --git
a/software/base/src/main/java/org/apache/brooklyn/tasks/kubectl/KubeJobFileCreator.java
b/software/base/src/main/java/org/apache/brooklyn/tasks/kubectl/KubeJobFileCreator.java
index 5b090d7442..ac411c34d1 100644
---
a/software/base/src/main/java/org/apache/brooklyn/tasks/kubectl/KubeJobFileCreator.java
+++
b/software/base/src/main/java/org/apache/brooklyn/tasks/kubectl/KubeJobFileCreator.java
@@ -34,6 +34,8 @@ import org.yaml.snakeyaml.representer.Representer;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
import java.util.*;
import java.util.stream.Collectors;
@@ -129,6 +131,18 @@ public class KubeJobFileCreator {
}
public BrooklynBomOsgiArchiveInstaller.FileWithTempInfo<File> createFile(){
+ JobTemplate jobTemplate = buildJobTemplate();
+ return serializeAndWriteToTempFile(jobTemplate);
+ }
+
+ public String getAsString(){
+ JobTemplate jobTemplate = buildJobTemplate();
+ StringWriter sw = new StringWriter();
+ serializeAndWriteToWriter(jobTemplate, sw);
+ return sw.toString();
+ }
+
+ private JobTemplate buildJobTemplate() {
JobTemplate jobTemplate = new JobTemplate(jobName);
ContainerSpec containerSpec =
jobTemplate.getSpec().getTemplate().getContainerSpec(0);
@@ -175,10 +189,23 @@ public class KubeJobFileCreator {
});
containerSpec.setVolumeMounts(vms);
}
- return serializeAndWriteToTempFile(jobTemplate);
+ return jobTemplate;
}
private BrooklynBomOsgiArchiveInstaller.FileWithTempInfo<File>
serializeAndWriteToTempFile(JobTemplate jobTemplate) {
+ try {
+ File jobBodyPath = File.createTempFile(prefix, ".yaml");
+ jobBodyPath.deleteOnExit(); // We should have already deleted it,
but just in case
+
+ serializeAndWriteToWriter(jobTemplate, new
PrintWriter(jobBodyPath));
+ LOG.debug("Job body dumped at: {}", jobBodyPath.getAbsolutePath());
+ return new
BrooklynBomOsgiArchiveInstaller.FileWithTempInfo<>(jobBodyPath, true);
+ } catch (IOException e) {
+ throw new RuntimeException("Failed to create temp file for
container", e);
+ }
+ }
+
+ private void serializeAndWriteToWriter(JobTemplate jobTemplate, Writer
writer) {
DumperOptions options = new DumperOptions();
options.setIndent(2);
options.setPrettyFlow(true);
@@ -201,13 +228,10 @@ public class KubeJobFileCreator {
File jobBodyPath = File.createTempFile(prefix, ".yaml");
jobBodyPath.deleteOnExit(); // We should have already deleted it,
but just in case
- PrintWriter sw = new PrintWriter(jobBodyPath);
Yaml yaml = new Yaml(representer, options);
- yaml.dump(jobTemplate, sw);
- LOG.debug("Job body dumped at: {}" ,
jobBodyPath.getAbsolutePath());
- return new
BrooklynBomOsgiArchiveInstaller.FileWithTempInfo<>(jobBodyPath, true);
+ yaml.dump(jobTemplate, writer);
} catch (IOException e) {
- throw new RuntimeException("Failed to create temp file for
container", e);
+ throw new RuntimeException("Failed to write job file for
container", e);
}
}
}