diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2019-05-09 10:42:02 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2019-05-09 10:42:02 +0200 |
commit | 034fbc59208294df7e2e044a998a627db3cfe036 (patch) | |
tree | 357c952d5f3cb0d3fdf4700829ad89d7b47f2c40 /node-repository | |
parent | eae7dde35aa7fe09f8be516035f6ac61c3f0374a (diff) |
Add a comment and rename some variables
Diffstat (limited to 'node-repository')
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); |