summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2022-10-26 13:27:35 +0200
committerMartin Polden <mpolden@mpolden.no>2022-10-26 13:56:11 +0200
commitbcb0d097aecfe498061c05bf9137a45922c7da6e (patch)
tree836912c9e3139409fca44e880f92e3f0c58f186d
parent6d5b46dcf5d5dd845c22d3afaf582fd725a3b2a4 (diff)
Fall back to default cloud account in node spec
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java5
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java10
3 files changed, 10 insertions, 7 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
index e1657ec3358..2aa9ec7bd54 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
@@ -4,9 +4,9 @@ package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ClusterSpec;
+import com.yahoo.config.provision.NodeAllocationException;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
-import com.yahoo.config.provision.NodeAllocationException;
import com.yahoo.transaction.Mutex;
import com.yahoo.vespa.hosted.provision.LockedNodeList;
import com.yahoo.vespa.hosted.provision.Node;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
index ce87abd2dde..78da8b4ead8 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
@@ -103,12 +103,13 @@ public class NodeRepositoryProvisioner implements Provisioner {
groups = target.groups();
resources = getNodeResources(cluster, target.nodeResources(), application, exclusive);
- nodeSpec = NodeSpec.from(target.nodes(), resources, exclusive, actual.canFail(), requested.cloudAccount());
+ nodeSpec = NodeSpec.from(target.nodes(), resources, exclusive, actual.canFail(),
+ requested.cloudAccount().or(() -> nodeRepository.zone().getCloud().account()));
}
else {
groups = 1; // type request with multiple groups is not supported
resources = getNodeResources(cluster, requested.minResources().nodeResources(), application, true);
- nodeSpec = NodeSpec.from(requested.type());
+ nodeSpec = NodeSpec.from(requested.type(), nodeRepository.zone().cloud().account());
}
return asSortedHosts(preparer.prepare(application, cluster, nodeSpec, groups), resources);
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java
index 90cd4a440f2..e490080a390 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java
@@ -85,8 +85,8 @@ public interface NodeSpec {
return new CountNodeSpec(nodeCount, resources, exclusive, canFail, cloudAccount);
}
- static NodeSpec from(NodeType type) {
- return new TypeNodeSpec(type);
+ static NodeSpec from(NodeType type, Optional<CloudAccount> cloudAccount) {
+ return new TypeNodeSpec(type, cloudAccount);
}
/** A node spec specifying a node count and a flavor */
@@ -200,9 +200,11 @@ public interface NodeSpec {
NodeType.controller, 3);
private final NodeType type;
+ private final Optional<CloudAccount> cloudAccount;
- public TypeNodeSpec(NodeType type) {
+ public TypeNodeSpec(NodeType type, Optional<CloudAccount> cloudAccount) {
this.type = type;
+ this.cloudAccount = cloudAccount;
}
@Override
@@ -258,7 +260,7 @@ public interface NodeSpec {
@Override
public Optional<CloudAccount> cloudAccount() {
- return Optional.empty(); // Type spec does not support custom cloud accounts
+ return cloudAccount;
}
@Override