aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository/src/test/java/com/yahoo
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-10-14 10:18:43 +0200
committerMartin Polden <mpolden@mpolden.no>2021-10-14 10:23:23 +0200
commit580785c8dab38965a84c07f6c02397a049c28ca3 (patch)
tree5847d6fda437b74ba6fa603c9c045f6f918c3491 /node-repository/src/test/java/com/yahoo
parentfa0a86f6eaf5f219e3b1a6c7cbf4c064d6b0ffa6 (diff)
Stop reading container images from ZK
Diffstat (limited to 'node-repository/src/test/java/com/yahoo')
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImagesTest.java73
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java23
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4-after-changes.json2
7 files changed, 54 insertions, 49 deletions
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java
index aaccd7b31cc..b391292884f 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java
@@ -44,6 +44,7 @@ public class NodeRepositoryTester {
Zone.defaultZone(),
new MockNameResolver().mockAnyLookup(),
DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"),
+ Optional.empty(),
new InMemoryFlagSource(),
new MemoryMetricsDb(clock),
true,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java
index 7e1def4b754..b10b4c2958a 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java
@@ -70,6 +70,7 @@ public class CapacityCheckerTester {
zone,
new MockNameResolver().mockAnyLookup(),
DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"),
+ Optional.empty(),
new InMemoryFlagSource(),
new MemoryMetricsDb(clock),
true,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java
index 7a42c3a11f0..373bfe20162 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java
@@ -32,6 +32,7 @@ import java.time.Duration;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@@ -263,6 +264,7 @@ public class SpareCapacityMaintainerTest {
new Zone(Environment.prod, RegionName.from("us-east-3")),
new MockNameResolver().mockAnyLookup(),
DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"),
+ Optional.empty(),
new InMemoryFlagSource(),
new MemoryMetricsDb(clock),
true,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImagesTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImagesTest.java
index 6f624ade97d..924787a1ca6 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImagesTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImagesTest.java
@@ -1,13 +1,22 @@
// Copyright 2020 Oath Inc. 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.component.Version;
+import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.DockerImage;
+import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
-import com.yahoo.vespa.flags.InMemoryFlagSource;
+import com.yahoo.vespa.hosted.provision.Node;
+import com.yahoo.vespa.hosted.provision.node.Allocation;
+import com.yahoo.vespa.hosted.provision.node.Generation;
+import com.yahoo.vespa.hosted.provision.node.IP;
+import com.yahoo.vespa.hosted.provision.testutils.MockNodeFlavors;
import org.junit.Test;
import java.util.Optional;
+import java.util.Set;
import static org.junit.Assert.assertEquals;
@@ -18,34 +27,46 @@ public class ContainerImagesTest {
@Test
public void image_selection() {
- var flagSource = new InMemoryFlagSource();
- var tester = new ProvisioningTester.Builder().flagSource(flagSource).build();
-
- var proxyImage = DockerImage.fromString("docker-registry.domain.tld:8080/dist/proxy");
- tester.nodeRepository().containerImages().setImage(NodeType.proxy, Optional.of(proxyImage));
-
- // Host uses tenant default image (for preload purposes)
- var defaultImage = DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa");
- var hosts = tester.makeReadyNodes(2, "default", NodeType.host);
- tester.activateTenantHosts();
- for (var host : hosts) {
- assertEquals(defaultImage, tester.nodeRepository().containerImages().imageFor(host.type()));
- }
+ DockerImage defaultImage = DockerImage.fromString("registry.example.com/vespa/default");
+ DockerImage tenantImage = DockerImage.fromString("registry.example.com/vespa/tenant");
+ ContainerImages images = new ContainerImages(defaultImage, Optional.of(tenantImage));
- // Tenant node uses tenant default image
- var resources = new NodeResources(2, 8, 50, 1);
- for (var host : hosts) {
- var nodes = tester.makeReadyChildren(2, resources, host.hostname());
- for (var node : nodes) {
- assertEquals(defaultImage, tester.nodeRepository().containerImages().imageFor(node.type()));
- }
- }
+ assertEquals(defaultImage, images.get(node(NodeType.confighost))); // For preload purposes
+ assertEquals(defaultImage, images.get(node(NodeType.config)));
+
+ assertEquals(tenantImage, images.get(node(NodeType.host))); // For preload purposes
+ assertEquals(tenantImage, images.get(node(NodeType.tenant)));
+
+ assertEquals(defaultImage, images.get(node(NodeType.proxyhost))); // For preload purposes
+ assertEquals(defaultImage, images.get(node(NodeType.proxy)));
+
+ // Tenant node requesting a special image
+ DockerImage requested = DockerImage.fromString("registry.example.com/vespa/special");
+ assertEquals(requested, images.get(node(NodeType.tenant, requested)));
+
+ // When there is no custom tenant image, the default one is used
+ images = new ContainerImages(defaultImage, Optional.empty());
+ assertEquals(defaultImage, images.get(node(NodeType.host)));
+ assertEquals(defaultImage, images.get(node(NodeType.tenant)));
+ }
+
+ private static Node node(NodeType type) {
+ return node(type, null);
+ }
- // Proxy host uses image used by child nodes (proxy nodes), which is overridden in this case (for preload purposes)
- var proxyHosts = tester.makeReadyNodes(2, "default", NodeType.proxyhost, 1);
- for (var host : proxyHosts) {
- assertEquals(proxyImage, tester.nodeRepository().containerImages().imageFor(host.type()));
+ private static Node node(NodeType type, DockerImage requested) {
+ Flavor flavor = new MockNodeFlavors().getFlavorOrThrow("default");
+ Node.Builder b = Node.create(type + "1", new IP.Config(Set.of(), Set.of()), type + "1.example.com", flavor, type);
+ if (requested != null) {
+ b.allocation(new Allocation(ApplicationId.defaultId(),
+ ClusterMembership.from("container/id1/4/37",
+ Version.fromString("1.2.3"),
+ Optional.of(requested)),
+ NodeResources.unspecified(),
+ Generation.initial(),
+ false));
}
+ return b.build();
}
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
index 4c9597d00bd..bf5f6f1738f 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
@@ -111,6 +111,7 @@ public class ProvisioningTester {
zone,
nameResolver,
containerImage,
+ Optional.empty(),
flagSource,
new MemoryMetricsDb(clock),
true,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java
index 1ab0efb42bd..30f4705812d 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java
@@ -228,7 +228,6 @@ public class NodesV2ApiTest {
Utf8.toBytes("{\"modelName\": null}"), Request.Method.PATCH),
"{\"message\":\"Updated dockerhost1.yahoo.com\"}");
tester.assertPartialResponse(new Request("http://localhost:8080/nodes/v2/node/dockerhost1.yahoo.com"), "modelName", false);
- tester.container().handleRequest((new Request("http://localhost:8080/nodes/v2/upgrade/tenant", Utf8.toBytes("{\"dockerImage\": \"ignored-registry.example.com/my/image\"}"), Request.Method.PATCH)));
((OrchestratorMock) tester.container().components().getComponent(OrchestratorMock.class.getName()))
.suspend(new HostName("host4.yahoo.com"));
@@ -679,7 +678,7 @@ public class NodesV2ApiTest {
Utf8.toBytes("{}"),
Request.Method.PATCH),
400,
- "{\"error-code\":\"BAD_REQUEST\",\"message\":\"At least one of 'version', 'osVersion' or 'dockerImage' must be set\"}");
+ "{\"error-code\":\"BAD_REQUEST\",\"message\":\"At least one of 'version' or 'osVersion' must be set\"}");
// Downgrade without force fails
tester.assertResponse(new Request("http://localhost:8080/nodes/v2/upgrade/confighost",
@@ -761,26 +760,6 @@ public class NodesV2ApiTest {
Request.Method.PATCH),
200,
"{\"message\":\"Set osVersion to null for nodes of type confighost\"}");
-
- // Set container image for config and tenant
- assertResponse(new Request("http://localhost:8080/nodes/v2/upgrade/tenant",
- Utf8.toBytes("{\"dockerImage\": \"my-repo.my-domain.example:1234/repo/tenant\"}"),
- Request.Method.PATCH),
- "{\"message\":\"Set container image to my-repo.my-domain.example:1234/repo/tenant for nodes of type tenant\"}");
- assertResponse(new Request("http://localhost:8080/nodes/v2/upgrade/config",
- Utf8.toBytes("{\"dockerImage\": \"my-repo.my-domain.example:1234/repo/image\"}"),
- Request.Method.PATCH),
- "{\"message\":\"Set container image to my-repo.my-domain.example:1234/repo/image for nodes of type config\"}");
-
- assertResponse(new Request("http://localhost:8080/nodes/v2/upgrade/"),
- "{\"versions\":{\"config\":\"6.123.456\",\"confighost\":\"6.124.42\",\"controller\":\"6.123.456\"},\"osVersions\":{\"host\":\"7.5.2\"},\"dockerImages\":{\"tenant\":\"my-repo.my-domain.example:1234/repo/tenant\",\"config\":\"my-repo.my-domain.example:1234/repo/image\"}}");
-
- // Cannot set container image for non docker node type
- tester.assertResponse(new Request("http://localhost:8080/nodes/v2/upgrade/confighost",
- Utf8.toBytes("{\"dockerImage\": \"my-repo.my-domain.example:1234/repo/image\"}"),
- Request.Method.PATCH),
- 400,
- "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Setting container image for confighost nodes is unsupported\"}");
}
@Test
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4-after-changes.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4-after-changes.json
index 6f25254b420..7770227f5f8 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4-after-changes.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4-after-changes.json
@@ -25,7 +25,7 @@
},
"restartGeneration": 1,
"currentRestartGeneration": 1,
- "wantedDockerImage": "docker-registry.domain.tld:8080/my/image:6.42.0",
+ "wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":1.0, "memoryGb":4.0, "diskGb":100.0, "bandwidthGbps":1.0, "diskSpeed":"fast", "storageType":"any" },
"orchestratorStatus": "ALLOWED_TO_BE_DOWN",