summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@yahooinc.com>2023-02-27 16:31:20 +0100
committerValerij Fredriksen <valerijf@yahooinc.com>2023-02-27 16:31:20 +0100
commitc9c6360578182ea06fa19f45c8ddc51f00b3f0c0 (patch)
tree1aefafbbb2288e45f851f1e548fafba73de545c3 /node-repository
parent6b40c6053b8542ae20a5bbe669f84f2d478fd697 (diff)
Handle archive URI without tenant name dir
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/archive/ArchiveUriManager.java9
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/archive/ArchiveUriManagerTest.java15
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/ArchiveApiTest.java4
3 files changed, 21 insertions, 7 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/archive/ArchiveUriManager.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/archive/ArchiveUriManager.java
index 27488e4027c..3ff6999f082 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/archive/ArchiveUriManager.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/archive/ArchiveUriManager.java
@@ -13,7 +13,6 @@ import com.yahoo.vespa.hosted.provision.persistence.CuratorDb;
import java.time.Duration;
import java.util.Optional;
import java.util.function.Function;
-import java.util.logging.Logger;
/**
* Thread safe class to get and set archive URI for given account and tenants.
@@ -22,7 +21,6 @@ import java.util.logging.Logger;
*/
public class ArchiveUriManager {
- private static final Logger log = Logger.getLogger(ArchiveUriManager.class.getName());
private static final Duration cacheTtl = Duration.ofMinutes(1);
private final CuratorDb db;
@@ -48,7 +46,14 @@ public class ArchiveUriManager {
archiveUris.get().accountArchiveUris().get(node.cloudAccount()) :
archiveUris.get().tenantArchiveUris().get(app.tenant()))
.map(uri -> {
+ // TODO (freva): Remove when all URIs dont have tenant name in them anymore
+ String tenantSuffix = app.tenant().value() + "/";
+ if (uri.endsWith(tenantSuffix)) return uri.substring(0, uri.length() - tenantSuffix.length());
+ return uri;
+ })
+ .map(uri -> {
StringBuilder sb = new StringBuilder(100).append(uri)
+ .append(app.tenant().value()).append('/')
.append(app.application().value()).append('/')
.append(app.instance().value()).append('/')
.append(node.allocation().get().membership().cluster().id().value()).append('/');
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/archive/ArchiveUriManagerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/archive/ArchiveUriManagerTest.java
index 8ee72d12f57..e759a0b0a7f 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/archive/ArchiveUriManagerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/archive/ArchiveUriManagerTest.java
@@ -54,10 +54,19 @@ public class ArchiveUriManagerTest {
assertFalse(archiveUriManager.archiveUriFor(createNode(null, account1)).isPresent()); // URI set for this account, but not allocated
assertFalse(archiveUriManager.archiveUriFor(createNode(null, account2)).isPresent()); // Not allocated
assertFalse(archiveUriManager.archiveUriFor(createNode(app2, null)).isPresent()); // No URI set for this tenant or account
- assertEquals("scheme://tenant-bucket/dir/music/main/default/h432a/", archiveUriManager.archiveUriFor(createNode(app1, null)).get());
- assertEquals("scheme://account-bucket/dir/music/main/default/h432a/", archiveUriManager.archiveUriFor(createNode(app1, account1)).get()); // Account has precedence
+ assertEquals("scheme://tenant-bucket/dir/vespa/music/main/default/h432a/", archiveUriManager.archiveUriFor(createNode(app1, null)).get());
+ assertEquals("scheme://account-bucket/dir/vespa/music/main/default/h432a/", archiveUriManager.archiveUriFor(createNode(app1, account1)).get()); // Account has precedence
assertFalse(archiveUriManager.archiveUriFor(createNode(app1, account2)).isPresent()); // URI set for this tenant, but is ignored because enclave account
- assertEquals("scheme://tenant-bucket/dir/music/main/default/h432a/", archiveUriManager.archiveUriFor(createNode(app1, accountSystem)).get()); // URI for tenant because non-enclave acocunt
+ assertEquals("scheme://tenant-bucket/dir/vespa/music/main/default/h432a/", archiveUriManager.archiveUriFor(createNode(app1, accountSystem)).get()); // URI for tenant because non-enclave acocunt
+ }
+
+ @Test
+ public void handles_uri_with_tenant_name() {
+ ApplicationId app1 = ApplicationId.from("vespa", "music", "main");
+ ArchiveUriManager archiveUriManager = new ProvisioningTester.Builder().build().nodeRepository().archiveUriManager();
+ archiveUriManager.setArchiveUri(app1.tenant(), Optional.of("scheme://tenant-bucket/vespa"));
+
+ assertEquals("scheme://tenant-bucket/vespa/music/main/default/h432a/", archiveUriManager.archiveUriFor(createNode(app1, null)).get());
}
private Node createNode(ApplicationId appId, CloudAccount account) {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/ArchiveApiTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/ArchiveApiTest.java
index 80d79b036e2..03581146b9f 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/ArchiveApiTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/ArchiveApiTest.java
@@ -45,8 +45,8 @@ public class ArchiveApiTest {
"{\"message\":\"Updated archive URI for 777888999000\"}");
- tester.assertPartialResponse(new Request("http://localhost:8080/nodes/v2/node/host4.yahoo.com"), "\"archiveUri\":\"ftp://host/dir/application3/instance3/id3/host4/\"", true);
- tester.assertPartialResponse(new Request("http://localhost:8080/nodes/v2/node/dockerhost2.yahoo.com"), "\"archiveUri\":\"s3://acc-bucket/zoneapp/zoneapp/node-admin/dockerhost2/\"", true);
+ tester.assertPartialResponse(new Request("http://localhost:8080/nodes/v2/node/host4.yahoo.com"), "\"archiveUri\":\"ftp://host/dir/tenant3/application3/instance3/id3/host4/\"", true);
+ tester.assertPartialResponse(new Request("http://localhost:8080/nodes/v2/node/dockerhost2.yahoo.com"), "\"archiveUri\":\"s3://acc-bucket/zoneapp/zoneapp/zoneapp/node-admin/dockerhost2/\"", true);
assertFile(new Request("http://localhost:8080/nodes/v2/archive"), "archives.json");
tester.assertResponse(new Request("http://localhost:8080/nodes/v2/archive/tenant/tenant3", new byte[0], Request.Method.DELETE), "{\"message\":\"Removed archive URI for tenant3\"}");