This is an automated email from the ASF dual-hosted git repository.
xincheng pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new b7fb393eed fix: trim node selector requirement value (#14307)
b7fb393eed is described below
commit b7fb393eeda610afc21c3cadb06f8054bca087ca
Author: Aaron Wang <[email protected]>
AuthorDate: Fri Jun 9 18:06:52 2023 +0800
fix: trim node selector requirement value (#14307)
---
docs/docs/en/guide/task/kubernetes.md | 22 +++++++++++-----------
.../dolphinscheduler/plugin/task/k8s/K8sTask.java | 3 +--
.../plugin/task/k8s/K8sTaskTest.java | 18 ++++++++++++++++++
3 files changed, 30 insertions(+), 13 deletions(-)
diff --git a/docs/docs/en/guide/task/kubernetes.md
b/docs/docs/en/guide/task/kubernetes.md
index f5b06d3bc8..316a82adf7 100644
--- a/docs/docs/en/guide/task/kubernetes.md
+++ b/docs/docs/en/guide/task/kubernetes.md
@@ -16,17 +16,17 @@ K8S task type used to execute a batch task. In this task,
the worker submits the
- Please refer to [DolphinScheduler Task Parameters Appendix](appendix.md)
`Default Task Parameters` section for default parameters.
-| **Parameter** |
**Description**
|
-|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| Namespace | The namespace for running k8s task.
|
-| Min CPU | Minimum CPU requirement for running k8s task.
|
-| Min Memory | Minimum memory requirement for running k8s task.
|
-| Image | The registry url for image.
|
-| Command | The container execution command (yaml-style array), for
example: ["printenv"]
|
-| Args | The args of execution command (yaml-style array), for
example: ["HOSTNAME", "KUBERNETES_PORT"]
|
-| Custom label | The customized labels for k8s Job.
|
-| Node selector | The label selectors for running k8s pod. Different value
in value set should be seperated by command, for example: `value1,value2`. You
can refer to
https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/node-selector-requirement/
for configuration of different operators. |
-| Custom parameter | It is a local user-defined parameter for K8S task, these
params will pass to container as environment variables.
|
+| **Parameter** |
**Description**
|
+|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| Namespace | The namespace for running k8s task.
|
+| Min CPU | Minimum CPU requirement for running k8s task.
|
+| Min Memory | Minimum memory requirement for running k8s task.
|
+| Image | The registry url for image.
|
+| Command | The container execution command (yaml-style array), for
example: ["printenv"]
|
+| Args | The args of execution command (yaml-style array), for
example: ["HOSTNAME", "KUBERNETES_PORT"]
|
+| Custom label | The customized labels for k8s Job.
|
+| Node selector | The label selectors for running k8s pod. Different value
in value set should be seperated by comma, for example: `value1,value2`. You
can refer to
https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/node-selector-requirement/
for configuration of different operators. |
+| Custom parameter | It is a local user-defined parameter for K8S task, these
params will pass to container as environment variables.
|
## Task Example
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/main/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sTask.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/main/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sTask.java
index d95864d662..d35c1999cf 100644
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/main/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sTask.java
+++
b/dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/main/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sTask.java
@@ -18,7 +18,6 @@
package org.apache.dolphinscheduler.plugin.task.k8s;
import static
org.apache.dolphinscheduler.plugin.task.api.TaskConstants.CLUSTER;
-import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.COMMA;
import static
org.apache.dolphinscheduler.plugin.task.api.TaskConstants.NAMESPACE_NAME;
import org.apache.dolphinscheduler.common.utils.JSONUtils;
@@ -110,7 +109,7 @@ public class K8sTask extends AbstractK8sTask {
expression.getKey(),
expression.getOperator(),
StringUtils.isEmpty(expression.getValues()) ?
Collections.emptyList()
- :
Arrays.asList(expression.getValues().trim().split(COMMA))))
+ :
Arrays.asList(expression.getValues().trim().split("\\s*,\\s*"))))
.collect(Collectors.toList());
}
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/test/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sTaskTest.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/test/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sTaskTest.java
index 199203a4ef..a0fda89e33 100644
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/test/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sTaskTest.java
+++
b/dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/test/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sTaskTest.java
@@ -26,6 +26,7 @@ import
org.apache.dolphinscheduler.plugin.task.api.model.NodeSelectorExpression;
import org.apache.dolphinscheduler.plugin.task.api.model.Property;
import
org.apache.dolphinscheduler.plugin.task.api.parameters.K8sTaskParameters;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@@ -35,6 +36,8 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import io.fabric8.kubernetes.api.model.NodeSelectorRequirement;
+
public class K8sTaskTest {
private K8sTaskParameters k8sTaskParameters = null;
@@ -107,4 +110,19 @@ public class K8sTaskTest {
Assertions.assertEquals(expectedStr, result);
}
+ @Test
+ public void testConvertToNodeSelectorRequirements() {
+ NodeSelectorExpression expression = new NodeSelectorExpression();
+ expression.setKey("key");
+ expression.setOperator("In");
+ expression.setValues("123, 1234");
+ List<NodeSelectorRequirement> nodeSelectorRequirements =
+
k8sTask.convertToNodeSelectorRequirements(Arrays.asList(expression));
+ Assertions.assertEquals(1, nodeSelectorRequirements.size());
+ List<String> expectedList = new ArrayList<>();
+ expectedList.add("123");
+ expectedList.add("1234");
+ Assertions.assertEquals(expectedList,
nodeSelectorRequirements.get(0).getValues());
+ }
+
}