summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Eriksen <andreer@pvv.ntnu.no>2018-09-28 16:13:35 +0200
committerolaaun <ola.aunroe@gmail.com>2018-09-28 16:13:35 +0200
commit3d74ee9620abd934e84c9482dd4ff10090d1e4dd (patch)
tree88258c1d957c00c349593cb596aac8fa831a9d26
parente6f46440bd697d78921379dba4f7e55ca2d85c7a (diff)
andreer/flavor bandwidth (#7141)
* add bandwidth to flavor * accept having more disk / memory than expected * add bandwidth to node-admin bindings * add bandwidth to test * fix test * disable ping check (and assume ipv6 connectivity) check has been deemed too unreliable to rely on for failing out nodes * add bandwidth field to expected responses
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java4
-rw-r--r--config-provisioning/src/main/resources/configdefinitions/flavors.def5
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java23
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java1
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java4
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java1
-rw-r--r--node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/NodeJsonConverter.java6
-rw-r--r--node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/NodeSpec.java7
-rw-r--r--node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/HardwareNodeComparator.java9
-rw-r--r--node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifier.java7
-rw-r--r--node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/VerifierSettings.java4
-rw-r--r--node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/retrievers/NetRetriever.java2
-rw-r--r--node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/IPAddressVerifierTest.java4
-rw-r--r--node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifierTest.java6
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg1.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg2.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/controller1.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-container1.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node1-os-upgrade-complete.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node1-os-upgrade.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node1.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node2.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node3.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node4.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node5.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node1.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node10.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node11.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node2.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node3.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node4-after-changes.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node4.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5-after-changes.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node55-after-changes.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node55.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node6-after-changes.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node6.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node7.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node8.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node9.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/parent1.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/parent2.json1
44 files changed, 97 insertions, 16 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java
index 78507779585..79a17c23dd7 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java
@@ -23,6 +23,7 @@ public class Flavor {
private final double minMainMemoryAvailableGb;
private final double minDiskAvailableGb;
private final boolean fastDisk;
+ private final double bandwidth;
private final String description;
private final boolean retired;
private List<Flavor> replacesFlavors;
@@ -42,6 +43,7 @@ public class Flavor {
this.minMainMemoryAvailableGb = flavorConfig.minMainMemoryAvailableGb();
this.minDiskAvailableGb = flavorConfig.minDiskAvailableGb();
this.fastDisk = flavorConfig.fastDisk();
+ this.bandwidth = flavorConfig.bandwidth();
this.description = flavorConfig.description();
this.retired = flavorConfig.retired();
this.idealHeadroom = flavorConfig.idealHeadroom();
@@ -66,6 +68,8 @@ public class Flavor {
public boolean hasFastDisk() { return fastDisk; }
+ public double getBandwidth() { return bandwidth; }
+
public double getMinCpuCores() { return minCpuCores; }
public String getDescription() { return description; }
diff --git a/config-provisioning/src/main/resources/configdefinitions/flavors.def b/config-provisioning/src/main/resources/configdefinitions/flavors.def
index 63b22958487..1e40f6f8f36 100644
--- a/config-provisioning/src/main/resources/configdefinitions/flavors.def
+++ b/config-provisioning/src/main/resources/configdefinitions/flavors.def
@@ -14,7 +14,7 @@ flavor[].name string
# c may be satisfied by assigning nodes of flavor a.
flavor[].replaces[].name string
-# The monthly Total Cost of Ownership (TCO) in USD. Typically calculated as TCO divered by
+# The monthly Total Cost of Ownership (TCO) in USD. Typically calculated as TCO divided by
# the expected lifetime of the node (usually three years).
flavor[].cost int default=0
@@ -40,6 +40,9 @@ flavor[].minDiskAvailableGb double default=0.0
# Whether the disk is fast (typically SSD) or slow (typically spinning HDD).
flavor[].fastDisk bool default=true
+# Expected network interface bandwidth available for this flavor, in Mbit/s.
+flavor[].bandwidth double default=0.0
+
# Human readable free text for description of node.
flavor[].description string default=""
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 7036f6852fe..071d4b549de 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
@@ -45,6 +45,7 @@ public class NodeSpec {
private final double minDiskAvailableGb;
private final boolean fastDisk;
+ private final double bandwidth;
private final Set<String> ipAddresses;
private final Optional<String> hardwareDivergence;
@@ -75,6 +76,7 @@ public class NodeSpec {
final double minMainMemoryAvailableGb,
final double minDiskAvailableGb,
final boolean fastDisk,
+ final double bandwidth,
final Set<String> ipAddresses,
final Optional<String> hardwareDivergence,
final Optional<String> hardwareFailureDescription,
@@ -102,6 +104,7 @@ public class NodeSpec {
this.minMainMemoryAvailableGb = minMainMemoryAvailableGb;
this.minDiskAvailableGb = minDiskAvailableGb;
this.fastDisk = fastDisk;
+ this.bandwidth = bandwidth;
this.ipAddresses = Objects.requireNonNull(ipAddresses);
this.hardwareDivergence = Objects.requireNonNull(hardwareDivergence);
this.hardwareFailureDescription = Objects.requireNonNull(hardwareFailureDescription);
@@ -200,6 +203,10 @@ public class NodeSpec {
return fastDisk;
}
+ public double getBandwidth() {
+ return bandwidth;
+ }
+
public Set<String> getIpAddresses() {
return ipAddresses;
}
@@ -246,6 +253,7 @@ public class NodeSpec {
Objects.equals(minMainMemoryAvailableGb, that.minMainMemoryAvailableGb) &&
Objects.equals(minDiskAvailableGb, that.minDiskAvailableGb) &&
Objects.equals(fastDisk, that.fastDisk) &&
+ Objects.equals(bandwidth, that.bandwidth) &&
Objects.equals(ipAddresses, that.ipAddresses) &&
Objects.equals(hardwareDivergence, that.hardwareDivergence) &&
Objects.equals(hardwareFailureDescription, that.hardwareFailureDescription) &&
@@ -278,6 +286,7 @@ public class NodeSpec {
minMainMemoryAvailableGb,
minDiskAvailableGb,
fastDisk,
+ bandwidth,
ipAddresses,
hardwareDivergence,
hardwareFailureDescription,
@@ -310,6 +319,7 @@ public class NodeSpec {
+ " minMainMemoryAvailableGb=" + minMainMemoryAvailableGb
+ " minDiskAvailableGb=" + minDiskAvailableGb
+ " fastDisk=" + fastDisk
+ + " bandwidth=" + bandwidth
+ " ipAddresses=" + ipAddresses
+ " hardwareDivergence=" + hardwareDivergence
+ " hardwareFailureDescription=" + hardwareFailureDescription
@@ -466,6 +476,7 @@ public class NodeSpec {
private double minMainMemoryAvailableGb;
private double minDiskAvailableGb;
private boolean fastDisk = false;
+ private double bandwidth;
private Set<String> ipAddresses = Collections.emptySet();
private Optional<String> hardwareDivergence = Optional.empty();
private Optional<String> hardwareFailureDescription = Optional.empty();
@@ -483,6 +494,7 @@ public class NodeSpec {
minMainMemoryAvailableGb(node.minMainMemoryAvailableGb);
minDiskAvailableGb(node.minDiskAvailableGb);
fastDisk(node.fastDisk);
+ bandwidth(node.bandwidth);
ipAddresses(node.ipAddresses);
wantedRebootGeneration(node.wantedRebootGeneration);
currentRebootGeneration(node.currentRebootGeneration);
@@ -619,6 +631,11 @@ public class NodeSpec {
return this;
}
+ public Builder bandwidth(double bandwidth) {
+ this.bandwidth = bandwidth;
+ return this;
+ }
+
public Builder ipAddresses(Set<String> ipAddresses) {
this.ipAddresses = ipAddresses;
return this;
@@ -742,6 +759,10 @@ public class NodeSpec {
return fastDisk;
}
+ public double getBandwidth() {
+ return bandwidth;
+ }
+
public Set<String> getIpAddresses() {
return ipAddresses;
}
@@ -766,7 +787,7 @@ public class NodeSpec {
wantedRestartGeneration, currentRestartGeneration,
wantedRebootGeneration, currentRebootGeneration,
minCpuCores, minMainMemoryAvailableGb, minDiskAvailableGb,
- fastDisk, ipAddresses, hardwareDivergence, hardwareFailureDescription,
+ fastDisk, bandwidth, ipAddresses, hardwareDivergence, hardwareFailureDescription,
parentHostname);
}
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 dc3cc6a45de..e8efe10e505 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
@@ -194,6 +194,7 @@ public class RealNodeRepository implements NodeRepository {
node.minMainMemoryAvailableGb,
node.minDiskAvailableGb,
node.fastDisk,
+ node.bandwidth,
node.ipAddresses,
Optional.ofNullable(node.hardwareDivergence),
Optional.ofNullable(node.hardwareFailureDescription),
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java
index 8e41252144d..fcfd552875a 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java
@@ -52,6 +52,8 @@ public class NodeRepositoryNode {
public Integer failCount;
@JsonProperty("fastDisk")
public Boolean fastDisk;
+ @JsonProperty("bandwidth")
+ public Double bandwidth;
@JsonProperty("hardwareFailure")
public Boolean hardwareFailure;
@JsonProperty("hardwareFailureDescription")
@@ -102,6 +104,8 @@ public class NodeRepositoryNode {
", currentOsVersion='" + currentOsVersion + '\'' +
", wantedOsVersion='" + wantedOsVersion + '\'' +
", failCount=" + failCount +
+ ", fastDisk=" + fastDisk +
+ ", bandwidth=" + bandwidth +
", hardwareFailure=" + hardwareFailure +
", hardwareFailureDescription='" + hardwareFailureDescription + '\'' +
", hardwareDivergence='" + hardwareDivergence + '\'' +
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java
index 914836114ad..cbb05ace0d1 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java
@@ -421,6 +421,7 @@ public class StorageMaintainer {
"--memory", Double.toString(node.getMinMainMemoryAvailableGb()),
"--cpu_cores", Double.toString(node.getMinCpuCores()),
"--is_ssd", Boolean.toString(node.isFastDisk()),
+ "--bandwidth", Double.toString(node.getBandwidth()),
"--ips", String.join(",", node.getIpAddresses())));
node.getHardwareDivergence().ifPresent(hardwareDivergence -> {
diff --git a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/NodeJsonConverter.java b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/NodeJsonConverter.java
index bdc4ea0789c..622d46ca587 100644
--- a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/NodeJsonConverter.java
+++ b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/NodeJsonConverter.java
@@ -11,8 +11,8 @@ import com.yahoo.vespa.hosted.node.verification.spec.retrievers.HardwareInfo;
*/
public class NodeJsonConverter {
- private static void addStandardSpecifications(HardwareInfo nodeRepoHardwareInfo) {
- nodeRepoHardwareInfo.setInterfaceSpeedMbs(1000);
+ private static void setInterfaceSpeed(NodeSpec nodeSpec, HardwareInfo nodeRepoHardwareInfo) {
+ nodeRepoHardwareInfo.setInterfaceSpeedMbs(nodeSpec.getBandwidth());
}
private static void setIpv6Interface(NodeSpec nodeSpec, HardwareInfo nodeRepoHardwareInfo) {
@@ -29,7 +29,7 @@ public class NodeJsonConverter {
public static HardwareInfo convertJsonModelToHardwareInfo(NodeSpec nodeSpec) {
HardwareInfo nodeRepoHardwareInfo = nodeSpec.copyToHardwareInfo();
- addStandardSpecifications(nodeRepoHardwareInfo);
+ setInterfaceSpeed(nodeSpec, nodeRepoHardwareInfo);
setIpv4Interface(nodeSpec, nodeRepoHardwareInfo);
setIpv6Interface(nodeSpec, nodeRepoHardwareInfo);
return nodeRepoHardwareInfo;
diff --git a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/NodeSpec.java b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/NodeSpec.java
index 68a8060a6ad..16be1c39a74 100644
--- a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/NodeSpec.java
+++ b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/NodeSpec.java
@@ -20,14 +20,16 @@ public class NodeSpec {
private final double minMainMemoryAvailableGb;
private final double minCpuCores;
private final boolean fastDisk;
+ private final double bandwidth;
private final String[] ipAddresses;
public NodeSpec(double minDiskAvailableGb, double minMainMemoryAvailableGb, double minCpuCores, boolean fastDisk,
- String[] ipAddresses) {
+ double bandwidth, String[] ipAddresses) {
this.minDiskAvailableGb = minDiskAvailableGb;
this.minMainMemoryAvailableGb = minMainMemoryAvailableGb;
this.minCpuCores = minCpuCores;
this.fastDisk = fastDisk;
+ this.bandwidth = bandwidth;
this.ipAddresses = ipAddresses;
}
@@ -37,6 +39,7 @@ public class NodeSpec {
hardwareInfo.setMinDiskAvailableGb(this.minDiskAvailableGb);
hardwareInfo.setMinCpuCores((int) Math.round(this.minCpuCores));
hardwareInfo.setDiskType(this.fastDisk ? DiskType.FAST : DiskType.SLOW);
+ hardwareInfo.setInterfaceSpeedMbs(bandwidth);
hardwareInfo.setIpv6Connection(getIpv6Address() != null);
return hardwareInfo;
}
@@ -54,4 +57,6 @@ public class NodeSpec {
.filter(ip -> ip instanceof Inet4Address)
.findFirst().map(InetAddress::getHostAddress).orElse(null);
}
+
+ public double getBandwidth() { return bandwidth ; }
}
diff --git a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/HardwareNodeComparator.java b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/HardwareNodeComparator.java
index 88bd0539ccd..57d83694709 100644
--- a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/HardwareNodeComparator.java
+++ b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/HardwareNodeComparator.java
@@ -35,7 +35,7 @@ public class HardwareNodeComparator {
private static void setMemoryMetrics(HardwareInfo nodeRepoHardwareInfo, HardwareInfo actualHardware, SpecVerificationReport specVerificationReport) {
double expectedMemory = nodeRepoHardwareInfo.getMinMainMemoryAvailableGb();
double actualMemory = actualHardware.getMinMainMemoryAvailableGb();
- if (outsideThreshold(expectedMemory, actualMemory, PERCENTAGE_THRESHOLD)) {
+ if (belowThreshold(expectedMemory, actualMemory, PERCENTAGE_THRESHOLD)) {
specVerificationReport.setActualMemoryAvailable(actualMemory);
}
}
@@ -59,7 +59,7 @@ public class HardwareNodeComparator {
private static void setDiskSpaceMetrics(HardwareInfo nodeRepoHardwareInfo, HardwareInfo actualHardware, SpecVerificationReport specVerificationReport) {
double expectedDiskSpace = nodeRepoHardwareInfo.getMinDiskAvailableGb();
double actualDiskSpace = actualHardware.getMinDiskAvailableGb();
- if (outsideThreshold(expectedDiskSpace, actualDiskSpace, PERCENTAGE_THRESHOLD)) {
+ if (belowThreshold(expectedDiskSpace, actualDiskSpace, PERCENTAGE_THRESHOLD)) {
specVerificationReport.setActualDiskSpaceAvailable(actualDiskSpace);
}
}
@@ -76,10 +76,9 @@ public class HardwareNodeComparator {
}
}
- private static boolean outsideThreshold(double value1, double value2, double thresholdPercentage) {
+ private static boolean belowThreshold(double expected, double actual, double thresholdPercentage) {
double lowerThresholdPercentage = 1 - thresholdPercentage;
- double upperThresholdPercentage = 1 + thresholdPercentage;
- return value1 < lowerThresholdPercentage * value2 || value1 > upperThresholdPercentage * value2;
+ return actual < expected * lowerThresholdPercentage;
}
}
diff --git a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifier.java b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifier.java
index 627477def0f..3a4a1697a75 100644
--- a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifier.java
+++ b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifier.java
@@ -39,6 +39,9 @@ public class SpecVerifier extends Main.VerifierCommand {
@Option(name = {"-s", "--is_ssd"}, required = true, description = "Set to true if disk is SSD", allowedValues = {"true", "false"})
private String fastDisk;
+ @Option(name = {"-b", "--bandwidth"}, required = true, description = "Expected network interface speed in Mbit/s")
+ private double bandwidth;
+
@Option(name = {"-i", "--ips"}, description = "Comma separated list of IP addresses assigned to this node")
private String ipAddresses;
@@ -49,14 +52,14 @@ public class SpecVerifier extends Main.VerifierCommand {
.map(s -> s.split(","))
.orElse(new String[0]);
- NodeSpec nodeSpec = new NodeSpec(diskAvailableGb, mainMemoryAvailableGb, cpuCores, Boolean.valueOf(fastDisk), ips);
+ NodeSpec nodeSpec = new NodeSpec(diskAvailableGb, mainMemoryAvailableGb, cpuCores, Boolean.valueOf(fastDisk), bandwidth, ips);
SpecVerificationReport specVerificationReport = verifySpec(nodeSpec, commandExecutor);
hardwareDivergenceReport.setSpecVerificationReport(specVerificationReport);
}
private SpecVerificationReport verifySpec(NodeSpec nodeSpec, CommandExecutor commandExecutor) {
- VerifierSettings verifierSettings = new VerifierSettings(nodeSpec);
+ VerifierSettings verifierSettings = new VerifierSettings(false);
HardwareInfo actualHardware = HardwareInfoRetriever.retrieve(commandExecutor, verifierSettings);
return makeVerificationReport(actualHardware, nodeSpec);
}
diff --git a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/VerifierSettings.java b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/VerifierSettings.java
index f2e78d672cb..3bc1a447ea8 100644
--- a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/VerifierSettings.java
+++ b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/VerifierSettings.java
@@ -17,6 +17,10 @@ public class VerifierSettings {
this.checkIPv6 = true;
}
+ public VerifierSettings(boolean checkIPv6) {
+ this.checkIPv6 = checkIPv6;
+ }
+
public VerifierSettings(NodeSpec nodeSpec) {
checkIPv6 = nodeSpec.getIpv6Address() != null;
}
diff --git a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/retrievers/NetRetriever.java b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/retrievers/NetRetriever.java
index 5afdbbb1c78..9f147f79934 100644
--- a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/retrievers/NetRetriever.java
+++ b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/retrievers/NetRetriever.java
@@ -60,6 +60,8 @@ public class NetRetriever implements HardwareRetriever {
findInterfaceSpeed(parseResults);
if (verifierSettings.isCheckIPv6()) {
testPingResponse(parseResults);
+ } else {
+ hardwareInfo.setIpv6Connection(true);
}
updateHardwareInfoWithNet(parseResults);
}
diff --git a/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/IPAddressVerifierTest.java b/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/IPAddressVerifierTest.java
index 5762975ec9b..5216a8563d7 100644
--- a/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/IPAddressVerifierTest.java
+++ b/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/IPAddressVerifierTest.java
@@ -17,7 +17,7 @@ public class IPAddressVerifierTest {
private final String ipv4Address = "10.2.4.8";
private final String ipv6Address = "fdab:0:0:0:0:0:0:1234";
- private final NodeSpec nodeSpec = new NodeSpec(1920, 256, 48, true, new String[]{ipv4Address, ipv6Address});
+ private final NodeSpec nodeSpec = new NodeSpec(1920, 256, 48, true, 10_000, new String[]{ipv4Address, ipv6Address});
private final String hostname = "test123.region.domain.tld";
private IPAddressVerifier ipAddressVerifier = spy(new IPAddressVerifier(hostname));
@@ -63,7 +63,7 @@ public class IPAddressVerifierTest {
@Test
public void getFaultyIpAddresses_should_return_empty_array_when_parameters_are_invalid() {
- final NodeSpec nodeWithNoIP = new NodeSpec(1920, 256, 48, true, new String[0]);
+ final NodeSpec nodeWithNoIP = new NodeSpec(1920, 256, 48, true, 10_000, new String[0]);
assertEquals(0, ipAddressVerifier.getFaultyIpAddresses(nodeWithNoIP).length);
}
diff --git a/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifierTest.java b/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifierTest.java
index d819a9dd269..96af900095f 100644
--- a/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifierTest.java
+++ b/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifierTest.java
@@ -35,10 +35,11 @@ public class SpecVerifierTest {
String result = Main.execute(new String[] {
"specification",
- "-d", "250",
+ "-d", "2500",
"-m", "64",
"-c", "1.5",
"-s", "true",
+ "-b", "10000.0",
"-i", "10.11.12.13,::1234"
}, commandExecutor);
@@ -46,6 +47,7 @@ public class SpecVerifierTest {
"{\"specVerificationReport\":{\"" +
"actualMemoryAvailable\":4.042128,\"" +
"actualDiskSpaceAvailable\":1760.0,\"" +
+ "actualInterfaceSpeed\":1000.0,\"" +
"actualcpuCores\":4,\"" +
"faultyIpAddresses\":[\"10.11.12.13\",\"0:0:0:0:0:0:0:1234\"]}}", result);
}
@@ -66,6 +68,7 @@ public class SpecVerifierTest {
"-m", "4",
"-c", "4",
"-s", "true",
+ "-b", "1000"
}, commandExecutor);
assertEquals("null", result);
@@ -90,6 +93,7 @@ public class SpecVerifierTest {
"-m", "4",
"-c", "4",
"-s", "true",
+ "-b", "1000",
"-h", previousResult
}, commandExecutor);
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 3b7cf857a86..9364c5f5f80 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
@@ -153,6 +153,7 @@ class NodesResponse extends HttpResponse {
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());
if (node.allocation().isPresent()) {
toSlime(node.allocation().get().owner(), object.setObject("owner"));
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg1.json
index 796b03e7e68..f57f40ea171 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg1.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg1.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-default",
"minCpuCores": 2.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"rebootGeneration": 1,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg2.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg2.json
index 361459390f9..54cf3269b09 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg2.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/cfg2.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-default",
"minCpuCores": 2.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"rebootGeneration": 1,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/controller1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/controller1.json
index 144882aa88e..a5d2a7a37dd 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/controller1.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/controller1.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-default",
"minCpuCores": 2.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-container1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-container1.json
index 7823ed0431d..c98fbb46ff8 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-container1.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-container1.json
@@ -13,6 +13,7 @@
"description": "Flavor-name-is-docker",
"minCpuCores": 0.2,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "DOCKER_CONTAINER",
"owner": {
"tenant": "tenant3",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node1-os-upgrade-complete.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node1-os-upgrade-complete.json
index 2e8092012fb..203220d1b84 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node1-os-upgrade-complete.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node1-os-upgrade-complete.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-large",
"minCpuCores": 4.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node1-os-upgrade.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node1-os-upgrade.json
index 88bda7544d9..eed164689f1 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node1-os-upgrade.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node1-os-upgrade.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-large",
"minCpuCores": 4.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node1.json
index a13dfae927f..e92cf895a8a 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node1.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node1.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-large",
"minCpuCores": 4.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node2.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node2.json
index f7a1d6ab9a9..b832fddf119 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node2.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node2.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-large",
"minCpuCores": 4.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node3.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node3.json
index f877d33672f..17729207c1e 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node3.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node3.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-large",
"minCpuCores": 4.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node4.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node4.json
index 913cf9852aa..2c3d112c69a 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node4.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node4.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-large",
"minCpuCores": 4.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node5.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node5.json
index 685b0a52b15..73c7f89ff0f 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node5.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-node5.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-large",
"minCpuCores": 4.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node1.json
index 08e4904e35c..794082db0c1 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node1.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node1.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-default",
"minCpuCores": 2.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"owner": {
"tenant": "tenant1",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node10.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node10.json
index fe65f34bae5..9b18c8ea52c 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node10.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node10.json
@@ -13,6 +13,7 @@
"description": "Flavor-name-is-default",
"minCpuCores": 2.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"owner": {
"tenant": "tenant1",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node11.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node11.json
index e0e899afbef..ae0354b4d27 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node11.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node11.json
@@ -13,6 +13,7 @@
"description": "Flavor-name-is-docker",
"minCpuCores": 0.2,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "DOCKER_CONTAINER",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node2.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node2.json
index aa60cfae815..5835d718f50 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node2.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node2.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-default",
"minCpuCores": 2.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"owner": {
"tenant": "tenant2",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node3.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node3.json
index eb13d077d7f..7a36c26f385 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node3.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node3.json
@@ -13,6 +13,7 @@
"minCpuCores": 6.0,
"cost": 200,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"rebootGeneration": 1,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node4-after-changes.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node4-after-changes.json
index 86f31c5aa62..247099fcae7 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node4-after-changes.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node4-after-changes.json
@@ -13,6 +13,7 @@
"description": "Flavor-name-is-medium-disk",
"minCpuCores": 6.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"owner": {
"tenant": "tenant3",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node4.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node4.json
index a2f72766d7f..87a4a355b57 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node4.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node4.json
@@ -13,6 +13,7 @@
"description": "Flavor-name-is-docker",
"minCpuCores": 0.2,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "DOCKER_CONTAINER",
"owner": {
"tenant": "tenant3",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5-after-changes.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5-after-changes.json
index 1e1ea1a2445..4c22b4397e0 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5-after-changes.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5-after-changes.json
@@ -13,6 +13,7 @@
"description": "Flavor-name-is-docker",
"minCpuCores": 0.2,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "DOCKER_CONTAINER",
"rebootGeneration": 1,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5.json
index ceb393f4bf6..4e1032442b3 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5.json
@@ -13,6 +13,7 @@
"description": "Flavor-name-is-docker",
"minCpuCores": 0.2,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "DOCKER_CONTAINER",
"rebootGeneration": 1,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node55-after-changes.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node55-after-changes.json
index f3f1306af1e..18d019c4b6e 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node55-after-changes.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node55-after-changes.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-default",
"minCpuCores": 2.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"rebootGeneration": 1,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node55.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node55.json
index 4f8b988ccbf..9d2c67ffcb7 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node55.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node55.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-default",
"minCpuCores": 2.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"rebootGeneration": 1,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node6-after-changes.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node6-after-changes.json
index a5043746749..3e33cfb7a8d 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node6-after-changes.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node6-after-changes.json
@@ -12,6 +12,7 @@
"description":"Flavor-name-is-default",
"minCpuCores":2.0,
"fastDisk":true,
+ "bandwidth":0.0,
"environment":"BARE_METAL",
"owner": {
"tenant": "tenant2",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node6.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node6.json
index c5382dfd1a7..f0c63048dcc 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node6.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node6.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-default",
"minCpuCores": 2.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"owner": {
"tenant": "tenant2",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node7.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node7.json
index b1c654b4e00..53a6e5c8d77 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node7.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node7.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-default",
"minCpuCores": 2.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node8.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node8.json
index 0fa0bf6631d..a768cf73dda 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node8.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node8.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-default",
"minCpuCores": 2.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node9.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node9.json
index 43405f0aafc..8fb4372fb80 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node9.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node9.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-large-variant",
"minCpuCores": 64.0,
"fastDisk": true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/parent1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/parent1.json
index 190dbc41f34..10eaeba153a 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/parent1.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/parent1.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-default",
"minCpuCores": 2.0,
"fastDisk":true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"rebootGeneration": 1,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/parent2.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/parent2.json
index c7f6344d974..74c65d30f34 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/parent2.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/parent2.json
@@ -12,6 +12,7 @@
"description": "Flavor-name-is-large-variant",
"minCpuCores": 64.0,
"fastDisk":true,
+ "bandwidth":0.0,
"environment": "BARE_METAL",
"rebootGeneration": 0,
"currentRebootGeneration": 0,