summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorfreva <valerijf@yahoo-inc.com>2016-12-07 12:41:47 +0100
committerfreva <valerijf@yahoo-inc.com>2016-12-07 12:41:47 +0100
commit7c9074b4b608da4da307ab589fe69db27dd02058 (patch)
treee539188710c52fdb147ac91f514ef02c82cbf4bc /node-admin
parent254e0df3e1594f5b942a0c35366342dd4094553b (diff)
Update node repo with current attributes for all node states
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java18
1 files changed, 8 insertions, 10 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
index 1394adeb396..18307c6d8ff 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
@@ -208,12 +208,12 @@ public class NodeAgentImpl implements NodeAgent {
private void updateNodeRepoWithCurrentAttributes(final ContainerNodeSpec nodeSpec) throws IOException {
final Optional<String> containerVespaVersion = dockerOperations.getVespaVersion(nodeSpec.containerName);
final NodeAttributes nodeAttributes = new NodeAttributes()
- .withRestartGeneration(nodeSpec.wantedRestartGeneration.get())
+ .withRestartGeneration(nodeSpec.wantedRestartGeneration.orElse(0L))
// update reboot gen with wanted gen if set, we ignore reboot for Docker nodes but
// want the two to be equal in node repo
- .withRebootGeneration(nodeSpec.wantedRebootGeneration.orElse(null))
- .withDockerImage(nodeSpec.wantedDockerImage.get())
- .withVespaVersion(containerVespaVersion.orElse(null));
+ .withRebootGeneration(nodeSpec.wantedRebootGeneration.orElse(0L))
+ .withDockerImage(nodeSpec.wantedDockerImage.orElse(new DockerImage("")))
+ .withVespaVersion(containerVespaVersion.orElse(""));
publishStateToNodeRepoIfChanged(nodeSpec.hostname, nodeAttributes);
}
@@ -412,10 +412,11 @@ public class NodeAgentImpl implements NodeAgent {
switch (nodeSpec.nodeState) {
case ready:
- removeContainerIfNeededUpdateContainerState(nodeSpec);
- break;
case reserved:
+ case parked:
+ case failed:
removeContainerIfNeededUpdateContainerState(nodeSpec);
+ updateNodeRepoWithCurrentAttributes(nodeSpec);
break;
case active:
storageMaintainer.removeOldFilesFromNode(nodeSpec.containerName);
@@ -445,6 +446,7 @@ public class NodeAgentImpl implements NodeAgent {
case inactive:
storageMaintainer.removeOldFilesFromNode(nodeSpec.containerName);
removeContainerIfNeededUpdateContainerState(nodeSpec);
+ updateNodeRepoWithCurrentAttributes(nodeSpec);
break;
case provisioned:
case dirty:
@@ -454,10 +456,6 @@ public class NodeAgentImpl implements NodeAgent {
storageMaintainer.archiveNodeData(nodeSpec.containerName);
updateNodeRepoAndMarkNodeAsReady(nodeSpec);
break;
- case parked:
- case failed:
- removeContainerIfNeededUpdateContainerState(nodeSpec);
- break;
default:
throw new RuntimeException("UNKNOWN STATE " + nodeSpec.nodeState.name());
}