/** * Launches a task upon the receipt of a valid TaskLaunchRequest. * @param taskLaunchRequest is a TaskLaunchRequest containing the information required to launch * a task. * @throws Exception if error occurs during task launch. */ @ServiceActivator(inputChannel = Sink.INPUT) public void taskLauncherSink(TaskLaunchRequest taskLaunchRequest) throws Exception{ launchTask(taskLaunchRequest); }
/** * Constructor for the TaskLaunchRequest. * @param uri the URI to the task artifact to be launched. * @param commandlineArguments list of commandlineArguments to be used by the task * @param environmentProperties are the environment variables for this task. * @param deploymentProperties are the variables used to setup task on the platform. * @param applicationName name to be applied to the launched task. If set * to null then the launched task name will be "Task-`hash code of the * TaskLaunchRequest`. */ public TaskLaunchRequest(String uri, List<String> commandlineArguments, Map<String, String> environmentProperties, Map<String, String> deploymentProperties, String applicationName) { Assert.hasText(uri, "uri must not be empty nor null."); this.uri = uri; this.commandlineArguments = (commandlineArguments == null) ? new ArrayList<String>() : commandlineArguments; this.environmentProperties = environmentProperties == null ? new HashMap<String, String>() : environmentProperties; this.deploymentProperties = deploymentProperties == null ? new HashMap<String, String>() : deploymentProperties; setApplicationName(applicationName); }
private void launchTask(TaskLaunchRequest taskLaunchRequest) { Assert.notNull(this.taskLauncher, "TaskLauncher has not been initialized"); logger.info("Launching Task for the following uri " + taskLaunchRequest.getUri()); Resource resource = this.resourceLoader.getResource(taskLaunchRequest.getUri()); AppDefinition definition = new AppDefinition(taskLaunchRequest.getApplicationName(), taskLaunchRequest.getEnvironmentProperties()); AppDeploymentRequest request = new AppDeploymentRequest(definition, resource, taskLaunchRequest.getDeploymentProperties(), taskLaunchRequest.getCommandlineArguments()); this.taskLauncher.launch(request); }
@Transformer(inputChannel = Processor.INPUT, outputChannel = Processor.OUTPUT) public Object setupRequest(String message) { Map<String, String> properties = new HashMap<String,String>(); if(StringUtils.hasText(processorProperties.getDataSourceUrl())){ properties.put("spring_datasource_url",processorProperties.getDataSourceUrl()); } if(StringUtils.hasText(processorProperties.getDataSourceDriverClassName())){ properties.put("spring_datasource_driverClassName",processorProperties.getDataSourceDriverClassName()); } if(StringUtils.hasText(processorProperties.getDataSourceUserName())){ properties.put("spring_datasource_username",processorProperties.getDataSourceUserName()); } if(StringUtils.hasText(processorProperties.getDataSourcePassword())){ properties.put("spring_datasource_password",processorProperties.getDataSourcePassword()); } properties.put("payload", message); TaskLaunchRequest request = new TaskLaunchRequest( processorProperties.getUri(), null, properties, null, processorProperties.getApplicationName()); return new GenericMessage<TaskLaunchRequest>(request); }
@Bean @ConditionalOnProperty(name = "sftp.task-launcher-output", havingValue = "true") @IdempotentReceiver("idempotentReceiverInterceptor") @ServiceActivator(inputChannel = "sftpFileTaskLaunchChannel", outputChannel = Source.OUTPUT) public MessageProcessor<Message<?>> standaloneTaskLaunchRequestTransformer() { return message -> { TaskLaunchRequest outboundPayload = new TaskLaunchRequest(sftpSourceTaskProperties.getResourceUri(), getCommandLineArgs(message), getEnvironmentProperties(), getDeploymentProperties(), null); MessageBuilder<TaskLaunchRequest> builder = MessageBuilder.withPayload(outboundPayload) .copyHeaders(message.getHeaders()) .setHeader(MessageHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON); if (this.sftpSourceProperties.isMultiSource()) { outboundPayload.getEnvironmentProperties().put(SFTP_HOST_PROPERTY_KEY, (String) message.getHeaders().get(SFTP_HOST_PROPERTY_KEY)); outboundPayload.getEnvironmentProperties().put(SFTP_PORT_PROPERTY_KEY, String.valueOf(message.getHeaders().get(SFTP_PORT_PROPERTY_KEY))); outboundPayload.getEnvironmentProperties().put(SFTP_USERNAME_PROPERTY_KEY, (String) message.getHeaders().get(SFTP_USERNAME_PROPERTY_KEY)); outboundPayload.getEnvironmentProperties().put(SFTP_PASSWORD_PROPERTY_KEY, (String) message.getHeaders().get(SFTP_PASSWORD_PROPERTY_KEY)); outboundPayload.getEnvironmentProperties().put(SFTP_SELECTED_SERVER_PROPERTY_KEY, (String) message.getHeaders().get(SFTP_SELECTED_SERVER_PROPERTY_KEY)); builder.removeHeaders(SFTP_HOST_PROPERTY_KEY, SFTP_PORT_PROPERTY_KEY, SFTP_USERNAME_PROPERTY_KEY, SFTP_PASSWORD_PROPERTY_KEY, SFTP_SELECTED_SERVER_PROPERTY_KEY); } return builder.build(); }; }
@Transformer(inputChannel = Processor.INPUT, outputChannel = Processor.OUTPUT) public Object setupRequest(String message) { Map<String, String> properties = new HashMap<String, String>(); Map<String, String> deploymentProperties = null; List<String> commandLineArgs = null; if (StringUtils.hasText(processorProperties.getDataSourceUrl())) { properties.put("spring_datasource_url", processorProperties.getDataSourceUrl()); } if (StringUtils.hasText(processorProperties.getDataSourceDriverClassName())) { properties.put("spring_datasource_driverClassName", processorProperties.getDataSourceDriverClassName()); } if (StringUtils.hasText(processorProperties.getDataSourceUserName())) { properties.put("spring_datasource_username", processorProperties.getDataSourceUserName()); } if (StringUtils.hasText(processorProperties.getDataSourcePassword())) { properties.put("spring_datasource_password", processorProperties.getDataSourcePassword()); } if (StringUtils.hasLength(processorProperties.getDeploymentProperties())) { deploymentProperties = parse(processorProperties.getDeploymentProperties()); } if (StringUtils.hasLength(processorProperties.getCommandLineArguments())) { commandLineArgs = parseParams(processorProperties.getCommandLineArguments()); } TaskLaunchRequest request = new TaskLaunchRequest( processorProperties.getUri(), commandLineArgs, properties, deploymentProperties); return request; }
@PollableSource public Object triggerTaskSource() { return new TaskLaunchRequest(taskPayloadProperties.getUri(), parseParams( commandLineArgumentTransformer.transform( taskPayloadProperties.getCommandLineArgs())), parseProperties(taskPayloadProperties.getEnvironmentProperties()), parseProperties(taskPayloadProperties.getDeploymentProperties()), taskPayloadProperties.getApplicationName()); }