diff options
author | Martin Polden <mpolden@mpolden.no> | 2018-08-09 15:29:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-09 15:29:26 +0200 |
commit | a6f9ea782e9921498c6a890697824d7d16065f24 (patch) | |
tree | 40135476a3a1ceb8072be49f6da79f6a88d85474 /node-repository/src | |
parent | 69b2b2680ebeef30bb84d0fd5529ec93841c12e6 (diff) | |
parent | 53842016403a8e4fffb5dc044994f2db4e92e55f (diff) |
Merge pull request #6533 from vespa-engine/mpolden/prepare-os-version
Preparations for node OS upgrades
Diffstat (limited to 'node-repository/src')
22 files changed, 86 insertions, 112 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 09c7f6a88b1..455494b3d49 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 @@ -154,7 +154,7 @@ public final class Node { return with(allocation.get().unretire()); } - /** Returns a copy of this with the current restart generation set to generation */ + /** Returns a copy of this with the restart generation set to generation */ public Node withRestart(Generation generation) { final Optional<Allocation> allocation = this.allocation; if ( ! allocation.isPresent()) @@ -178,13 +178,13 @@ public final class Node { return new Node(openStackId, ipAddresses, additionalIpAddresses, hostname, parentHostname, flavor, status, state, allocation, history, type); } - /** Returns a copy of this with the current reboot generation set to generation */ + /** Returns a copy of this with the reboot generation set to generation */ public Node withReboot(Generation generation) { return new Node(openStackId, ipAddresses, additionalIpAddresses, hostname, parentHostname, flavor, status.withReboot(generation), state, allocation, history, type); } - /** Returns a c opy of this with the openStackId set */ + /** Returns a copy of this with the openStackId set */ public Node withOpenStackId(String openStackId) { return new Node(openStackId, ipAddresses, additionalIpAddresses, hostname, parentHostname, flavor, status, state, allocation, history, 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 567ba4708f7..5db79beac3c 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 @@ -73,7 +73,6 @@ import java.util.stream.Stream; public class NodeRepository extends AbstractComponent { private final CuratorDatabaseClient db; - private final Curator curator; private final Clock clock; private final Zone zone; private final NodeFlavors flavors; @@ -96,7 +95,6 @@ public class NodeRepository extends AbstractComponent { public NodeRepository(NodeFlavors flavors, Curator curator, Clock clock, Zone zone, NameResolver nameResolver, DockerImage dockerImage, boolean useCuratorClientCache) { this.db = new CuratorDatabaseClient(flavors, curator, clock, zone, useCuratorClientCache); - this.curator = curator; this.zone = zone; this.clock = clock; this.flavors = flavors; diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeFilter.java index 2c19baad7f3..bc433c83b2e 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeFilter.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeFilter.java @@ -3,8 +3,6 @@ package com.yahoo.vespa.hosted.provision.node.filter; import com.yahoo.vespa.hosted.provision.Node; -import java.util.Objects; - /** * A chainable node filter * @@ -14,7 +12,7 @@ public abstract class NodeFilter { private final NodeFilter next; - /** Creates a node filter with a nchained filter, or null if this is the last filter */ + /** Creates a node filter with a chained filter, or null if this is the last filter */ protected NodeFilter(NodeFilter next) { this.next = next; } 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 76b5cd2ce27..ed66d085972 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 @@ -20,8 +20,7 @@ public class NodeHostFilter extends NodeFilter { /** Creates a node filter which filters using the given host filter */ private NodeHostFilter(HostFilter filter, NodeFilter next) { super(next); - Objects.requireNonNull(filter, "filter cannot be null, use HostFilter.all()"); - this.filter = filter; + this.filter = Objects.requireNonNull(filter, "filter cannot be null, use HostFilter.all()"); } @Override diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeListFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeListFilter.java index 34430a8ec0a..9bd9f6400d5 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeListFilter.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeListFilter.java @@ -20,7 +20,7 @@ public class NodeListFilter extends NodeFilter { private NodeListFilter(List<Node> nodes, NodeFilter next) { super(next); - this.nodes = ImmutableSet.copyOf(nodes); + this.nodes = ImmutableSet.copyOf(Objects.requireNonNull(nodes, "nodes cannot be null")); } @Override diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeTypeFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeTypeFilter.java index 91d155ba069..2a50961e0a4 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeTypeFilter.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeTypeFilter.java @@ -2,7 +2,6 @@ package com.yahoo.vespa.hosted.provision.node.filter; import com.google.common.collect.ImmutableSet; -import com.yahoo.config.provision.HostFilter; import com.yahoo.config.provision.NodeType; import com.yahoo.text.StringUtilities; import com.yahoo.vespa.hosted.provision.Node; @@ -21,8 +20,7 @@ public class NodeTypeFilter extends NodeFilter { protected NodeTypeFilter(Set<NodeType> types, NodeFilter next) { super(next); - Objects.requireNonNull(types, "Node types cannot be null"); - this.types = ImmutableSet.copyOf(types); + this.types = ImmutableSet.copyOf(Objects.requireNonNull(types, "Node types cannot be null")); } @Override diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ParentHostFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ParentHostFilter.java index 522afc2d859..3c51161d4ca 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ParentHostFilter.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ParentHostFilter.java @@ -2,7 +2,6 @@ package com.yahoo.vespa.hosted.provision.node.filter; import com.google.common.collect.ImmutableSet; -import com.yahoo.config.provision.HostFilter; import com.yahoo.text.StringUtilities; import com.yahoo.vespa.hosted.provision.Node; @@ -22,8 +21,7 @@ public class ParentHostFilter extends NodeFilter { /** Creates a node filter which filters using the given parent host name */ private ParentHostFilter(Set<String> parentHostNames, NodeFilter next) { super(next); - Objects.requireNonNull(parentHostNames, "parentHostNames cannot be null."); - this.parentHostNames = ImmutableSet.copyOf(parentHostNames); + this.parentHostNames = ImmutableSet.copyOf(Objects.requireNonNull(parentHostNames, "parentHostNames cannot be null")); } @Override diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/StateFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/StateFilter.java index 0cca49c6adb..5778800d02c 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/StateFilter.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/StateFilter.java @@ -2,18 +2,11 @@ package com.yahoo.vespa.hosted.provision.node.filter; import com.google.common.collect.ImmutableSet; -import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.ApplicationName; -import com.yahoo.config.provision.ClusterMembership; -import com.yahoo.config.provision.HostFilter; -import com.yahoo.config.provision.InstanceName; -import com.yahoo.config.provision.TenantName; import com.yahoo.text.StringUtilities; import com.yahoo.vespa.hosted.provision.Node; import java.util.Collections; import java.util.Objects; -import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -29,7 +22,7 @@ public class StateFilter extends NodeFilter { /** Creates a node filter which filters using the given host filter */ private StateFilter(Set<Node.State> states, NodeFilter next) { super(next); - Objects.requireNonNull(states, "state cannot be null, use an empty optional"); + Objects.requireNonNull(states, "state cannot be null, use an empty set"); this.states = ImmutableSet.copyOf(states); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java index f66cec0706a..f559ec0037b 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java @@ -23,12 +23,13 @@ import java.time.Clock; import java.time.Duration; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; +import java.util.TreeMap; +import java.util.function.Function; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; @@ -47,16 +48,13 @@ public class CuratorDatabaseClient { private static final Logger log = Logger.getLogger(CuratorDatabaseClient.class.getName()); private static final Path root = Path.fromString("/provision/v1"); - + private static final Path lockRoot = root.append("locks"); private static final Duration defaultLockTimeout = Duration.ofMinutes(2); private final NodeSerializer nodeSerializer; private final StringSetSerializer stringSetSerializer = new StringSetSerializer(); - private final CuratorDatabase curatorDatabase; - private final Clock clock; - private final Zone zone; public CuratorDatabaseClient(NodeFlavors flavors, Curator curator, Clock clock, Zone zone, boolean useCache) { @@ -278,9 +276,8 @@ public class CuratorDatabaseClient { /** Creates an returns the path to the lock for this application */ private Path lockPath(ApplicationId application) { - Path lockPath = - root - .append("locks") + Path lockPath = + lockRoot .append(application.tenant().value()) .append(application.application().value()) .append(application.instance().value()); @@ -304,7 +301,7 @@ public class CuratorDatabaseClient { /** Acquires the single cluster-global, reentrant lock for all non-active nodes */ public Lock lockInactive() { - return lock(root.append("locks").append("unallocatedLock"), defaultLockTimeout); + return lock(lockRoot.append("unallocatedLock"), defaultLockTimeout); } /** Acquires the single cluster-global, reentrant lock for active nodes of this application */ @@ -326,11 +323,13 @@ public class CuratorDatabaseClient { return curatorDatabase.lock(path, timeout); } + private <T> Optional<T> read(Path path, Function<byte[], T> mapper) { + return curatorDatabase.getData(path).filter(data -> data.length > 0).map(mapper); + } + public Set<String> readInactiveJobs() { try { - byte[] data = curatorDatabase.getData(inactiveJobsPath()).get(); - if (data.length == 0) return new HashSet<>(); // inactive jobs has never been written - return stringSetSerializer.fromJson(data); + return read(inactiveJobsPath(), stringSetSerializer::fromJson).orElseGet(HashSet::new); } catch (RuntimeException e) { log.log(Level.WARNING, "Error reading inactive jobs, deleting inactive state"); @@ -348,33 +347,31 @@ public class CuratorDatabaseClient { } public Lock lockInactiveJobs() { - return lock(root.append("locks").append("inactiveJobsLock"), defaultLockTimeout); + return lock(lockRoot.append("inactiveJobsLock"), defaultLockTimeout); } private Path inactiveJobsPath() { return root.append("inactiveJobs"); } - public Map<NodeType, Version> readInfrastructureVersions() { - byte[] data = curatorDatabase.getData(infrastructureVersionsPath()).get(); - if (data.length == 0) return new HashMap<>(); // infrastructure versions have never been written - return InfrastructureVersionsSerializer.fromJson(data); + return read(infrastructureVersionsPath(), NodeTypeVersionsSerializer::fromJson).orElseGet(TreeMap::new); } public void writeInfrastructureVersions(Map<NodeType, Version> infrastructureVersions) { NestedTransaction transaction = new NestedTransaction(); CuratorTransaction curatorTransaction = curatorDatabase.newCuratorTransactionIn(transaction); curatorTransaction.add(CuratorOperations.setData(infrastructureVersionsPath().getAbsolute(), - InfrastructureVersionsSerializer.toJson(infrastructureVersions))); + NodeTypeVersionsSerializer.toJson(infrastructureVersions))); transaction.commit(); } public Lock lockInfrastructureVersions() { - return lock(root.append("locks").append("infrastructureVersionsLock"), defaultLockTimeout); + return lock(lockRoot.append("infrastructureVersionsLock"), defaultLockTimeout); } private Path infrastructureVersionsPath() { return root.append("infrastructureVersions"); } + } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/InfrastructureVersionsSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/InfrastructureVersionsSerializer.java deleted file mode 100644 index a48888fb4f0..00000000000 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/InfrastructureVersionsSerializer.java +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.hosted.provision.persistence; - -import com.yahoo.component.Version; -import com.yahoo.config.provision.NodeType; -import com.yahoo.slime.Cursor; -import com.yahoo.slime.Inspector; -import com.yahoo.slime.ObjectTraverser; -import com.yahoo.slime.Slime; -import com.yahoo.vespa.config.SlimeUtils; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - -/** - * @author freva - */ -class InfrastructureVersionsSerializer { - - private InfrastructureVersionsSerializer() {} - - static byte[] toJson(Map<NodeType, Version> versionsByNodeType) { - try { - Slime slime = new Slime(); - Cursor object = slime.setObject(); - versionsByNodeType.forEach((nodeType, version) -> - object.setString(NodeSerializer.toString(nodeType), version.toFullString())); - return SlimeUtils.toJsonBytes(slime); - } catch (IOException e) { - throw new RuntimeException("Serialization of a infrastructure version failed", e); - } - } - - static Map<NodeType, Version> fromJson(byte[] data) { - Map<NodeType, Version> infrastructureVersions = new HashMap<>(); - Inspector inspector = SlimeUtils.jsonToSlime(data).get(); - inspector.traverse((ObjectTraverser) (key, value) -> - infrastructureVersions.put(NodeSerializer.nodeTypeFromString(key), Version.fromString(value.asString()))); - return infrastructureVersions; - } -} 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 4d753599c4e..669f2063ee6 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 @@ -163,14 +163,12 @@ public class NodeSerializer { } private Status statusFromSlime(Inspector object) { - // TODO: Simplify after June 2017 - boolean wantToDeprovision = object.field(wantToDeprovisionKey).valid() && object.field(wantToDeprovisionKey).asBool(); return new Status(generationFromSlime(object, rebootGenerationKey, currentRebootGenerationKey), versionFromSlime(object.field(vespaVersionKey)), (int)object.field(failCountKey).asLong(), hardwareFailureDescriptionFromSlime(object), object.field(wantToRetireKey).asBool(), - wantToDeprovision, + object.field(wantToDeprovisionKey).asBool(), removeQuotedNulls(hardwareDivergenceFromSlime(object))); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeVersionsSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeVersionsSerializer.java new file mode 100644 index 00000000000..dfa79a4fd9a --- /dev/null +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeVersionsSerializer.java @@ -0,0 +1,47 @@ +// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.hosted.provision.persistence; + +import com.yahoo.component.Version; +import com.yahoo.config.provision.NodeType; +import com.yahoo.slime.Cursor; +import com.yahoo.slime.Inspector; +import com.yahoo.slime.ObjectTraverser; +import com.yahoo.slime.Slime; +import com.yahoo.vespa.config.SlimeUtils; + +import java.io.IOException; +import java.io.UncheckedIOException; +import java.util.Map; +import java.util.TreeMap; + +/** + * Serializer for version numbers that are set per node type. + * + * @author freva + * @author mpolden + */ +public class NodeTypeVersionsSerializer { + + private NodeTypeVersionsSerializer() {} + + public static byte[] toJson(Map<NodeType, Version> versions) { + Slime slime = new Slime(); + Cursor object = slime.setObject(); + versions.forEach((nodeType, version) -> object.setString(NodeSerializer.toString(nodeType), + version.toFullString())); + try { + return SlimeUtils.toJsonBytes(slime); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } + + public static Map<NodeType, Version> fromJson(byte[] data) { + Map<NodeType, Version> versions = new TreeMap<>(); // Use TreeMap to sort by node type + Inspector inspector = SlimeUtils.jsonToSlime(data).get(); + inspector.traverse((ObjectTraverser) (key, value) -> + versions.put(NodeSerializer.nodeTypeFromString(key), Version.fromString(value.asString()))); + return versions; + } + +} 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 716de252513..99ebb3e517b 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 @@ -174,9 +174,6 @@ class NodesResponse extends HttpResponse { .ifPresent(version -> { object.setString("vespaVersion", version.toFullString()); object.setString("currentDockerImage", nodeRepository.dockerImage().withTag(version).asString()); - // TODO: Remove these when they are no longer read - object.setString("hostedVersion", version.toFullString()); - object.setString("convergedStateVersion", version.toFullString()); }); object.setLong("failCount", node.status().failCount()); object.setBool("hardwareFailure", node.status().hardwareFailureDescription().isPresent()); diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/UpgradeResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/UpgradeResponse.java index 20a0139a178..3fb712e182f 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/UpgradeResponse.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/UpgradeResponse.java @@ -32,10 +32,7 @@ public class UpgradeResponse extends HttpResponse { Cursor root = slime.setObject(); Cursor versionsObject = root.setObject("versions"); - infrastructureVersions.getTargetVersions().entrySet().stream() - .sorted(Comparator.comparing(Map.Entry::getKey)) // Sort for stable tests - .forEach(entry -> - versionsObject.setString(entry.getKey().name(), entry.getValue().toFullString())); + infrastructureVersions.getTargetVersions().forEach((nodeType, version) -> versionsObject.setString(nodeType.name(), version.toFullString())); new JsonFormat(true).encode(stream, slime); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceTester.java index 740e4ff1ca4..69470cf9d4e 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceTester.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceTester.java @@ -67,4 +67,8 @@ public class MaintenanceTester { .collect(Collectors.toList()); } + public JobControl jobControl() { + return new JobControl(nodeRepository.database()); + } + } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java index 63bc04ac671..c483615203d 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java @@ -8,8 +8,6 @@ import com.yahoo.vespa.applicationmodel.ServiceInstance; import com.yahoo.vespa.applicationmodel.ServiceStatus; import com.yahoo.vespa.hosted.provision.Node; import com.yahoo.vespa.hosted.provision.NodeRepository; -import com.yahoo.vespa.orchestrator.ApplicationIdNotFoundException; -import com.yahoo.vespa.orchestrator.ApplicationStateChangeDeniedException; import org.junit.Test; import java.time.Duration; @@ -39,7 +37,7 @@ import static org.mockito.Mockito.when; public class NodeFailerTest { @Test - public void nodes_for_suspended_applications_are_not_failed() throws ApplicationStateChangeDeniedException, ApplicationIdNotFoundException { + public void nodes_for_suspended_applications_are_not_failed() { NodeFailTester tester = NodeFailTester.withTwoApplications(); tester.suspend(NodeFailTester.app1); @@ -57,7 +55,7 @@ public class NodeFailerTest { } @Test - public void node_failing() throws InterruptedException { + public void node_failing() { NodeFailTester tester = NodeFailTester.withTwoApplications(); // For a day all nodes work so nothing happens diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooterTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooterTest.java index 7e1f4f60b65..57152d12416 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooterTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooterTest.java @@ -17,7 +17,7 @@ import static org.junit.Assert.assertEquals; public class NodeRebooterTest { @Test - public void testRebootScheduling() throws InterruptedException { + public void testRebootScheduling() { Duration rebootInterval = Duration.ofMinutes(250); MaintenanceTester tester = new MaintenanceTester(); tester.createReadyTenantNodes(15); @@ -26,7 +26,7 @@ public class NodeRebooterTest { // will be performed. tester.clock.advance(rebootInterval); - NodeRebooter rebooter = new NodeRebooter(tester.nodeRepository, tester.clock, rebootInterval, new JobControl(tester.nodeRepository().database())); + NodeRebooter rebooter = new NodeRebooter(tester.nodeRepository, tester.clock, rebootInterval, tester.jobControl()); maintenanceIntervals(rebooter, tester, 1); assertEquals("All tenant nodes have reboot scheduled", diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirerTest.java index 13ac7b6f2d3..6eeeb3dfe08 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirerTest.java @@ -32,6 +32,7 @@ import static org.mockito.Mockito.when; * @author freva */ public class NodeRetirerTest { + private NodeRetirerTester tester; private NodeRetirer retirer; private final RetirementPolicy policy = mock(RetirementPolicy.class); @@ -171,4 +172,5 @@ public class NodeRetirerTest { verify(retirer, never()).retireUnallocated(); verify(retirer, never()).retireAllocated(); } + } 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 65e2b1435dc..fe65f34bae5 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 @@ -35,8 +35,6 @@ "currentRebootGeneration": 0, "vespaVersion": "5.104.142", "currentDockerImage": "docker-registry.domain.tld:8080/dist/vespa:5.104.142", - "hostedVersion": "5.104.142", - "convergedStateVersion": "5.104.142", "failCount": 0, "hardwareFailure": false, "wantToRetire": false, @@ -63,4 +61,4 @@ "127.0.0.1" ], "additionalIpAddresses": [] -}
\ No newline at end of file +} 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 9cec6d86421..86f31c5aa62 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 @@ -35,8 +35,6 @@ "currentRebootGeneration": 1, "vespaVersion": "6.43.0", "currentDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.43.0", - "hostedVersion": "6.43.0", - "convergedStateVersion": "6.43.0", "failCount": 1, "hardwareFailure": true, "hardwareFailureDescription": "memory_mcelog", 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 1b705a0ee8c..a2f72766d7f 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 @@ -35,8 +35,6 @@ "currentRebootGeneration": 0, "vespaVersion": "6.41.0", "currentDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.41.0", - "hostedVersion": "6.41.0", - "convergedStateVersion": "6.41.0", "failCount": 0, "hardwareFailure": false, "wantToRetire": false, @@ -68,4 +66,4 @@ "127.0.0.1" ], "additionalIpAddresses": [] -}
\ No newline at end of file +} 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 f8b9fb72e5e..ceb393f4bf6 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 @@ -18,8 +18,6 @@ "currentRebootGeneration": 0, "vespaVersion": "1.2.3", "currentDockerImage": "docker-registry.domain.tld:8080/dist/vespa:1.2.3", - "hostedVersion": "1.2.3", - "convergedStateVersion": "1.2.3", "failCount": 1, "hardwareFailure": false, "wantToRetire": false, |