diff options
author | Valerij Fredriksen <valerijf@verizonmedia.com> | 2019-03-04 13:53:42 +0100 |
---|---|---|
committer | Valerij Fredriksen <valerijf@verizonmedia.com> | 2019-03-08 09:35:34 +0100 |
commit | 030f29a9d6ced07c418bd4948688ca1ddeeec3d0 (patch) | |
tree | b29afe6b7edbe1e4822fa5615c834e8a9031b4ea /node-repository/src/main/java/com/yahoo/vespa/hosted | |
parent | b85e50a93d0af8537898526f93f1278eda3dfcca (diff) |
Follow API change
Diffstat (limited to 'node-repository/src/main/java/com/yahoo/vespa/hosted')
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); |