aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository/src/main/java/com/yahoo/vespa/hosted
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@verizonmedia.com>2019-03-04 13:53:42 +0100
committerValerij Fredriksen <valerijf@verizonmedia.com>2019-03-08 09:35:34 +0100
commit030f29a9d6ced07c418bd4948688ca1ddeeec3d0 (patch)
treeb29afe6b7edbe1e4822fa5615c834e8a9031b4ea /node-repository/src/main/java/com/yahoo/vespa/hosted
parentb85e50a93d0af8537898526f93f1278eda3dfcca (diff)
Follow API change
Diffstat (limited to 'node-repository/src/main/java/com/yahoo/vespa/hosted')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java1
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java4
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java10
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java5
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/retire/RetireIPv4OnlyNodes.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeHostFilter.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java5
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java7
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorConfigBuilder.java41
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorSpareCount.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java4
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ResourceCapacity.java8
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java14
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeFlavors.java20
19 files changed, 59 insertions, 76 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java
index 7dc2aff18dc..18ff2700b21 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java
@@ -5,7 +5,6 @@ import com.google.common.collect.ImmutableSet;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.Flavor;
-import com.yahoo.config.provision.NetworkPorts;
import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.node.Allocation;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java
index bfb7bfe9dae..50995887982 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java
@@ -46,12 +46,12 @@ public class NodeList implements Iterable<Node> {
/** Returns the subset of nodes of the given flavor */
public NodeList flavor(String flavor) {
- return filter(node -> node.flavor().name().equals(flavor));
+ return filter(node -> node.flavor().flavorName().equals(flavor));
}
/** Returns the subset of nodes which does not have the given flavor */
public NodeList notFlavor(String flavor) {
- return filter(node -> ! node.flavor().name().equals(flavor));
+ return filter(node -> ! node.flavor().flavorName().equals(flavor));
}
/** Returns the subset of nodes assigned to the given cluster type */
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
index b048dca99a3..08fea05bb7a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
@@ -17,8 +17,8 @@ import com.yahoo.transaction.NestedTransaction;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.hosted.provision.flag.Flags;
import com.yahoo.vespa.hosted.provision.lb.LoadBalancer;
-import com.yahoo.vespa.hosted.provision.lb.LoadBalancerList;
import com.yahoo.vespa.hosted.provision.lb.LoadBalancerInstance;
+import com.yahoo.vespa.hosted.provision.lb.LoadBalancerList;
import com.yahoo.vespa.hosted.provision.maintenance.PeriodicApplicationMaintainer;
import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.node.NodeAcl;
@@ -309,7 +309,7 @@ public class NodeRepository extends AbstractComponent {
// the nodes list was computed
public List<Node> addDockerNodes(List<Node> nodes, Mutex allocationLock) {
for (Node node : nodes) {
- if (!node.flavor().getType().equals(Flavor.Type.DOCKER_CONTAINER)) {
+ if (!node.flavor().environment().equals(Flavor.Environment.DOCKER_CONTAINER)) {
throw new IllegalArgumentException("Cannot add " + node.hostname() + ": This is not a docker node");
}
if (!node.allocation().isPresent()) {
@@ -538,7 +538,7 @@ public class NodeRepository extends AbstractComponent {
*/
public Node markNodeAvailableForNewAllocation(String hostname, Agent agent, String reason) {
Node node = getNode(hostname).orElseThrow(() -> new NotFoundException("No node with hostname '" + hostname + "'"));
- if (node.flavor().getType() == Flavor.Type.DOCKER_CONTAINER && node.type() == NodeType.tenant) {
+ if (node.flavor().environment() == Flavor.Environment.DOCKER_CONTAINER && node.type() == NodeType.tenant) {
if (node.state() != Node.State.dirty) {
throw new IllegalArgumentException(
"Cannot make " + hostname + " available for new allocation, must be in state dirty, but was in " + node.state());
@@ -592,13 +592,13 @@ public class NodeRepository extends AbstractComponent {
throw new IllegalArgumentException("Node is currently allocated and cannot be removed: " +
node.allocation().get());
}
- if (node.flavor().getType() == Flavor.Type.DOCKER_CONTAINER && !deletingAsChild) {
+ if (node.flavor().environment() == Flavor.Environment.DOCKER_CONTAINER && !deletingAsChild) {
if (node.state() != Node.State.ready) {
throw new IllegalArgumentException(
String.format("Docker container %s can only be removed when in ready state", node.hostname()));
}
- } else if (node.flavor().getType() == Flavor.Type.DOCKER_CONTAINER) {
+ } else if (node.flavor().environment() == Flavor.Environment.DOCKER_CONTAINER) {
Set<Node.State> legalStates = EnumSet.of(Node.State.provisioned, Node.State.failed, Node.State.parked,
Node.State.ready);
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java
index 1b18dfc46c1..1b0a0b22a94 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java
@@ -123,7 +123,7 @@ public class FailedExpirer extends Maintainer {
/** Returns whether the current node fail count should be used as an indicator of hardware issue */
private boolean failCountIndicatesHardwareIssue(Node node) {
- if (node.flavor().getType() == Flavor.Type.DOCKER_CONTAINER) return false;
+ if (node.flavor().environment() == Flavor.Environment.DOCKER_CONTAINER) return false;
return (zone.environment() == Environment.prod || zone.environment() == Environment.staging) &&
node.status().failCount() >= maxAllowedFailures;
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java
index 42dbcdf7a86..012f1b881bd 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java
@@ -14,7 +14,6 @@ import com.yahoo.vespa.hosted.provision.NodeRepository;
import com.yahoo.vespa.hosted.provision.node.Allocation;
import com.yahoo.vespa.hosted.provision.node.History;
import com.yahoo.vespa.hosted.provision.provisioning.DockerHostCapacity;
-import com.yahoo.vespa.orchestrator.HostNameNotFoundException;
import com.yahoo.vespa.orchestrator.Orchestrator;
import com.yahoo.vespa.orchestrator.status.HostStatus;
import com.yahoo.vespa.service.monitor.ServiceMonitor;
@@ -226,10 +225,10 @@ public class MetricsReporter extends Maintainer {
metric.set("hostedVespa.docker.freeCapacityDisk", capacity.getFreeCapacityTotal().getDisk(), null);
List<Flavor> dockerFlavors = nodeRepository().getAvailableFlavors().getFlavors().stream()
- .filter(f -> f.getType().equals(Flavor.Type.DOCKER_CONTAINER))
+ .filter(f -> f.environment().equals(Flavor.Environment.DOCKER_CONTAINER))
.collect(Collectors.toList());
for (Flavor flavor : dockerFlavors) {
- Metric.Context context = getContextAt("flavor", flavor.name());
+ Metric.Context context = getContextAt("flavor", flavor.flavorName());
metric.set("hostedVespa.docker.freeCapacityFlavor", capacity.freeCapacityInFlavorEquivalence(flavor), context);
metric.set("hostedVespa.docker.hostsAvailableFlavor", capacity.getNofHostsAvailableFor(flavor), context);
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java
index 8f30394a239..b5bbf045cf0 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java
@@ -40,7 +40,7 @@ public class NodeRebooter extends Maintainer {
EnumSet<Node.State> targetStates = EnumSet.of(Node.State.active, Node.State.ready);
List<Node> nodesToReboot = nodeRepository().getNodes().stream()
.filter(node -> targetStates.contains(node.state()))
- .filter(node -> node.flavor().getType() != Flavor.Type.DOCKER_CONTAINER)
+ .filter(node -> node.flavor().environment() != Flavor.Environment.DOCKER_CONTAINER)
.filter(this::shouldReboot)
.collect(Collectors.toList());
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirer.java
index 3113aaf45cc..56d175126ed 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirer.java
@@ -154,7 +154,7 @@ public class NodeRetirer extends Maintainer {
nodesToRetire.forEach(node ->
retirementPolicy.shouldRetire(node).ifPresent(reason -> {
log.info("Setting wantToRetire and wantToDeprovision for host " + node.hostname() +
- " with flavor " + node.flavor().name() +
+ " with flavor " + node.flavor().flavorName() +
" allocated to " + node.allocation().get().owner() + ". Reason: " + reason);
Node updatedNode = node.with(node.status()
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/retire/RetireIPv4OnlyNodes.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/retire/RetireIPv4OnlyNodes.java
index 6562a89c2d6..d6981cbd7f2 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/retire/RetireIPv4OnlyNodes.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/retire/RetireIPv4OnlyNodes.java
@@ -51,7 +51,7 @@ public class RetireIPv4OnlyNodes implements RetirementPolicy {
@Override
public Optional<String> shouldRetire(Node node) {
- if (node.flavor().getType() == Flavor.Type.VIRTUAL_MACHINE) return Optional.empty();
+ if (node.flavor().environment() == Flavor.Environment.VIRTUAL_MACHINE) return Optional.empty();
boolean shouldRetire = node.ipAddresses().stream()
.map(InetAddresses::forString)
.allMatch(address -> address instanceof Inet4Address);
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeHostFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeHostFilter.java
index ed66d085972..e9f69abf81b 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeHostFilter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeHostFilter.java
@@ -25,7 +25,7 @@ public class NodeHostFilter extends NodeFilter {
@Override
public boolean matches(Node node) {
- if ( ! filter.matches(node.hostname(), node.flavor().name(), membership(node))) return false;
+ if ( ! filter.matches(node.hostname(), node.flavor().flavorName(), membership(node))) return false;
return nextMatches(node);
}
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 bb4dab3b97b..9f32517db41 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
@@ -8,10 +8,9 @@ import com.yahoo.config.provision.ApplicationName;
import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.InstanceName;
+import com.yahoo.config.provision.NetworkPortsSerializer;
import com.yahoo.config.provision.NodeFlavors;
import com.yahoo.config.provision.NodeType;
-import com.yahoo.config.provision.NetworkPorts;
-import com.yahoo.config.provision.NetworkPortsSerializer;
import com.yahoo.config.provision.TenantName;
import com.yahoo.slime.ArrayTraverser;
import com.yahoo.slime.Cursor;
@@ -113,7 +112,7 @@ public class NodeSerializer {
toSlime(node.ipAddressPool().asSet(), object.setArray(ipAddressPoolKey), IP::requireAddressPool);
object.setString(idKey, node.id());
node.parentHostname().ifPresent(hostname -> object.setString(parentHostnameKey, hostname));
- object.setString(flavorKey, node.flavor().name());
+ object.setString(flavorKey, node.flavor().flavorName());
object.setLong(rebootGenerationKey, node.status().reboot().wanted());
object.setLong(currentRebootGenerationKey, node.status().reboot().current());
node.status().vespaVersion().ifPresent(version -> object.setString(vespaVersionKey, version.toString()));
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 e437badf0dc..29bab6e73e7 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
@@ -4,11 +4,10 @@ package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.Environment;
-import com.yahoo.config.provision.SystemName;
-import com.yahoo.config.provision.Zone;
-
import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.NodeFlavors;
+import com.yahoo.config.provision.SystemName;
+import com.yahoo.config.provision.Zone;
import java.util.Arrays;
import java.util.Optional;
@@ -45,7 +44,7 @@ public class CapacityPolicies {
// for now, always use the requested flavor if a docker flavor is requested
Optional<String> requestedFlavor = requestedCapacity.flavor();
if (requestedFlavor.isPresent() &&
- flavors.getFlavorOrThrow(requestedFlavor.get()).getType() == Flavor.Type.DOCKER_CONTAINER)
+ flavors.getFlavorOrThrow(requestedFlavor.get()).environment() == Flavor.Environment.DOCKER_CONTAINER)
return flavors.getFlavorOrThrow(requestedFlavor.get());
String defaultFlavorName = zone.defaultFlavor(cluster.type());
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorConfigBuilder.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorConfigBuilder.java
index cff62508ec6..c306ff6514c 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorConfigBuilder.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorConfigBuilder.java
@@ -1,9 +1,10 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
-import com.yahoo.config.provisioning.FlavorsConfig;
import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.NodeFlavors;
+import com.yahoo.config.provision.internal.ConfigNodeFlavors;
+import com.yahoo.config.provisioning.FlavorsConfig;
/**
* Simplifies creation of a node-repository config containing flavors.
@@ -19,27 +20,13 @@ public class FlavorConfigBuilder {
return new FlavorsConfig(builder);
}
- public FlavorsConfig.Flavor.Builder addFlavor(String flavorName, double cpu, double mem, double disk, Flavor.Type type) {
- FlavorsConfig.Flavor.Builder flavor = new FlavorsConfig.Flavor.Builder();
- flavor.name(flavorName);
- flavor.description("Flavor-name-is-" + flavorName);
- flavor.minDiskAvailableGb(disk);
- flavor.minCpuCores(cpu);
- flavor.minMainMemoryAvailableGb(mem);
- flavor.environment(type.name());
- builder.flavor(flavor);
- return flavor;
- }
-
- public FlavorsConfig.Flavor.Builder addNonStockFlavor(String flavorName, double cpu, double mem, double disk, Flavor.Type type) {
- FlavorsConfig.Flavor.Builder flavor = new FlavorsConfig.Flavor.Builder();
- flavor.name(flavorName);
- flavor.description("Flavor-name-is-" + flavorName);
- flavor.minDiskAvailableGb(disk);
- flavor.minCpuCores(cpu);
- flavor.minMainMemoryAvailableGb(mem);
- flavor.stock(false);
- flavor.environment(type.name());
+ public FlavorsConfig.Flavor.Builder addFlavor(String flavorName, double cpu, double mem, double disk, Flavor.Environment environment) {
+ FlavorsConfig.Flavor.Builder flavor = new FlavorsConfig.Flavor.Builder()
+ .name(flavorName)
+ .disk(new FlavorsConfig.Flavor.Disk.Builder().sizeInGb(disk))
+ .cpu(new FlavorsConfig.Flavor.Cpu.Builder().cores(cpu))
+ .memory(new FlavorsConfig.Flavor.Memory.Builder().sizeInGb(mem))
+ .environment(environment.name());
builder.flavor(flavor);
return flavor;
}
@@ -60,14 +47,14 @@ public class FlavorConfigBuilder {
FlavorConfigBuilder flavorConfigBuilder = new FlavorConfigBuilder();
for (String flavorName : flavors) {
if (flavorName.equals("docker"))
- flavorConfigBuilder.addFlavor(flavorName, 1. /* cpu*/, 3. /* mem GB*/, 2. /*disk GB*/, Flavor.Type.DOCKER_CONTAINER);
+ flavorConfigBuilder.addFlavor(flavorName, 1. /* cpu*/, 3. /* mem GB*/, 2. /*disk GB*/, Flavor.Environment.DOCKER_CONTAINER);
else if (flavorName.equals("docker2"))
- flavorConfigBuilder.addFlavor(flavorName, 2. /* cpu*/, 4. /* mem GB*/, 4. /*disk GB*/, Flavor.Type.DOCKER_CONTAINER);
+ flavorConfigBuilder.addFlavor(flavorName, 2. /* cpu*/, 4. /* mem GB*/, 4. /*disk GB*/, Flavor.Environment.DOCKER_CONTAINER);
else if (flavorName.equals("host"))
- flavorConfigBuilder.addFlavor(flavorName, 7. /* cpu*/, 10. /* mem GB*/, 12. /*disk GB*/, Flavor.Type.BARE_METAL);
+ flavorConfigBuilder.addFlavor(flavorName, 7. /* cpu*/, 10. /* mem GB*/, 12. /*disk GB*/, Flavor.Environment.BARE_METAL);
else
- flavorConfigBuilder.addFlavor(flavorName, 1. /* cpu*/, 3. /* mem GB*/, 2. /*disk GB*/, Flavor.Type.BARE_METAL);
+ flavorConfigBuilder.addFlavor(flavorName, 1. /* cpu*/, 3. /* mem GB*/, 2. /*disk GB*/, Flavor.Environment.BARE_METAL);
}
- return new NodeFlavors(flavorConfigBuilder.build());
+ return new ConfigNodeFlavors(flavorConfigBuilder.build());
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorSpareCount.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorSpareCount.java
index 217f4999bfb..dd8b84e350d 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorSpareCount.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorSpareCount.java
@@ -98,6 +98,6 @@ public class FlavorSpareCount {
@Override
public String toString() {
- return flavor.name() + " has " + numReady + " ready nodes and " + numActive + " active nodes";
+ return flavor.flavorName() + " has " + numReady + " ready nodes and " + numActive + " active nodes";
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java
index dcc3c4a0ef8..f9093575784 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java
@@ -285,7 +285,7 @@ class NodeAllocation {
.filter(NodeSpec.CountNodeSpec.class::isInstance)
.map(NodeSpec.CountNodeSpec.class::cast)
.map(spec -> new FlavorCount(spec.getFlavor(), spec.fulfilledDeficitCount(acceptedOfRequestedFlavor)))
- .filter(flavorCount -> flavorCount.getFlavor().getType() == Flavor.Type.DOCKER_CONTAINER)
+ .filter(flavorCount -> flavorCount.getFlavor().environment() == Flavor.Environment.DOCKER_CONTAINER)
.filter(flavorCount -> flavorCount.getCount() > 0);
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java
index 861e1062d66..820c0d2914b 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java
@@ -248,7 +248,7 @@ class NodePrioritizer {
private boolean isDocker() {
Flavor flavor = getFlavor(requestedNodes);
- return (flavor != null) && flavor.getType().equals(Flavor.Type.DOCKER_CONTAINER);
+ return (flavor != null) && flavor.environment().equals(Flavor.Environment.DOCKER_CONTAINER);
}
private static int compareForRelocation(Node a, Node b) {
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java
index e033d994f24..0d49b036acb 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java
@@ -1,8 +1,8 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
-import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.Flavor;
+import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.provision.Node;
import java.util.Objects;
@@ -142,7 +142,7 @@ public interface NodeSpec {
private boolean requestedFlavorCanBeAchievedByResizing(Flavor flavor) {
// TODO: Enable this when we can do it safely
// Then also re-enable ProvisioningTest.application_deployment_with_inplace_downsize()
- // return flavor.isDocker() && requestedFlavor.isDocker() && flavor.isLargerThan(requestedFlavor);
+ // return flavor.isDockerContainer() && requestedFlavor.isDockerContainer() && flavor.isLargerThan(requestedFlavor);
return false;
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ResourceCapacity.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ResourceCapacity.java
index 903951ef93b..4262bda7824 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ResourceCapacity.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ResourceCapacity.java
@@ -28,7 +28,7 @@ public class ResourceCapacity {
static ResourceCapacity of(Flavor flavor) {
return new ResourceCapacity(
- flavor.getMinMainMemoryAvailableGb(), flavor.getMinCpuCores(), flavor.getMinDiskAvailableGb());
+ flavor.memory().sizeInGb(), flavor.cpu().cores(), flavor.disk().sizeInBase10Gb());
}
static ResourceCapacity of(Node node) {
@@ -72,9 +72,9 @@ public class ResourceCapacity {
int freeCapacityInFlavorEquivalence(Flavor flavor) {
if (!hasCapacityFor(ResourceCapacity.of(flavor))) return 0;
- double memoryFactor = Math.floor(memory/flavor.getMinMainMemoryAvailableGb());
- double cpuFactor = Math.floor(cpu/flavor.getMinCpuCores());
- double diskFactor = Math.floor(disk/flavor.getMinDiskAvailableGb());
+ double memoryFactor = Math.floor(memory/flavor.memory().sizeInGb());
+ double cpuFactor = Math.floor(cpu/flavor.cpu().cores());
+ double diskFactor = Math.floor(disk/flavor.disk().sizeInBase10Gb());
return (int) Math.min(Math.min(memoryFactor, cpuFactor), diskFactor);
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java
index 1254664eb78..98abd8390f8 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java
@@ -142,18 +142,18 @@ class NodesResponse extends HttpResponse {
object.setString("parentHostname", node.parentHostname().get());
}
object.setString("openStackId", node.id());
- object.setString("flavor", node.flavor().name());
+ object.setString("flavor", node.flavor().flavorName());
object.setString("canonicalFlavor", node.flavor().canonicalName());
- object.setDouble("minDiskAvailableGb", node.flavor().getMinDiskAvailableGb());
- object.setDouble("minMainMemoryAvailableGb", node.flavor().getMinMainMemoryAvailableGb());
+ object.setDouble("minDiskAvailableGb", node.flavor().disk().sizeInBase10Gb());
+ object.setDouble("minMainMemoryAvailableGb", node.flavor().memory().sizeInGb());
if (node.flavor().getDescription() != null && ! node.flavor().getDescription().isEmpty())
object.setString("description", node.flavor().getDescription());
- object.setDouble("minCpuCores", node.flavor().getMinCpuCores());
+ object.setDouble("minCpuCores", node.flavor().cpu().cores());
if (node.flavor().cost() > 0)
object.setLong("cost", node.flavor().cost());
- object.setBool("fastDisk", node.flavor().hasFastDisk());
- object.setDouble("bandwidth", node.flavor().getBandwidth());
- object.setString("environment", node.flavor().getType().name());
+ object.setBool("fastDisk", node.flavor().disk().isFast());
+ object.setDouble("bandwidth", node.flavor().bandwidth().mbits());
+ object.setString("environment", node.flavor().environment().name());
node.allocation().ifPresent(allocation -> {
toSlime(allocation.owner(), object.setObject("owner"));
toSlime(allocation.membership(), object.setObject("membership"));
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeFlavors.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeFlavors.java
index 241a797cd1b..8e456fe4703 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeFlavors.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeFlavors.java
@@ -1,16 +1,16 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.testutils;
-import com.yahoo.config.provisioning.FlavorsConfig;
import com.yahoo.config.provision.Flavor;
-import com.yahoo.config.provision.NodeFlavors;
+import com.yahoo.config.provision.internal.ConfigNodeFlavors;
+import com.yahoo.config.provisioning.FlavorsConfig;
import com.yahoo.vespa.hosted.provision.provisioning.FlavorConfigBuilder;
/**
* A mock repository prepopulated with flavors, to avoid having config.
* Instantiated by DI from application package above.
*/
-public class MockNodeFlavors extends NodeFlavors {
+public class MockNodeFlavors extends ConfigNodeFlavors {
public MockNodeFlavors() {
super(createConfig());
@@ -18,14 +18,14 @@ public class MockNodeFlavors extends NodeFlavors {
private static FlavorsConfig createConfig() {
FlavorConfigBuilder b = new FlavorConfigBuilder();
- b.addFlavor("default", 2., 16., 400, Flavor.Type.BARE_METAL);
- b.addFlavor("medium-disk", 6., 12., 56, Flavor.Type.BARE_METAL);
- b.addFlavor("large", 4., 32., 1600, Flavor.Type.BARE_METAL);
- b.addFlavor("docker", 0.2, 0.5, 100, Flavor.Type.DOCKER_CONTAINER);
- b.addFlavor("v-4-8-100", 4.0, 8.0, 100, Flavor.Type.VIRTUAL_MACHINE);
- FlavorsConfig.Flavor.Builder largeVariant = b.addFlavor("large-variant", 64, 128, 2000, Flavor.Type.BARE_METAL);
+ b.addFlavor("default", 2., 16., 400, Flavor.Environment.BARE_METAL);
+ b.addFlavor("medium-disk", 6., 12., 56, Flavor.Environment.BARE_METAL);
+ b.addFlavor("large", 4., 32., 1600, Flavor.Environment.BARE_METAL);
+ b.addFlavor("docker", 0.2, 0.5, 100, Flavor.Environment.DOCKER_CONTAINER);
+ b.addFlavor("v-4-8-100", 4.0, 8.0, 100, Flavor.Environment.VIRTUAL_MACHINE);
+ FlavorsConfig.Flavor.Builder largeVariant = b.addFlavor("large-variant", 64, 128, 2000, Flavor.Environment.BARE_METAL);
b.addReplaces("large", largeVariant);
- FlavorsConfig.Flavor.Builder expensiveFlavor = b.addFlavor("expensive", 6, 12, 500, Flavor.Type.BARE_METAL);
+ FlavorsConfig.Flavor.Builder expensiveFlavor = b.addFlavor("expensive", 6, 12, 500, Flavor.Environment.BARE_METAL);
b.addReplaces("default", expensiveFlavor);
b.addCost(200, expensiveFlavor);