summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-07-15 15:37:36 +0200
committerMartin Polden <mpolden@mpolden.no>2021-07-16 09:02:31 +0200
commite0ac9ca91c7a15bbcdeb639d2953925e7f326e35 (patch)
tree9b9f61a3ad5e7ff924f1388edb5b1f4f2b22fc0d
parent0b0140b6f0667cc09380a0d0e173f7c5ba8812ce (diff)
Remove NodeRepositoryNode from NodeRepository interface
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java10
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java5
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java12
4 files changed, 16 insertions, 13 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java
index 9b63f5630c9..3e380b77a86 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java
@@ -53,7 +53,7 @@ public class Node {
private final long wantedRebootGeneration;
private final int cost;
private final int failCount;
- private final String flavor;
+ private final Optional<String> flavor;
private final String clusterId;
private final ClusterType clusterType;
private final String group;
@@ -77,7 +77,7 @@ public class Node {
Version currentOsVersion, Version wantedOsVersion, Optional<Instant> currentFirmwareCheck,
Optional<Instant> wantedFirmwareCheck, ServiceState serviceState, Optional<Instant> suspendedSince,
long restartGeneration, long wantedRestartGeneration, long rebootGeneration,
- long wantedRebootGeneration, int cost, int failCount, String flavor, String clusterId,
+ long wantedRebootGeneration, int cost, int failCount, Optional<String> flavor, String clusterId,
ClusterType clusterType, String group, boolean retired, boolean wantToRetire, boolean wantToDeprovision,
boolean wantToRebuild, Optional<TenantName> reservedTo, Optional<ApplicationId> exclusiveTo,
DockerImage wantedDockerImage, DockerImage currentDockerImage, Map<String, String> reports,
@@ -241,7 +241,7 @@ public class Node {
}
/** The flavor of this */
- public String flavor() {
+ public Optional<String> flavor() {
return flavor;
}
@@ -458,7 +458,7 @@ public class Node {
private long wantedRebootGeneration = 0;
private int cost = 0;
private int failCount = 0;
- private String flavor = "default";
+ private Optional<String> flavor = Optional.empty();
private String clusterId = "";
private ClusterType clusterType = ClusterType.unknown;
private String group = "";
@@ -647,7 +647,7 @@ public class Node {
}
public Builder flavor(String flavor) {
- this.flavor = flavor;
+ this.flavor = Optional.of(flavor);
return this;
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java
index 69a34ba46ce..53207ec8f99 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java
@@ -7,11 +7,9 @@ import com.yahoo.config.provision.HostName;
import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.zone.ZoneId;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeRepositoryNode;
import java.net.URI;
import java.time.Duration;
-import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -25,7 +23,8 @@ import java.util.stream.Collectors;
*/
public interface NodeRepository {
- void addNodes(ZoneId zone, Collection<NodeRepositoryNode> nodes);
+ /** Add new nodes to the node repository */
+ void addNodes(ZoneId zone, List<Node> nodes);
void deleteNode(ZoneId zone, String hostname);
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
index 1a4fa3fcd79..2b884cc950b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
@@ -876,7 +876,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
node.reservedTo().ifPresent(tenant -> nodeObject.setString("reservedTo", tenant.value()));
nodeObject.setString("orchestration", valueOf(node.serviceState()));
nodeObject.setString("version", node.currentVersion().toString());
- nodeObject.setString("flavor", node.flavor());
+ node.flavor().ifPresent(flavor -> nodeObject.setString("flavor", flavor));
toSlime(node.resources(), nodeObject);
nodeObject.setString("clusterId", node.clusterId());
nodeObject.setString("clusterType", valueOf(node.clusterType()));
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java
index 2b9ba7587da..df9c9742349 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java
@@ -17,11 +17,9 @@ import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeRepoStats;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeRepository;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.TargetVersions;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeRepositoryNode;
import java.net.URI;
import java.time.Duration;
-import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -47,8 +45,14 @@ public class NodeRepositoryMock implements NodeRepository {
private boolean hasSpareCapacity = false;
@Override
- public void addNodes(ZoneId zone, Collection<NodeRepositoryNode> nodes) {
- throw new UnsupportedOperationException();
+ public void addNodes(ZoneId zone, List<Node> nodes) {
+ Map<HostName, Node> existingNodes = nodeRepository.getOrDefault(zone, Map.of());
+ for (var node : nodes) {
+ if (existingNodes.containsKey(node.hostname())) {
+ throw new IllegalArgumentException("Node " + node.hostname() + " already added in zone " + zone);
+ }
+ }
+ putNodes(zone, nodes);
}
@Override