summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-10-15 15:54:38 +0200
committerJon Bratseth <bratseth@verizonmedia.com>2019-10-15 15:54:38 +0200
commitcbefb58c71bc888061d1586e70bf01f1a432a756 (patch)
tree8e5f0d5d55400161a73f8f546a0c83fa204bc98e /config-model/src/main/java/com
parentc51b015a8dd8f9fc8f6c6f65c4ceab4090831df3 (diff)
Allow deploying self-hosted applications to dev
Diffstat (limited to 'config-model/src/main/java/com')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java6
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java17
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java4
4 files changed, 19 insertions, 12 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java b/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java
index dea2095d8e4..ec1038c67db 100644
--- a/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java
+++ b/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java
@@ -77,6 +77,10 @@ public class AdminModel extends ConfigModel {
@Override
public void doBuild(AdminModel model, Element adminElement, ConfigModelContext modelContext) {
+ if (modelContext.getDeployState().isHosted()) { // admin v2 is used on hosted: Build a default V4 instead
+ new BuilderV4().doBuild(model, adminElement, modelContext);
+ return;
+ }
AbstractConfigProducer parent = modelContext.getParentProducer();
ModelContext.Properties properties = modelContext.getDeployState().getProperties();
DomAdminV2Builder domBuilder = new DomAdminV2Builder(modelContext.getApplicationType(),
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java
index b0a74c08b4e..86c72221cab 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java
@@ -63,13 +63,13 @@ public class NodesSpecification {
private NodesSpecification(boolean dedicated, boolean canFail, Version version, ModelElement nodesElement) {
this(dedicated,
- nodesElement.requiredIntegerAttribute("count"),
+ nodesElement.integerAttribute("count", 1),
nodesElement.integerAttribute("groups", 1),
version,
nodesElement.booleanAttribute("required", false),
canFail,
nodesElement.booleanAttribute("exclusive", false),
- getFlavor(nodesElement),
+ getResources(nodesElement),
Optional.ofNullable(nodesElement.stringAttribute("docker-image")));
}
@@ -162,7 +162,7 @@ public class NodesSpecification {
return hostSystem.allocateHosts(cluster, Capacity.fromCount(count, resources, required, canFail), groups, logger);
}
- private static Optional<NodeResources> getFlavor(ModelElement nodesElement) {
+ private static Optional<NodeResources> getResources(ModelElement nodesElement) {
ModelElement resources = nodesElement.child("resources");
if (resources != null) {
return Optional.of(new NodeResources(resources.requiredDoubleAttribute("vcpu"),
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 efc566f2dec..cc78b92c260 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
@@ -499,8 +499,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
}
void extractJvmFromLegacyNodesTag(List<ApplicationContainer> nodes, ApplicationContainerCluster cluster,
- Element nodesElement, ConfigModelContext context)
- {
+ Element nodesElement, ConfigModelContext context) {
applyNodesTagJvmArgs(nodes, getJvmOptions(cluster, nodesElement, context.getDeployLogger()));
if (!cluster.getJvmGCOptions().isPresent()) {
@@ -512,9 +511,9 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
applyMemoryPercentage(cluster, nodesElement.getAttribute(VespaDomBuilder.Allocated_MEMORY_ATTRIB_NAME));
}
+
void extractJvmTag(List<ApplicationContainer> nodes, ApplicationContainerCluster cluster,
- Element jvmElement, ConfigModelContext context)
- {
+ Element jvmElement, ConfigModelContext context) {
applyNodesTagJvmArgs(nodes, jvmElement.getAttribute(VespaDomBuilder.OPTIONS));
applyMemoryPercentage(cluster, jvmElement.getAttribute(VespaDomBuilder.Allocated_MEMORY_ATTRIB_NAME));
String jvmGCOptions = jvmElement.hasAttribute(VespaDomBuilder.GC_OPTIONS)
@@ -522,9 +521,9 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
: null;
cluster.setJvmGCOptions(buildJvmGCOptions(context.getDeployState().zone(), jvmGCOptions, context.getDeployState().isHosted()));
}
+
private void addNodesFromXml(ApplicationContainerCluster cluster, Element containerElement, ConfigModelContext context) {
Element nodesElement = XML.getChild(containerElement, "nodes");
- Element rotationsElement = XML.getChild(containerElement, "rotations");
if (nodesElement == null) { // default single node on localhost
ApplicationContainer node = new ApplicationContainer(cluster, "container.0", 0, cluster.isHostedVespa());
HostResource host = allocateSingleNodeHost(cluster, log, containerElement, context);
@@ -564,12 +563,14 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
}
private List<ApplicationContainer> createNodes(ApplicationContainerCluster cluster, Element nodesElement, ConfigModelContext context) {
- if (nodesElement.hasAttribute("count")) // regular, hosted node spec
- return createNodesFromNodeCount(cluster, nodesElement, context);
- else if (nodesElement.hasAttribute("type")) // internal use for hosted system infrastructure nodes
+ if (nodesElement.hasAttribute("type")) // internal use for hosted system infrastructure nodes
return createNodesFromNodeType(cluster, nodesElement, context);
else if (nodesElement.hasAttribute("of")) // hosted node spec referencing a content cluster
return createNodesFromContentServiceReference(cluster, nodesElement, context);
+ else if (nodesElement.hasAttribute("count")) // regular, hosted node spec
+ return createNodesFromNodeCount(cluster, nodesElement, context);
+ else if (cluster.isHostedVespa() && cluster.getZone().environment().isManuallyDeployed()) // default to 1 in manual zones
+ return createNodesFromNodeCount(cluster, nodesElement, context);
else // the non-hosted option
return createNodesFromNodeList(context.getDeployState(), cluster, nodesElement);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java
index 4d1252a2618..228d972b839 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java
@@ -401,9 +401,11 @@ public class StorageGroup {
Optional<NodesSpecification> nodeRequirement;
if (nodesElement.isPresent() && nodesElement.get().stringAttribute("count") != null ) // request these nodes
nodeRequirement = Optional.of(NodesSpecification.from(nodesElement.get(), context));
+ else if (nodesElement.isPresent() && context.getDeployState().isHosted() && context.getDeployState().zone().environment().isManuallyDeployed() ) // default to 1 node
+ nodeRequirement = Optional.of(NodesSpecification.from(nodesElement.get(), context));
else if (! nodesElement.isPresent() && subGroups.isEmpty() && context.getDeployState().isHosted()) // request one node
nodeRequirement = Optional.of(NodesSpecification.nonDedicated(1, context));
- else // Nodes or groups explicitly listed, and/opr not hosted - resolve in GroupBuilder
+ else // Nodes or groups explicitly listed - resolve in GroupBuilder
nodeRequirement = Optional.empty();
return new GroupBuilder(group, subGroups, explicitNodes, nodeRequirement, context.getDeployLogger());