diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-01-17 12:43:36 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-01-17 12:43:36 +0100 |
commit | b3caf09ca61e347e166bfddb68ec15c0a4d0038d (patch) | |
tree | e93d010b73ea0dfc0ae5bf21d807a8318705fc92 /config-model | |
parent | 0c55782dcd8acd3116b9f1e5673d4ded132416c4 (diff) |
Add control of extra environment variables.
Diffstat (limited to 'config-model')
5 files changed, 29 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java index 7e98804370f..e03cf4317d4 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java @@ -56,6 +56,7 @@ public class VespaDomBuilder extends VespaModelBuilder { private static final String CPU_SOCKET_ATTRIB_NAME = "cpu-socket"; public static final String CPU_SOCKET_AFFINITY_ATTRIB_NAME = "cpu-socket-affinity"; public static final String Allocated_MEMORY_ATTRIB_NAME = "allocated-memory"; + public static final String ENVIRONMENT_VARS_ATTRIB_NAME = "environment-vars"; public static final Logger log = Logger.getLogger(VespaDomBuilder.class.getPackage().toString()); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java index 8d46eb3718f..2a13822e459 100755 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java @@ -185,6 +185,7 @@ public final class ContainerCluster private String hostClusterId = null; private String jvmGCOptions = null; + private String environmentVars = null; private Integer memoryPercentage = null; private static class AcceptAllVerifier implements ContainerClusterVerifier { @@ -639,6 +640,11 @@ public final class ContainerCluster } else { jvmBuilder.gcopts(G1GC); } + if (environmentVars != null) { + QrStartConfig.Qrs.Builder qrsBuilder = new QrStartConfig.Qrs.Builder(); + qrsBuilder.env(environmentVars); + builder.qrs(qrsBuilder); + } builder.jvm(jvmBuilder); } @@ -797,6 +803,7 @@ public final class ContainerCluster public void setMemoryPercentage(Integer memoryPercentage) { this.memoryPercentage = memoryPercentage; } public void setJvmGCOptions(String opts) { this.jvmGCOptions = opts; } + public void setEnvironmentVars(String environmentVars) { this.environmentVars = environmentVars; } public Optional<String> getJvmGCOptions() { return Optional.ofNullable(jvmGCOptions); } /** diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index b5c1b1e1496..74a878e3102 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -506,6 +506,10 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { applyRoutingAliasProperties(nodes, cluster); applyDefaultPreload(nodes, nodesElement); + String environmentVars = nodesElement.getAttribute(VespaDomBuilder.ENVIRONMENT_VARS_ATTRIB_NAME); + if (environmentVars != null) { + cluster.setEnvironmentVars(environmentVars); + } applyMemoryPercentage(cluster, nodesElement.getAttribute(VespaDomBuilder.Allocated_MEMORY_ATTRIB_NAME)); if (useCpuSocketAffinity(nodesElement)) AbstractService.distributeCpuSocketAffinity(nodes); diff --git a/config-model/src/main/resources/schema/containercluster.rnc b/config-model/src/main/resources/schema/containercluster.rnc index 5dbcffce736..34bfba6faaf 100644 --- a/config-model/src/main/resources/schema/containercluster.rnc +++ b/config-model/src/main/resources/schema/containercluster.rnc @@ -214,6 +214,7 @@ NodesOfContainerCluster = element nodes { attribute jvm-options { text }? & attribute jvm-gc-options { text }? & attribute preload { text }? & + attribute environment-vars { text }? & attribute allocated-memory { text }? & attribute cpu-socket-affinity { xsd:boolean }? & ( diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java index 0030392f318..1598342e67b 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java @@ -717,6 +717,22 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase { assertEquals("env1", secretStore.getGroups().get(0).environment); } + @Test + public void honours_environment_vars() { + Element clusterElem = DomBuilderTest.parse( + "<jdisc version='1.0'>", + " <search/>", + " <nodes environment-vars=\"KMP_SETTING=1 KMP_AFFINITY=granularity=fine,verbose,compact,1,0\">", + " <node hostalias='mockhost'/>", + " </nodes>", + "</jdisc>" ); + createModel(root, clusterElem); + QrStartConfig.Builder qrStartBuilder = new QrStartConfig.Builder(); + root.getConfig(qrStartBuilder, "jdisc/container.0"); + QrStartConfig qrStartConfig = new QrStartConfig(qrStartBuilder); + assertEquals("KMP_SETTING=1 KMP_AFFINITY=granularity=fine,verbose,compact,1,0", qrStartConfig.qrs().env()); + } + private Element generateContainerElementWithRenderer(String rendererId) { return DomBuilderTest.parse( "<jdisc id='default' version='1.0'>", |