@Override public ModuleDeploymentId deploy(ModuleDeploymentRequest request) { int count = request.getCount(); ModuleCoordinates coordinates = request.getCoordinates(); ModuleDefinition definition = request.getDefinition(); ModuleDeploymentId id = ModuleDeploymentId.fromModuleDefinition(definition); String clusterId = moduleDeploymentIdToClusterId(id); String module = coordinates.toString(); Map<String, String> definitionParameters = definition.getParameters(); Map<String, String> deploymentProperties = request.getDeploymentProperties(); logger.info("deploying request for definition: " + definition); logger.info("deploying module: " + module); logger.info("definitionParameters: " + definitionParameters); logger.info("deploymentProperties: " + deploymentProperties); // TODO: using default app name "app" until we start to customise // via deploymentProperties Message<Events> message = MessageBuilder.withPayload(Events.DEPLOY) .setHeader(YarnCloudAppStateMachine.HEADER_APP_VERSION, "app") .setHeader(YarnCloudAppStateMachine.HEADER_CLUSTER_ID, clusterId) .setHeader(YarnCloudAppStateMachine.HEADER_COUNT, count) .setHeader(YarnCloudAppStateMachine.HEADER_MODULE, module) .setHeader(YarnCloudAppStateMachine.HEADER_DEFINITION_PARAMETERS, definitionParameters) .build(); stateMachine.sendEvent(message); return id; }
@Override public ModuleDeploymentId deploy(ModuleDeploymentRequest request) { ModuleDefinition definition = request.getDefinition(); ModuleDeploymentId moduleDeploymentId = new ModuleDeploymentId(definition.getGroup(), definition.getLabel()); String applicationName = this.cloudFoundryModuleDeploymentConverter.toApplicationName(moduleDeploymentId); PushBindAndStartApplicationResults response = this.resourceClient.pushBindAndStartApplication(new PushBindAndStartApplicationParameters() .withEnvironment(this.cloudFoundryModuleDeploymentConverter.toModuleLauncherEnvironment(request)) .withInstances(request.getCount()) .withName(applicationName) .withResource(properties.getModuleLauncherLocation()) .withServiceInstanceNames(this.properties.getServices()) ); if (!response.isCreateSucceeded()) { throw new IllegalStateException("Module " + moduleDeploymentId + " could not be deployed"); } return moduleDeploymentId; }