From b949e390f2ff886773b3c62f5f1864fa2af214b6 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Thu, 6 Oct 2016 11:34:10 +0200 Subject: [PATCH] Add generic deployment properties to deployer apps Instead of JAVA_OPTS (didn't like the name anyway), user can define generic "properties" in each deployable that will be passed down to the app request. The current 1.0 snapshots of the local deployer look in there for JAVA_OPTS (but that hopefully will change to something more "property like") before 1.0.3 is released. --- .../launcher/deployer/DeployerProperties.java | 30 ++++++++++--------- .../launcher/deployer/DeployerThread.java | 27 ++++++++--------- .../src/test/resources/cloud-test.yml | 2 ++ 3 files changed, 30 insertions(+), 29 deletions(-) diff --git a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerProperties.java b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerProperties.java index 3dfb4ca..8bf5fa2 100644 --- a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerProperties.java +++ b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerProperties.java @@ -138,8 +138,9 @@ public class DeployerProperties { */ private String message; /** - * A map of "negative" properties that apply to all apps when this one is disabled. - * E.g. when eureka is disabled you might want "eureka.client.enabled=false". + * A map of "negative" properties that apply to all apps when this one is + * disabled. E.g. when eureka is disabled you might want + * "eureka.client.enabled=false". */ private Map disabled = new LinkedHashMap<>(); /** @@ -148,10 +149,11 @@ public class DeployerProperties { */ private Map enabled = new LinkedHashMap<>(); /** - * A list of java options to pass to the jvm command (e.g. java). - * E.g. -Dmy.prop=myval + * A map of "deployment" properties passed to the deployer (not the app) when this + * app is launched. You can use JAVA_OPTS here to pass JVM args to a local deployer. */ - private List javaOptions = new ArrayList<>(); + // TODO: update javadocs when JAVA_OPTS are passed as javaOpts or whatever it is) + private Map properties = new LinkedHashMap<>(); public String getCoordinates() { return this.coordinates; @@ -210,14 +212,6 @@ public class DeployerProperties { return disabled; } - public List getJavaOptions() { - return javaOptions; - } - - public void setJavaOptions(List javaOptions) { - this.javaOptions = javaOptions; - } - public Map getEnabled() { return enabled; } @@ -226,6 +220,14 @@ public class DeployerProperties { this.enabled = enabled; } + public Map getProperties() { + return properties; + } + + public void setProperties(Map properties) { + this.properties = properties; + } + @Override public String toString() { final StringBuffer sb = new StringBuffer("Deployable{"); @@ -236,7 +238,7 @@ public class DeployerProperties { sb.append(", order=").append(this.order); sb.append(", disabled=").append(this.disabled); sb.append(", enabled=").append(this.disabled); - sb.append(", javaOptions=").append(this.javaOptions); + sb.append(", properties=").append(this.properties); sb.append(", message=").append(this.message); sb.append('}'); return sb.toString(); diff --git a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerThread.java b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerThread.java index 323c8cc..e1f738a 100644 --- a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerThread.java +++ b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerThread.java @@ -16,17 +16,6 @@ package org.springframework.cloud.launcher.deployer; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.Banner.Mode; @@ -54,6 +43,17 @@ import org.springframework.core.io.ResourceLoader; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import static org.springframework.util.StringUtils.collectionToCommaDelimitedString; /** @@ -318,10 +318,7 @@ public class DeployerThread extends Thread { Map deploymentProperties = new LinkedHashMap<>(); deploymentProperties.put(AppDeployer.GROUP_PROPERTY_KEY, "launcher"); - - if (deployable.getJavaOptions() != null && !deployable.getJavaOptions().isEmpty()) { - deploymentProperties.put("JAVA_OPTS", collectionToCommaDelimitedString(deployable.getJavaOptions())); - } + deploymentProperties.putAll(deployable.getProperties()); AppDeploymentRequest request = new AppDeploymentRequest(definition, resource, deploymentProperties); diff --git a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/test/resources/cloud-test.yml b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/test/resources/cloud-test.yml index 7c68477..b9e8946 100644 --- a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/test/resources/cloud-test.yml +++ b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/test/resources/cloud-test.yml @@ -7,3 +7,5 @@ spring: port: 8000 waitUntilStarted: true order: -200 + properties: + JAVA_OPTS: -Xmx64m