diff options
author | Harald Musum <musum@verizonmedia.com> | 2021-01-24 21:46:51 +0100 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2021-01-24 21:46:51 +0100 |
commit | ff53ea823bdca66ad5b245299257fa73172053fd (patch) | |
tree | 7031467081ac030cc5cda11917a160ca68fea593 /configserver | |
parent | b04cbff7a7d15dffeaa4230c2e6a1c55af66b4d0 (diff) |
Throw exception if trying to add a tenant that already exists
Diffstat (limited to 'configserver')
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()) |