diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-07-15 15:37:36 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-07-16 09:02:31 +0200 |
commit | e0ac9ca91c7a15bbcdeb639d2953925e7f326e35 (patch) | |
tree | 9b9f61a3ad5e7ff924f1388edb5b1f4f2b22fc0d | |
parent | 0b0140b6f0667cc09380a0d0e173f7c5ba8812ce (diff) |
Remove NodeRepositoryNode from NodeRepository interface
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 |