This is an automated email from the ASF dual-hosted git repository.
jcabrerizo 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 13a5fa48e1 Added fix and test for set<map<?,?>> config keys in
container task factory
new 5db3f2052d Merge pull request #1342 from iuliana/fix/set-key
13a5fa48e1 is described below
commit 13a5fa48e1f40c8ec9020ccbfdd219bdaad61961
Author: iuliana <[email protected]>
AuthorDate: Mon Jul 18 11:25:56 2022 +0100
Added fix and test for set<map<?,?>> config keys in container task factory
---
.../brooklyn/tasks/kubectl/ContainerCommons.java | 5 ++--
.../brooklyn/tasks/kubectl/ContainerTaskTest.java | 33 ++++++++++++++++++++++
2 files changed, 36 insertions(+), 2 deletions(-)
diff --git
a/software/base/src/main/java/org/apache/brooklyn/tasks/kubectl/ContainerCommons.java
b/software/base/src/main/java/org/apache/brooklyn/tasks/kubectl/ContainerCommons.java
index 8e48ffedc7..4601a9ce02 100644
---
a/software/base/src/main/java/org/apache/brooklyn/tasks/kubectl/ContainerCommons.java
+++
b/software/base/src/main/java/org/apache/brooklyn/tasks/kubectl/ContainerCommons.java
@@ -28,6 +28,7 @@ import org.apache.brooklyn.util.time.Duration;
import java.util.List;
import java.util.Map;
+import java.util.Set;
@SuppressWarnings({ "rawtypes"})
public interface ContainerCommons {
@@ -45,10 +46,10 @@ public interface ContainerCommons {
ConfigKey<Duration> TIMEOUT = ConfigKeys.newConfigKey(Duration.class,
"timeout", "Container wait timeout", Duration.minutes(1));
ConfigKey<String> WORKING_DIR =
ConfigKeys.newStringConfigKey("workingDir", "Location where the container
commands are executed");
- BasicConfigKey<Map<String,String>> VOLUME_MOUNTS =
SetConfigKey.builder(new TypeToken<Map<String,String>>() {}, "volumeMounts")
+ ConfigKey<Set<Map<String,String>>> VOLUME_MOUNTS = new
SetConfigKey.Builder<>(new TypeToken<Map<String,String>>() {}, "volumeMounts")
.description("Configuration to mount a volume into a
container.").defaultValue(null).build();
- BasicConfigKey<Map<String,Object>> VOLUMES = SetConfigKey.builder(new
TypeToken<Map<String,Object>>() {}, "volumes")
+ ConfigKey<Set<Map<String,Object>>> VOLUMES = new SetConfigKey.Builder(new
TypeToken<Map<String,Object>>() {}, "volumes")
.description("List of directories with data that is accessible
across multiple containers").defaultValue(null).build();
String NAMESPACE_CREATE_CMD = "kubectl create namespace brooklyn-%s"; //
namespace name
diff --git
a/software/base/src/test/java/org/apache/brooklyn/tasks/kubectl/ContainerTaskTest.java
b/software/base/src/test/java/org/apache/brooklyn/tasks/kubectl/ContainerTaskTest.java
index 54796537e9..36fe0acc08 100644
---
a/software/base/src/test/java/org/apache/brooklyn/tasks/kubectl/ContainerTaskTest.java
+++
b/software/base/src/test/java/org/apache/brooklyn/tasks/kubectl/ContainerTaskTest.java
@@ -18,9 +18,11 @@
*/
package org.apache.brooklyn.tasks.kubectl;
+import com.beust.jcommander.internal.Maps;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
import org.apache.brooklyn.api.entity.EntitySpec;
import org.apache.brooklyn.api.mgmt.HasTaskChildren;
import org.apache.brooklyn.api.mgmt.Task;
@@ -123,4 +125,35 @@ public class ContainerTaskTest extends
BrooklynAppUnitTestSupport {
}
}
+ @Test
+ public void testScriptContainerTask() {
+ TestEntity entity =
app.createAndManageChild(EntitySpec.create(TestEntity.class));
+ Map<String,Object> volumes = Maps.newHashMap();
+ volumes.put("name", "tf-ws");
+ volumes.put("hostPath", Maps.newHashMap("path", "/tfws"));
+
+ List<String> commands = MutableList.of("./hello.sh");
+
+ Map<String,Object> configBag = new HashMap<>();
+ configBag.put("name", "test-container-task");
+ configBag.put("image", "hhwang927/ubuntu_base");
+ configBag.put("imagePullPolicy", "never");
+ configBag.put("commands", commands);
+ configBag.put("workingDir", "/tfws/scripts");
+ configBag.put("volumes", Sets.newHashSet(volumes));
+ configBag.put("volumeMounts", Sets.newHashSet(Maps.newHashMap("name",
"tf-ws", "mountPath", "/tfws")));
+
+ Task<String> containerTask = new
ContainerTaskFactory.ConcreteContainerTaskFactory<String>()
+ .summary("Running docker task")
+ .configure(configBag)
+ .newTask();
+ DynamicTasks.queueIfPossible(containerTask).orSubmitAsync(entity);
+ Object result = containerTask.getUnchecked(Duration.of(5,
TimeUnit.MINUTES));
+ List<String> res = (List<String>) result;
+ while(!res.isEmpty() && Iterables.getLast(res).matches("namespace .*
deleted\\s*")) res = res.subList(0, res.size()-1);
+
+ String res2 = res.isEmpty() ? null : Iterables.getLast(res);
+ assertTrue(res2.contains("hello"));
+ }
+
}