aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-05-09 10:42:02 +0200
committerJon Bratseth <bratseth@verizonmedia.com>2019-05-09 10:42:02 +0200
commit034fbc59208294df7e2e044a998a627db3cfe036 (patch)
tree357c952d5f3cb0d3fdf4700829ad89d7b47f2c40 /node-repository
parenteae7dde35aa7fe09f8be516035f6ac61c3f0374a (diff)
Add a comment and rename some variables
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java7
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java22
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java2
4 files changed, 20 insertions, 13 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java
index bd2ce3a5f5e..c6e72fc591e 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java
@@ -44,6 +44,13 @@ import java.util.function.UnaryOperator;
*/
public class NodeSerializer {
+ // WARNING: Since there are multiple config servers in a cluster and they upgrade one by one
+ // (and rewrite all nodes on startup),
+ // changes to the serialized format must be made such that what is serialized on version N+1
+ // can be read by version N:
+ // - ADDING FIELDS: Always ok
+ // - REMOVING FIELDS: Stop reading the field first. Stop writing it on a later version.
+
/** The configured node flavors */
private final NodeFlavors flavors;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
index dbeed0c3e76..c58943b00d2 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
@@ -41,28 +41,28 @@ public class CapacityPolicies {
}
}
- public NodeResources decideFlavor(Capacity requestedCapacity, ClusterSpec cluster) {
- Optional<NodeResources> requestedFlavor = requestedCapacity.nodeResources();
- if (requestedFlavor.isPresent() && ! requestedFlavor.get().allocateByLegacyName())
- return requestedFlavor.get();
+ public NodeResources decideNodeResources(Capacity requestedCapacity, ClusterSpec cluster) {
+ Optional<NodeResources> requestedResources = requestedCapacity.nodeResources();
+ if (requestedResources.isPresent() && ! requestedResources.get().allocateByLegacyName())
+ return requestedResources.get();
- NodeResources defaultFlavor = NodeResources.fromLegacyName(zone.defaultFlavor(cluster.type()));
- if (requestedFlavor.isEmpty())
- return defaultFlavor;
+ NodeResources defaultResources = NodeResources.fromLegacyName(zone.defaultFlavor(cluster.type()));
+ if (requestedResources.isEmpty())
+ return defaultResources;
// Flavor is specified and is allocateByLegacyName: Handle legacy flavor specs
if (zone.system() == SystemName.cd)
- return flavors.exists(requestedFlavor.get().legacyName().get()) ? requestedFlavor.get() : defaultFlavor;
+ return flavors.exists(requestedResources.get().legacyName().get()) ? requestedResources.get() : defaultResources;
else {
switch (zone.environment()) {
- case dev: case test: case staging: return defaultFlavor;
+ case dev: case test: case staging: return defaultResources;
default:
// Check existence of the legacy specified flavor
- flavors.getFlavorOrThrow(requestedFlavor.get().legacyName().get());
+ flavors.getFlavorOrThrow(requestedResources.get().legacyName().get());
// Return this spec containing the legacy flavor name, not the flavor's capacity object
// which describes the flavors capacity, as the point of legacy allocation is to match
// by name, not by resources
- return requestedFlavor.get();
+ return requestedResources.get();
}
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
index f9d712e767e..5a06eb32505 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
@@ -96,7 +96,7 @@ public class NodeRepositoryProvisioner implements Provisioner {
if (zone.environment().isManuallyDeployed() && nodeCount < requestedCapacity.nodeCount())
logger.log(Level.INFO, "Requested " + requestedCapacity.nodeCount() + " nodes for " + cluster +
", downscaling to " + nodeCount + " nodes in " + zone.environment());
- NodeResources flavor = capacityPolicies.decideFlavor(requestedCapacity, cluster);
+ NodeResources flavor = capacityPolicies.decideNodeResources(requestedCapacity, cluster);
log.log(LogLevel.DEBUG, () -> "Decided flavor for requested tenant nodes: " + flavor);
boolean exclusive = capacityPolicies.decideExclusivity(cluster.isExclusive());
effectiveGroups = wantedGroups > nodeCount ? nodeCount : wantedGroups; // cannot have more groups than nodes
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java
index 9d61f5414d6..cb2f5286b97 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java
@@ -133,7 +133,7 @@ public class AclProvisioningTest {
List<Node> dockerHostNodes = tester.makeReadyNodes(2, "default", NodeType.host);
Node dockerHostNodeUnderTest = dockerHostNodes.get(0);
List<Node> dockerNodes = tester.makeReadyVirtualDockerNodes(5, new NodeResources(1, 1, 1),
- dockerHostNodeUnderTest.hostname());
+ dockerHostNodeUnderTest.hostname());
List<NodeAcl> acls = tester.nodeRepository().getNodeAcls(dockerHostNodeUnderTest, true);