summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2021-01-24 21:46:51 +0100
committerHarald Musum <musum@verizonmedia.com>2021-01-24 21:46:51 +0100
commitff53ea823bdca66ad5b245299257fa73172053fd (patch)
tree7031467081ac030cc5cda11917a160ca68fea593 /configserver
parentb04cbff7a7d15dffeaa4230c2e6a1c55af66b4d0 (diff)
Throw exception if trying to add a tenant that already exists
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java7
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandlerTest.java1
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandlerTest.java3
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java9
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainerTest.java11
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java3
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java1
8 files changed, 16 insertions, 21 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java
index 15f30dc6ece..2f4fbe8caea 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java
@@ -216,6 +216,8 @@ public class TenantRepository {
}
public synchronized Tenant addTenant(TenantName tenantName) {
+ if (tenants.containsKey(tenantName)) throw new IllegalArgumentException("Tenant '" + tenantName + "' already exists");
+
writeTenantPath(tenantName);
return createTenant(tenantName, clock.instant());
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
index dae79486775..fdb36da1990 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
@@ -130,7 +130,6 @@ public class ApplicationRepositoryTest {
.withFileDistributionFactory(new MockFileDistributionFactory(configserverConfig))
.withFlagSource(flagSource)
.build();
- tenantRepository.addTenant(TenantRepository.HOSTED_VESPA_TENANT);
tenantRepository.addTenant(tenant1);
tenantRepository.addTenant(tenant2);
tenantRepository.addTenant(tenant3);
@@ -265,9 +264,8 @@ public class ApplicationRepositoryTest {
@Test
public void getLogsForHostname() {
- ApplicationId applicationId = ApplicationId.from("hosted-vespa", "tenant-host", "default");
- deployApp(testAppLogServerWithContainer, new PrepareParams.Builder().applicationId(applicationId).build());
- HttpResponse response = applicationRepository.getLogs(applicationId, Optional.of("localhost"), "");
+ deployApp(testAppLogServerWithContainer, new PrepareParams.Builder().applicationId(applicationId()).build());
+ HttpResponse response = applicationRepository.getLogs(applicationId(), Optional.of("localhost"), "");
assertEquals(200, response.getStatus());
}
@@ -280,7 +278,6 @@ public class ApplicationRepositoryTest {
// Add file reference that is not in use, but should not be deleted (not older than 14 days)
File filereferenceDir2 = createFilereferenceOnDisk(new File(fileReferencesDir, "baz"), Instant.now());
- tenantRepository.addTenant(tenant1);
applicationRepository = new ApplicationRepository.Builder()
.withTenantRepository(tenantRepository)
.withProvisioner(provisioner)
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandlerTest.java
index 176686e5843..b924d350c13 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandlerTest.java
@@ -56,7 +56,6 @@ public class HttpGetConfigHandlerTest {
TenantRepository tenantRepository = new TestTenantRepository.Builder()
.withConfigserverConfig(configserverConfig)
.build();
- tenantRepository.addTenant(tenant);
ApplicationRepository applicationRepository = new ApplicationRepository.Builder()
.withTenantRepository(tenantRepository)
.withProvisioner(new MockProvisioner())
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandlerTest.java
index ff33eb70bca..b9d09996bc5 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandlerTest.java
@@ -3,7 +3,6 @@ package com.yahoo.vespa.config.server.http;
import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.config.provision.TenantName;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.vespa.config.ConfigKey;
@@ -40,7 +39,6 @@ import static org.junit.Assert.assertTrue;
*/
public class HttpListConfigsHandlerTest {
- private static final TenantName tenant = TenantName.from("default");
private static final String baseUri = "http://foo.com:8080/config/v1/";
private final static File testApp = new File("src/test/resources/deploy/validapp");
private static final ApplicationId applicationId = ApplicationId.defaultId();
@@ -61,7 +59,6 @@ public class HttpListConfigsHandlerTest {
TenantRepository tenantRepository = new TestTenantRepository.Builder()
.withConfigserverConfig(configserverConfig)
.build();
- tenantRepository.addTenant(tenant);
ApplicationRepository applicationRepository = new ApplicationRepository.Builder()
.withTenantRepository(tenantRepository)
.withProvisioner(new MockProvisioner())
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java b/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java
index 3afd2f185a1..97e581e1969 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java
@@ -43,15 +43,16 @@ class MaintainerTester {
.withClock(clock)
.withHostProvisionerProvider(HostProvisionerProvider.withProvisioner(provisioner, true))
.withConfigserverConfig(configserverConfig)
+ .withCurator(curator)
.withModelFactoryRegistry(new ModelFactoryRegistry(List.of(new DeployTester.CountingModelFactory(clock))))
.build();
applicationRepository = new ApplicationRepository.Builder()
- .withTenantRepository(tenantRepository)
- .withProvisioner(provisioner)
- .withOrchestrator(new OrchestratorMock())
- .withLogRetriever(new MockLogRetriever())
.withClock(clock)
.withConfigserverConfig(configserverConfig)
+ .withLogRetriever(new MockLogRetriever())
+ .withOrchestrator(new OrchestratorMock())
+ .withProvisioner(provisioner)
+ .withTenantRepository(tenantRepository)
.build();
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainerTest.java
index a072bf62852..97821e9c0d6 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.maintenance;
import com.yahoo.config.provision.ApplicationId;
@@ -34,12 +34,11 @@ public class TenantsMaintainerTest {
ApplicationRepository applicationRepository = tester.applicationRepository();
File applicationPackage = new File("src/test/apps/hosted");
- TenantName shouldBeDeleted = TenantName.from("to-be-deleted");
+ TenantName shouldBeDeleted = TenantName.from("should-be-deleted");
TenantName shouldNotBeDeleted = TenantName.from("should-not-be-deleted");
tenantRepository.addTenant(shouldBeDeleted);
tenantRepository.addTenant(shouldNotBeDeleted);
- tenantRepository.addTenant(TenantRepository.HOSTED_VESPA_TENANT);
tester.deployApp(applicationPackage, prepareParams(shouldNotBeDeleted));
assertNotNull(tenantRepository.getTenant(shouldBeDeleted));
@@ -48,15 +47,15 @@ public class TenantsMaintainerTest {
clock.advance(TenantsMaintainer.defaultTtlForUnusedTenant.plus(Duration.ofDays(1)));
new TenantsMaintainer(applicationRepository, tester.curator(), new InMemoryFlagSource(), Duration.ofDays(1), clock).run();
- // One tenant should now have been deleted
+ // One tenant should have been deleted
assertNull(tenantRepository.getTenant(shouldBeDeleted));
assertNotNull(tenantRepository.getTenant(shouldNotBeDeleted));
- // System tenants should not be deleted
+ // System tenants should not have been deleted
assertNotNull(tenantRepository.getTenant(TenantName.defaultName()));
assertNotNull(tenantRepository.getTenant(TenantRepository.HOSTED_VESPA_TENANT));
- // Delete app, add tenant again and deploy
+ // Delete both apps, add tenant again and deploy
tester.applicationRepository().delete(applicationId(shouldNotBeDeleted));
tenantRepository.addTenant(shouldBeDeleted);
tester.deployApp(applicationPackage, prepareParams(shouldBeDeleted));
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java
index 135603def69..726d9e9935a 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java
@@ -89,7 +89,8 @@ public class RpcTester implements AutoCloseable {
.withHostRegistry(hostRegistry)
.withConfigserverConfig(configserverConfig)
.build();
- tenantRepository.addTenant(tenantName);
+ if (tenantRepository.getTenant(tenantName) == null)
+ tenantRepository.addTenant(tenantName);
startRpcServer();
applicationRepository = new ApplicationRepository.Builder()
.withTenantRepository(tenantRepository)
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java
index d747df7cb41..2000c73a8fa 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java
@@ -91,7 +91,6 @@ public class SessionRepositoryTest {
.withFileDistributionFactory(new MockFileDistributionFactory(configserverConfig))
.withModelFactoryRegistry(modelFactoryRegistry)
.build();
- tenantRepository.addTenant(SessionRepositoryTest.tenantName);
applicationRepository = new ApplicationRepository.Builder()
.withTenantRepository(tenantRepository)
.withProvisioner(new MockProvisioner())