Skip to content
This repository was archived by the owner on May 14, 2025. It is now read-only.

Commit 45c8468

Browse files
cppwfsilayaperumalg
authored andcommitted
Schedules support UseKubernetesSecretsForDbCredentials flag
resolves #3985
1 parent 002715a commit 45c8468

File tree

4 files changed

+33
-26
lines changed

4 files changed

+33
-26
lines changed

spring-cloud-dataflow-server-core/src/main/java/org/springframework/cloud/dataflow/server/service/impl/DefaultSchedulerService.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,9 @@ public void schedule(String scheduleName, String taskDefinitionName, Map<String,
164164
}
165165
Assert.notNull(appRegistration, "Unknown task app: " + taskDefinition.getRegisteredAppName());
166166
Resource metadataResource = this.registry.getAppMetadataResource(appRegistration);
167-
168-
taskDefinition = TaskServiceUtils.updateTaskProperties(taskDefinition, this.dataSourceProperties);
167+
Launcher launcher = getTaskLauncher(platformName);
168+
taskDefinition = TaskServiceUtils.updateTaskProperties(taskDefinition, this.dataSourceProperties,
169+
TaskServiceUtils.addDatabaseCredentials(this.taskConfigurationProperties.isUseKubernetesSecretsForDbCredentials(), launcher.getType()));
169170

