summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@verizonmedia.com>2019-02-21 14:19:42 +0100
committerValerij Fredriksen <valerijf@verizonmedia.com>2019-02-22 12:29:21 +0100
commite6c2211d07919c7cfde353feda4d9688533f3517 (patch)
tree210ea5c54777f08fbb4164a99c0bd3d47f954641 /node-admin
parent8bd7b6534fab28d507629fca1c109fff65585c40 (diff)
Move Owner and Membership to upper level
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java77
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeOwner.java64
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java154
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java8
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java13
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java6
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java14
7 files changed, 176 insertions, 160 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java
new file mode 100644
index 00000000000..bb16e2bae63
--- /dev/null
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java
@@ -0,0 +1,77 @@
+// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
+
+/**
+ * @author freva
+ */
+public class NodeMembership {
+ private final String clusterType;
+ private final String clusterId;
+ private final String group;
+ private final int index;
+ private final boolean retired;
+
+ public NodeMembership(String clusterType, String clusterId, String group, int index, boolean retired) {
+ this.clusterType = clusterType;
+ this.clusterId = clusterId;
+ this.group = group;
+ this.index = index;
+ this.retired = retired;
+ }
+
+ public String getClusterType() {
+ return clusterType;
+ }
+
+ public String getClusterId() {
+ return clusterId;
+ }
+
+ public String getGroup() {
+ return group;
+ }
+
+ public int getIndex() {
+ return index;
+ }
+
+ public boolean isRetired() {
+ return retired;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ NodeMembership that = (NodeMembership) o;
+
+ if (index != that.index) return false;
+ if (retired != that.retired) return false;
+ if (!clusterType.equals(that.clusterType)) return false;
+ if (!clusterId.equals(that.clusterId)) return false;
+ return group.equals(that.group);
+
+ }
+
+ @Override
+ public int hashCode() {
+ int result = clusterType.hashCode();
+ result = 31 * result + clusterId.hashCode();
+ result = 31 * result + group.hashCode();
+ result = 31 * result + index;
+ result = 31 * result + (retired ? 1 : 0);
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "Membership {" +
+ " clusterType = " + clusterType +
+ " clusterId = " + clusterId +
+ " group = " + group +
+ " index = " + index +
+ " retired = " + retired +
+ " }";
+ }
+}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeOwner.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeOwner.java
new file mode 100644
index 00000000000..c1900316bb9
--- /dev/null
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeOwner.java
@@ -0,0 +1,64 @@
+// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
+
+import com.yahoo.config.provision.ApplicationId;
+
+/**
+ * @author freva
+ */
+public class NodeOwner {
+ private final String tenant;
+ private final String application;
+ private final String instance;
+
+ public NodeOwner(String tenant, String application, String instance) {
+ this.tenant = tenant;
+ this.application = application;
+ this.instance = instance;
+ }
+
+ public String getTenant() {
+ return tenant;
+ }
+
+ public String getApplication() {
+ return application;
+ }
+
+ public String getInstance() {
+ return instance;
+ }
+
+ public ApplicationId asApplicationId() {
+ return ApplicationId.from(tenant, application, instance);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ NodeOwner owner = (NodeOwner) o;
+
+ if (!tenant.equals(owner.tenant)) return false;
+ if (!application.equals(owner.application)) return false;
+ return instance.equals(owner.instance);
+
+ }
+
+ @Override
+ public int hashCode() {
+ int result = tenant.hashCode();
+ result = 31 * result + application.hashCode();
+ result = 31 * result + instance.hashCode();
+ return result;
+ }
+
+ public String toString() {
+ return "Owner {" +
+ " tenant = " + tenant +
+ " application = " + application +
+ " instance = " + instance +
+ " }";
+ }
+}
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 ac65ac8af35..1127df2e413 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
@@ -2,7 +2,6 @@
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
import com.fasterxml.jackson.databind.JsonNode;
-import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.dockerapi.DockerImage;
import com.yahoo.vespa.hosted.provision.Node;
@@ -45,8 +44,8 @@ public class NodeSpec {
private final Optional<Boolean> allowedToBeDown;
private final Optional<Boolean> wantToDeprovision;
- private final Optional<Owner> owner;
- private final Optional<Membership> membership;
+ private final Optional<NodeOwner> owner;
+ private final Optional<NodeMembership> membership;
private final double minCpuCores;
private final double minMainMemoryAvailableGb;
@@ -75,8 +74,8 @@ public class NodeSpec {
Optional<String> currentOsVersion,
Optional<Boolean> allowedToBeDown,
Optional<Boolean> wantToDeprovision,
- Optional<Owner> owner,
- Optional<Membership> membership,
+ Optional<NodeOwner> owner,
+ Optional<NodeMembership> membership,
Optional<Long> wantedRestartGeneration,
Optional<Long> currentRestartGeneration,
long wantedRebootGeneration,
@@ -206,11 +205,11 @@ public class NodeSpec {
return wantToDeprovision;
}
- public Optional<Owner> getOwner() {
+ public Optional<NodeOwner> getOwner() {
return owner;
}
- public Optional<Membership> getMembership() {
+ public Optional<NodeMembership> getMembership() {
return membership;
}
@@ -358,135 +357,6 @@ public class NodeSpec {
+ " }";
}
- public static class Owner {
- private final String tenant;
- private final String application;
- private final String instance;
-
- public Owner(String tenant, String application, String instance) {
- this.tenant = tenant;
- this.application = application;
- this.instance = instance;
- }
-
- public String getTenant() {
- return tenant;
- }
-
- public String getApplication() {
- return application;
- }
-
- public String getInstance() {
- return instance;
- }
-
- public ApplicationId asApplicationId() {
- return ApplicationId.from(tenant, application, instance);
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- Owner owner = (Owner) o;
-
- if (!tenant.equals(owner.tenant)) return false;
- if (!application.equals(owner.application)) return false;
- return instance.equals(owner.instance);
-
- }
-
- @Override
- public int hashCode() {
- int result = tenant.hashCode();
- result = 31 * result + application.hashCode();
- result = 31 * result + instance.hashCode();
- return result;
- }
-
- public String toString() {
- return "Owner {" +
- " tenant = " + tenant +
- " application = " + application +
- " instance = " + instance +
- " }";
- }
- }
-
- public static class Membership {
- private final String clusterType;
- private final String clusterId;
- private final String group;
- private final int index;
- private final boolean retired;
-
- public Membership(String clusterType, String clusterId, String group, int index, boolean retired) {
- this.clusterType = clusterType;
- this.clusterId = clusterId;
- this.group = group;
- this.index = index;
- this.retired = retired;
- }
-
- public String getClusterType() {
- return clusterType;
- }
-
- public String getClusterId() {
- return clusterId;
- }
-
- public String getGroup() {
- return group;
- }
-
- public int getIndex() {
- return index;
- }
-
- public boolean isRetired() {
- return retired;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- Membership that = (Membership) o;
-
- if (index != that.index) return false;
- if (retired != that.retired) return false;
- if (!clusterType.equals(that.clusterType)) return false;
- if (!clusterId.equals(that.clusterId)) return false;
- return group.equals(that.group);
-
- }
-
- @Override
- public int hashCode() {
- int result = clusterType.hashCode();
- result = 31 * result + clusterId.hashCode();
- result = 31 * result + group.hashCode();
- result = 31 * result + index;
- result = 31 * result + (retired ? 1 : 0);
- return result;
- }
-
- @Override
- public String toString() {
- return "Membership {" +
- " clusterType = " + clusterType +
- " clusterId = " + clusterId +
- " group = " + group +
- " index = " + index +
- " retired = " + retired +
- " }";
- }
- }
-
public static class Builder {
private String hostname;
private Optional<DockerImage> wantedDockerImage = Optional.empty();
@@ -501,8 +371,8 @@ public class NodeSpec {
private Optional<String> currentOsVersion = Optional.empty();
private Optional<Boolean> allowedToBeDown = Optional.empty();
private Optional<Boolean> wantToDeprovision = Optional.empty();
- private Optional<Owner> owner = Optional.empty();
- private Optional<Membership> membership = Optional.empty();
+ private Optional<NodeOwner> owner = Optional.empty();
+ private Optional<NodeMembership> membership = Optional.empty();
private Optional<Long> wantedRestartGeneration = Optional.empty();
private Optional<Long> currentRestartGeneration = Optional.empty();
private long wantedRebootGeneration;
@@ -622,12 +492,12 @@ public class NodeSpec {
return this;
}
- public Builder owner(Owner owner) {
+ public Builder owner(NodeOwner owner) {
this.owner = Optional.of(owner);
return this;
}
- public Builder membership(Membership membership) {
+ public Builder membership(NodeMembership membership) {
this.membership = Optional.of(membership);
return this;
}
@@ -787,11 +657,11 @@ public class NodeSpec {
return wantToDeprovision;
}
- public Optional<Owner> getOwner() {
+ public Optional<NodeOwner> getOwner() {
return owner;
}
- public Optional<Membership> getMembership() {
+ public Optional<NodeMembership> getMembership() {
return membership;
}
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 8e63024842d..4806aa2790d 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
@@ -172,14 +172,14 @@ public class RealNodeRepository implements NodeRepository {
String hostName = Objects.requireNonNull(node.hostname, "hostname is null");
- NodeSpec.Owner owner = null;
+ NodeOwner owner = null;
if (node.owner != null) {
- owner = new NodeSpec.Owner(node.owner.tenant, node.owner.application, node.owner.instance);
+ owner = new NodeOwner(node.owner.tenant, node.owner.application, node.owner.instance);
}
- NodeSpec.Membership membership = null;
+ NodeMembership membership = null;
if (node.membership != null) {
- membership = new NodeSpec.Membership(node.membership.clusterType, node.membership.clusterId,
+ membership = new NodeMembership(node.membership.clusterType, node.membership.clusterId,
node.membership.group, node.membership.index, node.membership.retired);
}
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 d31a888ea44..4724a98dbb2 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
@@ -11,21 +11,22 @@ import com.yahoo.vespa.flags.Flags;
import com.yahoo.vespa.hosted.dockerapi.Container;
import com.yahoo.vespa.hosted.dockerapi.ContainerResources;
import com.yahoo.vespa.hosted.dockerapi.ContainerStats;
+import com.yahoo.vespa.hosted.dockerapi.DockerImage;
+import com.yahoo.vespa.hosted.dockerapi.ProcessResult;
import com.yahoo.vespa.hosted.dockerapi.exception.ContainerNotFoundException;
import com.yahoo.vespa.hosted.dockerapi.exception.DockerException;
import com.yahoo.vespa.hosted.dockerapi.exception.DockerExecTimeoutException;
-import com.yahoo.vespa.hosted.dockerapi.DockerImage;
-import com.yahoo.vespa.hosted.dockerapi.ProcessResult;
import com.yahoo.vespa.hosted.dockerapi.metrics.DimensionMetrics;
import com.yahoo.vespa.hosted.dockerapi.metrics.Dimensions;
import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper;
-import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeOwner;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
+import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.Orchestrator;
import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.OrchestratorException;
import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations;
import com.yahoo.vespa.hosted.node.admin.maintenance.StorageMaintainer;
-import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository;
-import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.Orchestrator;
import com.yahoo.vespa.hosted.node.admin.maintenance.acl.AclMaintainer;
import com.yahoo.vespa.hosted.node.admin.maintenance.identity.AthenzCredentialsMaintainer;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.ConvergenceException;
@@ -379,7 +380,7 @@ public class NodeAgentImpl implements NodeAgent {
private ContainerResources getContainerResources(NodeSpec node) {
double cpuCap = node.getOwner()
- .map(NodeSpec.Owner::asApplicationId)
+ .map(NodeOwner::asApplicationId)
.map(appId -> containerCpuCap.with(FetchVector.Dimension.APPLICATION_ID, appId.serializedForm()))
.orElse(containerCpuCap)
.value() * node.getMinCpuCores();
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java
index 4c753e5a95d..a5cbeaa0222 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java
@@ -7,6 +7,8 @@ import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.SystemName;
import com.yahoo.vespa.hosted.node.admin.component.ZoneId;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeMembership;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeOwner;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext;
@@ -157,8 +159,8 @@ public class StorageMaintainerTest {
.nodeType(nodeType)
.state(Node.State.active)
.parentHostname("host123.test.domain.tld")
- .owner(new NodeSpec.Owner("tenant", "application", "instance"))
- .membership(new NodeSpec.Membership("clusterType", "clusterId", null, 0, false))
+ .owner(new NodeOwner("tenant", "application", "instance"))
+ .membership(new NodeMembership("clusterType", "clusterId", null, 0, false))
.vespaVersion("6.305.12")
.flavor("d-2-8-50")
.canonicalFlavor("d-2-8-50")
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
index 35494b375f6..227fa8f9199 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
@@ -10,17 +10,19 @@ import com.yahoo.vespa.hosted.dockerapi.Container;
import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.dockerapi.ContainerResources;
import com.yahoo.vespa.hosted.dockerapi.ContainerStats;
-import com.yahoo.vespa.hosted.dockerapi.exception.DockerException;
import com.yahoo.vespa.hosted.dockerapi.DockerImage;
+import com.yahoo.vespa.hosted.dockerapi.exception.DockerException;
import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper;
-import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeMembership;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeOwner;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
+import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.Orchestrator;
import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.OrchestratorException;
import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations;
import com.yahoo.vespa.hosted.node.admin.maintenance.StorageMaintainer;
import com.yahoo.vespa.hosted.node.admin.maintenance.acl.AclMaintainer;
-import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository;
-import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.Orchestrator;
import com.yahoo.vespa.hosted.node.admin.maintenance.identity.AthenzCredentialsMaintainer;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.ConvergenceException;
import com.yahoo.vespa.hosted.provision.Node;
@@ -651,8 +653,8 @@ public class NodeAgentImplTest {
ContainerStats stats1 = new ContainerStats(networks, precpu_stats, memory_stats, blkio_stats);
ContainerStats stats2 = new ContainerStats(networks, cpu_stats, memory_stats, blkio_stats);
- NodeSpec.Owner owner = new NodeSpec.Owner("tester", "testapp", "testinstance");
- NodeSpec.Membership membership = new NodeSpec.Membership("clustType", "clustId", "grp", 3, false);
+ NodeOwner owner = new NodeOwner("tester", "testapp", "testinstance");
+ NodeMembership membership = new NodeMembership("clustType", "clustId", "grp", 3, false);
final NodeSpec node = nodeBuilder
.wantedDockerImage(dockerImage)
.currentDockerImage(dockerImage)