summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorValerij Fredriksen <valerij92@gmail.com>2019-06-14 21:19:27 +0200
committerValerij Fredriksen <valerij92@gmail.com>2019-06-14 21:22:00 +0200
commit42cc8bd0b0df30995102e4838a3212e6c840b42e (patch)
treed024de809889e4ec4805ca632abafdf14ea17452 /node-admin
parent9d9f823be15f50a1881ded2b2a70826ea42a386f (diff)
Move more validation to NodeSpec
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java7
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java30
2 files changed, 13 insertions, 24 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java
index d402e75ff7b..52d6f16dd78 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java
@@ -91,6 +91,13 @@ public class NodeSpec {
Set<String> additionalIpAddresses,
NodeReports reports,
Optional<String> parentHostname) {
+ if (state == NodeState.active) {
+ Objects.requireNonNull(wantedVespaVersion, "Unknown vespa version for active node");
+ Objects.requireNonNull(wantedDockerImage, "Unknown docker image for active node");
+ Objects.requireNonNull(wantedRestartGeneration, "Unknown restartGeneration for active node");
+ Objects.requireNonNull(currentRestartGeneration, "Unknown currentRestartGeneration for active node");
+ }
+
this.hostname = Objects.requireNonNull(hostname);
this.wantedDockerImage = Objects.requireNonNull(wantedDockerImage);
this.currentDockerImage = Objects.requireNonNull(currentDockerImage);
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java
index d7ddc7656f5..3fa052a3a8a 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java
@@ -15,7 +15,6 @@ import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.bindings.No
import com.yahoo.vespa.hosted.node.admin.util.PrefixLogger;
import java.time.Instant;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -143,30 +142,13 @@ public class RealNodeRepository implements NodeRepository {
Objects.requireNonNull(node.state, "Unknown node state");
NodeState nodeState = NodeState.valueOf(node.state);
- if (nodeState == NodeState.active) {
- Objects.requireNonNull(node.wantedVespaVersion, "Unknown vespa version for active node");
- Objects.requireNonNull(node.wantedDockerImage, "Unknown docker image for active node");
- Objects.requireNonNull(node.restartGeneration, "Unknown restartGeneration for active node");
- Objects.requireNonNull(node.currentRestartGeneration, "Unknown currentRestartGeneration for active node");
- }
-
- String hostName = Objects.requireNonNull(node.hostname, "hostname is null");
-
- NodeOwner owner = null;
- if (node.owner != null) {
- owner = new NodeOwner(node.owner.tenant, node.owner.application, node.owner.instance);
- }
-
- NodeMembership membership = null;
- if (node.membership != null) {
- membership = new NodeMembership(node.membership.clusterType, node.membership.clusterId,
- node.membership.group, node.membership.index, node.membership.retired);
- }
- NodeReports reports = NodeReports.fromMap(node.reports == null ? Collections.emptyMap() : node.reports);
+ Optional<NodeMembership> membership = Optional.ofNullable(node.membership)
+ .map(m -> new NodeMembership(m.clusterType, m.clusterId, m.group, m.index, m.retired));
+ NodeReports reports = NodeReports.fromMap(Optional.ofNullable(node.reports).orElseGet(Map::of));
return new NodeSpec(
- hostName,
+ node.hostname,
Optional.ofNullable(node.wantedDockerImage).map(DockerImage::fromString),
Optional.ofNullable(node.currentDockerImage).map(DockerImage::fromString),
nodeState,
@@ -179,8 +161,8 @@ public class RealNodeRepository implements NodeRepository {
Optional.ofNullable(node.currentOsVersion).map(Version::fromString),
Optional.ofNullable(node.allowedToBeDown),
Optional.ofNullable(node.wantToDeprovision),
- Optional.ofNullable(owner),
- Optional.ofNullable(membership),
+ Optional.ofNullable(node.owner).map(o -> new NodeOwner(o.tenant, o.application, o.instance)),
+ membership,
Optional.ofNullable(node.restartGeneration),
Optional.ofNullable(node.currentRestartGeneration),
node.rebootGeneration,