summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-07-19 15:08:25 +0200
committerMartin Polden <mpolden@mpolden.no>2021-07-19 15:22:06 +0200
commitaaa061e6f4038d19e26507c3a051933210dd13dc (patch)
treeeaf9af01abbd7e5f6ae7832fa91fe93e4441b1cd
parentb8a1426317d81829ddb0e97f3b829fc9668a3404 (diff)
Stop using enums in NodeRepositoryNode fields
This class is only used for serialization and should therefore not use explicit types. We can now introduce new values for these fields on the server side without having to update this.
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeEnvironment.java11
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryNode.java46
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/OrchestratorStatus.java15
4 files changed, 26 insertions, 48 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 3dec7772ad0..337b2110063 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
@@ -451,7 +451,7 @@ public class Node {
private DockerImage wantedDockerImage = DockerImage.EMPTY;
private Optional<Instant> currentFirmwareCheck = Optional.empty();
private Optional<Instant> wantedFirmwareCheck = Optional.empty();
- private ServiceState serviceState = ServiceState.unknown;
+ private ServiceState serviceState = ServiceState.expectedUp;
private Optional<Instant> suspendedSince = Optional.empty();
private long restartGeneration = 0;
private long wantedRestartGeneration = 0;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeEnvironment.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeEnvironment.java
deleted file mode 100644
index 8510aacf3a8..00000000000
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeEnvironment.java
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
-
-/**
- * @author bjorncs
- */
-public enum NodeEnvironment {
- BARE_METAL,
- VIRTUAL_MACHINE,
- DOCKER_CONTAINER
-}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryNode.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryNode.java
index 80d710eda2b..a12bc93ebd8 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryNode.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryNode.java
@@ -15,6 +15,8 @@ import java.util.Set;
/**
* The wire format of a node retrieved from the node repository.
*
+ * All fields in this are nullable.
+ *
* @author bjorncs
*/
@JsonIgnoreProperties(ignoreUnknown = true)
@@ -26,7 +28,7 @@ public class NodeRepositoryNode {
@JsonProperty("id")
private String id;
@JsonProperty("state")
- private NodeState state;
+ private String state;
@JsonProperty("hostname")
private String hostname;
@JsonProperty("ipAddresses")
@@ -70,9 +72,9 @@ public class NodeRepositoryNode {
@JsonProperty("failCount")
private Integer failCount;
@JsonProperty("environment")
- private NodeEnvironment environment;
+ private String environment;
@JsonProperty("type")
- private NodeType type;
+ private String type;
@JsonProperty("wantedDockerImage")
private String wantedDockerImage;
@JsonProperty("currentDockerImage")
@@ -120,11 +122,11 @@ public class NodeRepositoryNode {
this.id = id;
}
- public NodeState getState() {
+ public String getState() {
return state;
}
- public void setState(NodeState state) {
+ public void setState(String state) {
this.state = state;
}
@@ -264,19 +266,19 @@ public class NodeRepositoryNode {
this.failCount = failCount;
}
- public NodeEnvironment getEnvironment() {
+ public String getEnvironment() {
return environment;
}
- public void setEnvironment(NodeEnvironment environment) {
+ public void setEnvironment(String environment) {
this.environment = environment;
}
- public NodeType getType() {
+ public String getType() {
return type;
}
- public void setType(NodeType type) {
+ public void setType(String type) {
this.type = type;
}
@@ -342,21 +344,10 @@ public class NodeRepositoryNode {
this.history = history;
}
-
- @JsonGetter("orchestratorStatus")
- public String getOrchestratorStatusOrNull() {
+ public String getOrchestratorStatus() {
return orchestratorStatus;
}
- @JsonIgnore
- public OrchestratorStatus getOrchestratorStatus() {
- if (orchestratorStatus == null) {
- return OrchestratorStatus.NO_REMARKS;
- }
-
- return OrchestratorStatus.fromString(orchestratorStatus);
- }
-
public Long suspendedSinceMillis() {
return suspendedSinceMillis;
}
@@ -433,6 +424,19 @@ public class NodeRepositoryNode {
this.switchHostname = switchHostname;
}
+
+ // --- Helper methods for code that (wrongly) consume this directly
+
+ public boolean hasType(NodeType type) {
+ return type.name().equals(getType());
+ }
+
+ public boolean hasState(NodeState state) {
+ return state.name().equals(getState());
+ }
+
+ // --- end
+
@Override
public String toString() {
return "NodeRepositoryNode{" +
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/OrchestratorStatus.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/OrchestratorStatus.java
deleted file mode 100644
index 74fdc8ebe92..00000000000
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/OrchestratorStatus.java
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
-
-import java.util.stream.Stream;
-
-public enum OrchestratorStatus {
- NO_REMARKS, ALLOWED_TO_BE_DOWN, PERMANENTLY_DOWN;
-
- public static OrchestratorStatus fromString(String statusString) {
- return Stream.of(OrchestratorStatus.values())
- .filter(status -> status.name().equalsIgnoreCase(statusString))
- .findAny()
- .orElseThrow(() -> new IllegalArgumentException("Unknown orchestrator status: " + statusString));
- }
-}