170171
Map<String, String> appDeploymentProperties = new HashMap<>(commonApplicationProperties.getTask());
171172
appDeploymentProperties.putAll(
@@ -181,7 +182,6 @@ public void schedule(String scheduleName, String taskDefinitionName, Map<String,
181182
DeploymentPropertiesUtils.validateDeploymentProperties(taskDeploymentProperties);
182183
taskDeploymentProperties = extractAndQualifySchedulerProperties(taskDeploymentProperties);
183184

184-
Launcher launcher = getTaskLauncher(platformName);
185185
scheduleName = validateScheduleNameForPlatform(launcher.getType(), scheduleName);
186186

187187
ScheduleRequest scheduleRequest = new ScheduleRequest(revisedDefinition, taskDeploymentProperties,
@@ -406,4 +406,5 @@ protected Resource getTaskResource(String taskDefinitionName) {
406406
Assert.notNull(appRegistration, "Unknown task app: " + taskDefinition.getRegisteredAppName());
407407
return this.registry.getAppResource(appRegistration);
408408
}
409+
409410
}

spring-cloud-dataflow-server-core/src/main/java/org/springframework/cloud/dataflow/server/service/impl/DefaultTaskExecutionService.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -331,15 +331,17 @@ private TaskExecutionInformation findOrCreateTaskExecutionInformation(String tas
331331
TaskExecutionInformation taskExecutionInformation;
332332
try {
333333
taskExecutionInformation = taskExecutionInfoService
334-
.findTaskExecutionInformation(taskName, taskDeploymentProperties, addDatabaseCredentials(platform));
334+
.findTaskExecutionInformation(taskName, taskDeploymentProperties,
335+
TaskServiceUtils.addDatabaseCredentials(this.taskConfigurationProperties.isUseKubernetesSecretsForDbCredentials(), platform));
335336

336337
} catch (NoSuchTaskDefinitionException e) {
337338
if (autoCreateTaskDefinitions) {
338339
logger.info("Creating a Task Definition {} for registered app name {}", taskName, taskName);
339340
TaskDefinition taskDefinition = new TaskDefinition(taskName, taskName);
340341
taskSaveService.saveTaskDefinition(taskDefinition);
341342
taskExecutionInformation = taskExecutionInfoService
342-
.findTaskExecutionInformation(taskName, taskDeploymentProperties, addDatabaseCredentials(platform));
343+
.findTaskExecutionInformation(taskName, taskDeploymentProperties,
344+
TaskServiceUtils.addDatabaseCredentials(this.taskConfigurationProperties.isUseKubernetesSecretsForDbCredentials(), platform));
343345
}
344346
else {
345347
throw e;
@@ -348,14 +350,6 @@ private TaskExecutionInformation findOrCreateTaskExecutionInformation(String tas
348350
return taskExecutionInformation;
349351
}
350352

351-
private boolean addDatabaseCredentials(String platform) {
352-
boolean addDatabaseCredentials = false;
353-
if(!this.taskConfigurationProperties.isUseKubernetesSecretsForDbCredentials() ||
354-
!StringUtils.hasText(platform) || !platform.equals(TaskPlatformFactory.KUBERNETES_PLATFORM_TYPE)) {
355-
addDatabaseCredentials = true;
356-
}
357-
return addDatabaseCredentials;
358-
}
359353
/**
360354
* Determines if an OAuth token is available and if so, sets it as a deployment property.
361355
*

spring-cloud-dataflow-server-core/src/main/java/org/springframework/cloud/dataflow/server/service/impl/TaskServiceUtils.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
2626
import org.springframework.cloud.dataflow.core.TaskDefinition;
27+
import org.springframework.cloud.dataflow.core.TaskPlatformFactory;
2728
import org.springframework.cloud.dataflow.core.dsl.TaskApp;
2829
import org.springframework.cloud.dataflow.core.dsl.TaskNode;
2930
import org.springframework.cloud.dataflow.core.dsl.TaskParser;
@@ -98,16 +99,6 @@ public static Map<String, String> establishComposedTaskProperties(
9899
return taskDeploymentProperties;
99100
}
100101

101-
/**
102-
* Updates the task definition with the datasource properties.
103-
* @param taskDefinition the {@link TaskDefinition} to be updated.
104-
* @param dataSourceProperties the dataSource properties used by SCDF.
105-
* @return the updated {@link TaskDefinition}
106-
*/
107-
public static TaskDefinition updateTaskProperties(TaskDefinition taskDefinition,
108-
DataSourceProperties dataSourceProperties) {
109-
return updateTaskProperties(taskDefinition, dataSourceProperties, true);
110-
}
111102
/**
112103
* Updates the task definition with the datasource properties.
113104
* @param taskDefinition the {@link TaskDefinition} to be updated.
@@ -245,4 +236,19 @@ private static boolean isPropertyPresent(String property, TaskDefinition taskDef
245236
}
246237
return result;
247238
}
239+
240+
/**
241+
* Determines if a database credentials should be added to task properties.
242+
* @param platformType The type of platform.
243+
* @param useKubernetesSecrets User wants to use kubernetes secrets for user name and password.
244+
* @return true if database credentials should be added to task properties.
245+
*/
246+
public static boolean addDatabaseCredentials(boolean useKubernetesSecrets, String platformType) {
247+
boolean addDatabaseCredentials = false;
248+
if(!useKubernetesSecrets ||
249+
!StringUtils.hasText(platformType) || !platformType.equals(TaskPlatformFactory.KUBERNETES_PLATFORM_TYPE)) {
250+
addDatabaseCredentials = true;
251+
}
252+
return addDatabaseCredentials;
253+
}
248254
}

spring-cloud-dataflow-server-core/src/test/java/org/springframework/cloud/dataflow/server/service/impl/TaskServiceUtilsTests.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,19 @@ public void testDatabasePropUpdate() {
9595
DataSourceProperties dataSourceProperties = getDataSourceProperties();
9696
TaskDefinition definition = TaskServiceUtils.updateTaskProperties(
9797
taskDefinition,
98-
dataSourceProperties);
99-
98+
dataSourceProperties, true);
99+
assertThat(definition.getProperties().size()).isEqualTo(5);
100100
assertThat(definition.getProperties().get("spring.datasource.url")).isEqualTo("myUrl");
101101
assertThat(definition.getProperties().get("spring.datasource.driverClassName")).isEqualTo("myDriver");
102102
assertThat(definition.getProperties().get("spring.datasource.username")).isEqualTo("myUser");
103103
assertThat(definition.getProperties().get("spring.datasource.password")).isEqualTo("myPassword");
104+
105+
definition = TaskServiceUtils.updateTaskProperties(
106+
taskDefinition,
107+
dataSourceProperties, false);
108+
assertThat(definition.getProperties().size()).isEqualTo(3);
109+
assertThat(definition.getProperties().get("spring.datasource.url")).isEqualTo("myUrl");
110+
assertThat(definition.getProperties().get("spring.datasource.driverClassName")).isEqualTo("myDriver");
104111
}
105112

106113
@Test
@@ -235,7 +242,6 @@ public void testDataFlowUriProperty() throws Exception {
235242
assertTrue(!appDeploymentProperties.containsKey("DATAFLOW-SERVER-URI"));
236243
}
237244

238-
239245
private TaskNode parse(String dsltext) {
240246
TaskNode ctn = new TaskParser("test", dsltext, true, true).parse();
241247
return ctn;

0 commit comments

Comments
 (0)