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"));
+    }
+
 }

Reply via email to