Skip to content

Commit 7f2832f

Browse files
authored
[Fix-17906] Fix can't get pod's log in k8s task (#18075)
1 parent be1f12f commit 7f2832f

4 files changed

Lines changed: 41 additions & 23 deletions

File tree

dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/parameters/K8sTaskParameters.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package org.apache.dolphinscheduler.plugin.task.api.parameters;
1919

20+
import org.apache.dolphinscheduler.common.utils.JSONUtils;
2021
import org.apache.dolphinscheduler.plugin.task.api.K8sTaskExecutionContext;
2122
import org.apache.dolphinscheduler.plugin.task.api.enums.ResourceType;
2223
import org.apache.dolphinscheduler.plugin.task.api.model.Label;
@@ -31,8 +32,10 @@
3132
import java.util.List;
3233

3334
import lombok.Data;
35+
import lombok.EqualsAndHashCode;
3436
import lombok.extern.slf4j.Slf4j;
3537

38+
@EqualsAndHashCode(callSuper = true)
3639
@Data
3740
@Slf4j
3841
public class K8sTaskParameters extends AbstractParameters {
@@ -79,7 +82,18 @@ public K8sTaskExecutionContext generateK8sTaskExecutionContext(
7982
connectionParams = dataSourceParameters.getConnectionParams();
8083
}
8184

85+
String configYaml = null;
86+
String namespace = null;
87+
if (StringUtils.isNotEmpty(connectionParams) && JSONUtils.checkJsonValid(connectionParams, false)) {
88+
K8sTaskParameters connectionTaskParameters =
89+
JSONUtils.parseObject(connectionParams, K8sTaskParameters.class);
90+
configYaml = connectionTaskParameters.getKubeConfig();
91+
namespace = connectionTaskParameters.getNamespace();
92+
}
93+
8294
return K8sTaskExecutionContext.builder()
95+
.configYaml(configYaml)
96+
.namespace(namespace)
8397
.connectionParams(connectionParams)
8498
.build();
8599
}

dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/parameters/resource/DataSourceParameters.java

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,38 +19,20 @@
1919

2020
import org.apache.dolphinscheduler.spi.enums.DbType;
2121

22+
import lombok.Data;
23+
import lombok.EqualsAndHashCode;
24+
2225
import com.fasterxml.jackson.annotation.JsonProperty;
2326

27+
@EqualsAndHashCode(callSuper = true)
28+
@Data
2429
public class DataSourceParameters extends AbstractResourceParameters {
2530

2631
private DbType type;
2732

28-
public String getResourceType() {
29-
return resourceType;
30-
}
31-
32-
public void setResourceType(String resourceType) {
33-
this.resourceType = resourceType;
34-
}
35-
3633
@JsonProperty(value = "DATASOURCE")
3734
private String resourceType;
3835

3936
private String connectionParams;
4037

41-
public DbType getType() {
42-
return type;
43-
}
44-
45-
public void setType(DbType type) {
46-
this.type = type;
47-
}
48-
49-
public String getConnectionParams() {
50-
return connectionParams;
51-
}
52-
53-
public void setConnectionParams(String connectionParams) {
54-
this.connectionParams = connectionParams;
55-
}
5638
}

dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/main/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sTask.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ public void init() {
7979
k8sTaskParameters.setNamespace(k8sConnectionParam.getNamespace());
8080
k8sTaskParameters.setKubeConfig(kubeConfig);
8181
k8sTaskExecutionContext.setConfigYaml(kubeConfig);
82+
k8sTaskExecutionContext.setNamespace(k8sConnectionParam.getNamespace());
8283
taskRequest.setK8sTaskExecutionContext(k8sTaskExecutionContext);
8384
log.info("Initialize k8s task params:{}", JSONUtils.toPrettyJsonString(k8sTaskParameters));
8485
}

dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/test/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sParametersTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,13 @@
1717

1818
package org.apache.dolphinscheduler.plugin.task.k8s;
1919

20+
import org.apache.dolphinscheduler.plugin.task.api.K8sTaskExecutionContext;
21+
import org.apache.dolphinscheduler.plugin.task.api.enums.ResourceType;
2022
import org.apache.dolphinscheduler.plugin.task.api.model.Label;
2123
import org.apache.dolphinscheduler.plugin.task.api.model.NodeSelectorExpression;
2224
import org.apache.dolphinscheduler.plugin.task.api.parameters.K8sTaskParameters;
25+
import org.apache.dolphinscheduler.plugin.task.api.parameters.resource.DataSourceParameters;
26+
import org.apache.dolphinscheduler.plugin.task.api.parameters.resource.ResourceParametersHelper;
2327

2428
import java.util.Arrays;
2529
import java.util.List;
@@ -80,4 +84,21 @@ public void testK8sParameters() {
8084
Assertions.assertEquals(nodeSelectorExpressions, k8sTaskParameters.getNodeSelectors());
8185
}
8286

87+
@Test
88+
public void testGenerateK8sTaskExecutionContextShouldContainDatasourceNamespace() {
89+
String connectionParams = "{\"kubeConfig\":\"{}\",\"namespace\":\"namespace\"}";
90+
DataSourceParameters dataSourceParameters = new DataSourceParameters();
91+
dataSourceParameters.setConnectionParams(connectionParams);
92+
93+
ResourceParametersHelper resourceParametersHelper = new ResourceParametersHelper();
94+
resourceParametersHelper.put(ResourceType.DATASOURCE, 1, dataSourceParameters);
95+
96+
K8sTaskExecutionContext executionContext =
97+
k8sTaskParameters.generateK8sTaskExecutionContext(resourceParametersHelper, 1);
98+
99+
Assertions.assertEquals(connectionParams, executionContext.getConnectionParams());
100+
Assertions.assertEquals("{}", executionContext.getConfigYaml());
101+
Assertions.assertEquals(namespace, executionContext.getNamespace());
102+
}
103+
83104
}

0 commit comments

Comments
 (0)