aboutsummaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorHarald Musum <musum@yahoo-inc.com>2016-12-09 13:53:10 +0100
committerHarald Musum <musum@yahoo-inc.com>2016-12-09 13:53:10 +0100
commit7d0a8de636b8ca5b1ebe4dfc54117cec90969cc7 (patch)
tree290c044e1bc7701f394bcbd76baf109139dfa3c6 /configserver
parent2d02084e5ec773265a15f94316b18ebd95f203df (diff)
Move tenant checking out of http layer
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java15
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/Utils.java17
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java28
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java6
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandler.java16
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java8
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java26
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/TenantHandler.java27
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java15
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java1
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java2
11 files changed, 82 insertions, 79 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
index 91b0fdc207b..b7843b90c6b 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
@@ -33,6 +33,7 @@ import java.io.IOException;
import java.net.URI;
import java.time.Clock;
import java.time.Duration;
+import java.util.List;
import java.util.Optional;
import java.util.logging.Logger;
@@ -195,4 +196,18 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
hostProvisioner.get().restart(applicationId, hostFilter);
}
+ public Tenant verifyTenantAndApplication(ApplicationId applicationId) {
+ Tenant tenant = tenants.checkThatTenantExists(applicationId.tenant());
+ List<ApplicationId> applicationIds = listApplicationIds(tenant);
+ if (!applicationIds.contains(applicationId)) {
+ throw new IllegalArgumentException("No such application id: " + applicationId);
+ }
+ return tenant;
+ }
+
+ private List<ApplicationId> listApplicationIds(Tenant tenant) {
+ TenantApplications applicationRepo = tenant.getApplicationRepo();
+ return applicationRepo.listApplications();
+ }
+
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/Utils.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/Utils.java
index b21dcf18a0e..95fe05ff31b 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/Utils.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/Utils.java
@@ -43,16 +43,21 @@ public class Utils {
return request.getUri().getScheme() + "://" + request.getHost() + ":" + request.getPort() + pathPrefix;
}
- public static Tenant checkThatTenantExists(Tenants tenants, TenantName tenant) {
- if (!tenants.tenantsCopy().containsKey(tenant)) {
- throw new NotFoundException("Tenant '" + tenant + "' was not found.");
+ // Wrapper for getting the right exception if it fails
+ public static Tenant checkThatTenantExists(Tenants tenants, TenantName tenantName) {
+ try {
+ return tenants.checkThatTenantExists(tenantName);
+ } catch (IllegalArgumentException e) {
+ throw new NotFoundException(e.getMessage());
}
- return tenants.tenantsCopy().get(tenant);
}
+ // Wrapper for getting the right exception if it fails
public static void checkThatTenantDoesNotExist(Tenants tenants, TenantName tenant) {
- if (tenants.tenantsCopy().containsKey(tenant)) {
- throw new BadRequestException("There already exists a tenant '" + tenant + "'");
+ try {
+ tenants.checkThatTenantDoesNotExist(tenant);
+ } catch (IllegalArgumentException e) {
+ throw new BadRequestException(e.getMessage());
}
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
index 18a3b8fb207..21e97cf0fa8 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
@@ -13,22 +13,18 @@ import com.yahoo.jdisc.Response;
import com.yahoo.jdisc.application.BindingMatch;
import com.yahoo.vespa.config.server.http.HttpConfigResponse;
import com.yahoo.vespa.config.server.tenant.Tenant;
-import com.yahoo.vespa.config.server.tenant.Tenants;
import com.yahoo.vespa.config.server.TimeoutBudget;
-import com.yahoo.vespa.config.server.application.TenantApplications;
import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.http.HttpErrorResponse;
import com.yahoo.vespa.config.server.http.HttpHandler;
import com.yahoo.vespa.config.server.http.JSONResponse;
import com.yahoo.vespa.config.server.http.NotFoundException;
-import com.yahoo.vespa.config.server.http.Utils;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import java.time.Clock;
import java.time.Duration;
-import java.util.List;
import java.util.concurrent.Executor;
/**
@@ -41,17 +37,15 @@ import java.util.concurrent.Executor;
public class ApplicationHandler extends HttpHandler {
private static final String REQUEST_PROPERTY_TIMEOUT = "timeout";
- private final Tenants tenants;
private final Zone zone;
private final ApplicationRepository applicationRepository;
- public ApplicationHandler(Executor executor, AccessLog accessLog,
- Tenants tenants,
+ public ApplicationHandler(Executor executor,
+ AccessLog accessLog,
Zone zone,
ApplicationRepository applicationRepository) {
super(executor, accessLog);
- this.tenants = tenants;
this.zone = zone;
this.applicationRepository = applicationRepository;
}
@@ -87,7 +81,7 @@ public class ApplicationHandler extends HttpHandler {
}
}
if (isServiceConvergeListRequest(request)) {
- return applicationRepository.listConfigConvergence(tenant, applicationId, request.getUri());
+ return applicationRepository.listConfigConvergence(tenant, applicationId, request.getUri());
}
return new GetApplicationResponse(Response.Status.OK, applicationRepository.getApplicationGeneration(tenant, applicationId));
}
@@ -137,12 +131,11 @@ public class ApplicationHandler extends HttpHandler {
}
private Tenant verifyTenantAndApplication(ApplicationId applicationId) {
- Tenant tenant = Utils.checkThatTenantExists(tenants, applicationId.tenant());
- List<ApplicationId> applicationIds = listApplicationIds(tenant);
- if ( ! applicationIds.contains(applicationId)) {
- throw new NotFoundException("No such application id: " + applicationId);
+ try {
+ return applicationRepository.verifyTenantAndApplication(applicationId);
+ } catch (IllegalArgumentException e) {
+ throw new NotFoundException(e.getMessage());
}
- return tenant;
}
private Duration durationFromRequestTimeout(HttpRequest request) {
@@ -153,12 +146,6 @@ public class ApplicationHandler extends HttpHandler {
return Duration.ofSeconds(timeoutInSeconds);
}
-
- private List<ApplicationId> listApplicationIds(Tenant tenant) {
- TenantApplications applicationRepo = tenant.getApplicationRepo();
- return applicationRepo.listApplications();
- }
-
// Note: Update src/main/resources/configserver-app/services.xml if you do any changes to the bindings
private static BindingMatch<?> getBindingMatch(HttpRequest request) {
return HttpConfigRequests.getBindingMatch(request,
@@ -187,7 +174,6 @@ public class ApplicationHandler extends HttpHandler {
request.getUri().getPath().contains("/serviceconverge/");
}
-
private static boolean isContentRequest(HttpRequest request) {
return getBindingMatch(request).groupCount() > 7;
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java
index a3793237fc6..5fafd42235f 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java
@@ -9,7 +9,6 @@ import com.yahoo.config.provision.Zone;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.logging.AccessLog;
-import com.yahoo.log.LogLevel;
import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.tenant.Tenant;
import com.yahoo.vespa.config.server.tenant.Tenants;
@@ -44,9 +43,8 @@ public class SessionActiveHandler extends SessionActiveHandlerBase {
@Override
protected HttpResponse handlePUT(HttpRequest request) {
TimeoutBudget timeoutBudget = getTimeoutBudget(request, SessionHandler.DEFAULT_ACTIVATE_TIMEOUT);
- TenantName tenantName = Utils.getTenantFromSessionRequest(request);
- log.log(LogLevel.DEBUG, "Found tenant '" + tenantName + "' in request");
- Tenant tenant = Utils.checkThatTenantExists(tenants, tenantName);
+ Tenant tenant = Utils.checkThatTenantExists(tenants, Utils.getTenantFromSessionRequest(request));
+ TenantName tenantName = tenant.getName();
LocalSession localSession = applicationRepository.getLocalSession(tenant, getSessionIdV2(request));
activate(request, tenant.getLocalSessionRepo(), tenant.getActivateLock(), timeoutBudget, localSession);
return new SessionActiveResponse(localSession.getMetaData().getSlime(), tenantName, request, localSession, zone);
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandler.java
index 27ffbfd2d71..1164b1b6fe1 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandler.java
@@ -2,20 +2,16 @@
package com.yahoo.vespa.config.server.http.v2;
import com.google.inject.Inject;
-import com.yahoo.config.provision.TenantName;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.logging.AccessLog;
-import com.yahoo.log.LogLevel;
import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.tenant.Tenant;
import com.yahoo.vespa.config.server.tenant.Tenants;
import com.yahoo.vespa.config.server.http.ContentHandler;
-import com.yahoo.vespa.config.server.http.NotFoundException;
import com.yahoo.vespa.config.server.http.SessionHandler;
import com.yahoo.vespa.config.server.http.Utils;
import com.yahoo.vespa.config.server.session.LocalSession;
-import com.yahoo.vespa.config.server.session.LocalSessionRepo;
import java.util.concurrent.Executor;
@@ -41,27 +37,21 @@ public class SessionContentHandler extends SessionHandler {
@Override
public HttpResponse handleGET(HttpRequest request) {
- TenantName tenantName = Utils.getTenantFromSessionRequest(request);
- log.log(LogLevel.DEBUG, "Found tenant '" + tenantName + "' in request");
- Tenant tenant = Utils.checkThatTenantExists(tenants, tenantName);
+ Tenant tenant = Utils.checkThatTenantExists(tenants, Utils.getTenantFromSessionRequest(request));
LocalSession session = applicationRepository.getLocalSession(tenant, getSessionIdV2(request));
return contentHandler.get(SessionContentRequestV2.create(request, session));
}
@Override
public HttpResponse handlePUT(HttpRequest request) {
- TenantName tenantName = Utils.getTenantFromSessionRequest(request);
- log.log(LogLevel.DEBUG, "Found tenant '" + tenantName + "' in request");
- Tenant tenant = Utils.checkThatTenantExists(tenants, tenantName);
+ Tenant tenant = Utils.checkThatTenantExists(tenants, Utils.getTenantFromSessionRequest(request));
LocalSession session = applicationRepository.getLocalSession(tenant, getSessionIdV2(request));
return contentHandler.put(SessionContentRequestV2.create(request, session));
}
@Override
public HttpResponse handleDELETE(HttpRequest request) {
- TenantName tenantName = Utils.getTenantFromSessionRequest(request);
- log.log(LogLevel.DEBUG, "Found tenant '" + tenantName + "' in request");
- Tenant tenant = Utils.checkThatTenantExists(tenants, tenantName);
+ Tenant tenant = Utils.checkThatTenantExists(tenants, Utils.getTenantFromSessionRequest(request));
LocalSession session = applicationRepository.getLocalSession(tenant, getSessionIdV2(request));
return contentHandler.delete(SessionContentRequestV2.create(request, session));
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java
index b7bbe171f9e..9931383229b 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java
@@ -9,7 +9,6 @@ import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.logging.AccessLog;
import com.yahoo.jdisc.application.UriPattern;
-import com.yahoo.log.LogLevel;
import com.yahoo.slime.Slime;
import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.tenant.Tenant;
@@ -25,7 +24,6 @@ import com.yahoo.vespa.config.server.session.LocalSession;
import java.net.URI;
import java.time.Duration;
import java.util.concurrent.Executor;
-import java.util.logging.Logger;
/**
* A handler that is able to create a session from an application package,
@@ -36,7 +34,6 @@ import java.util.logging.Logger;
* @since 5.1
*/
public class SessionCreateHandler extends SessionHandler {
- private static final Logger log = Logger.getLogger(SessionCreateHandler.class.getName());
private final Tenants tenants;
private static final String fromPattern = "http://*/application/v2/tenant/*/application/*/environment/*/region/*/instance/*";
private final ConfigserverConfig configserverConfig;
@@ -55,9 +52,8 @@ public class SessionCreateHandler extends SessionHandler {
@Override
protected HttpResponse handlePOST(HttpRequest request) {
Slime deployLog = createDeployLog();
- TenantName tenantName = Utils.getTenantFromSessionRequest(request);
- log.log(LogLevel.DEBUG, "Found tenant '" + tenantName + "' in request");
- Tenant tenant = Utils.checkThatTenantExists(tenants, tenantName);
+ Tenant tenant = Utils.checkThatTenantExists(tenants, Utils.getTenantFromSessionRequest(request));
+ TenantName tenantName = tenant.getName();
final SessionCreate sessionCreate = new SessionCreate(tenant.getSessionFactory(), tenant.getLocalSessionRepo(),
new SessionCreateResponseV2(tenant, deployLog, deployLog.get()));
TimeoutBudget timeoutBudget = SessionHandler.getTimeoutBudget(request, Duration.ofSeconds(configserverConfig.zookeeper().barrierTimeout()));
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java
index 2da3b07aeb2..b799cbf9457 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java
@@ -13,6 +13,7 @@ import com.yahoo.log.LogLevel;
import com.yahoo.slime.Slime;
import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.application.ApplicationSet;
+import com.yahoo.vespa.config.server.http.NotFoundException;
import com.yahoo.vespa.config.server.tenant.Tenant;
import com.yahoo.vespa.config.server.tenant.Tenants;
import com.yahoo.vespa.config.server.application.TenantApplications;
@@ -56,10 +57,10 @@ public class SessionPrepareHandler extends SessionHandler {
@Override
protected HttpResponse handlePUT(HttpRequest request) {
- TenantName tenantName = Utils.getTenantFromSessionRequest(request);
- Tenant tenantContext = Utils.checkThatTenantExists(tenants, tenantName);
+ Tenant tenant = getExistingTenant(request);
+ TenantName tenantName = tenant.getName();
long sessionId = getSessionIdV2(request);
- LocalSession session = applicationRepository.getLocalSession(tenantContext, getSessionIdV2(request));
+ LocalSession session = applicationRepository.getLocalSession(tenant, getSessionIdV2(request));
if (Session.Status.ACTIVATE.equals(session.getStatus())) {
throw new IllegalArgumentException("Session is active: " + sessionId);
}
@@ -72,11 +73,11 @@ public class SessionPrepareHandler extends SessionHandler {
DeployLogger logger = createLogger(rawDeployLog, verbose, appId);
ConfigChangeActions actions = session.prepare(logger,
prepParams,
- getCurrentActiveApplicationSet(tenantContext, appId),
- tenantContext.getPath());
+ getCurrentActiveApplicationSet(tenant, appId),
+ tenant.getPath());
logConfigChangeActions(actions, logger);
log.log(LogLevel.INFO, Tenants.logPre(appId) + "Session " + sessionId + " prepared successfully. ");
- return new SessionPrepareResponse(rawDeployLog, tenantContext, request, session, actions);
+ return new SessionPrepareResponse(rawDeployLog, tenant, request, session, actions);
}
private static void logConfigChangeActions(ConfigChangeActions actions, DeployLogger logger) {
@@ -94,9 +95,7 @@ public class SessionPrepareHandler extends SessionHandler {
@Override
protected HttpResponse handleGET(HttpRequest request) {
- TenantName tenantName = Utils.getTenantFromSessionRequest(request);
- log.log(LogLevel.DEBUG, "Found tenant '" + tenantName + "' in request");
- Tenant tenant = Utils.checkThatTenantExists(tenants, tenantName);
+ Tenant tenant = getExistingTenant(request);
long sessionId = getSessionIdV2(request);
RemoteSession session = applicationRepository.getRemoteSession(tenant, getSessionIdV2(request));
if (Session.Status.ACTIVATE.equals(session.getStatus()))
@@ -120,4 +119,13 @@ public class SessionPrepareHandler extends SessionHandler {
}
return currentActiveApplicationSet;
}
+
+ private Tenant getExistingTenant(HttpRequest request) {
+ TenantName tenant = Utils.getTenantFromSessionRequest(request);
+ try {
+ return tenants.checkThatTenantExists(tenant);
+ } catch (IllegalArgumentException e) {
+ throw new NotFoundException(e.getMessage());
+ }
+ }
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/TenantHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/TenantHandler.java
index e409181f4c6..7b3ec20825a 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/TenantHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/TenantHandler.java
@@ -35,13 +35,13 @@ public class TenantHandler extends HttpHandler {
@Override
protected HttpResponse handlePUT(HttpRequest request) {
- TenantName tenant = getAndValidateTenantFromRequest(request);
+ TenantName tenantName = getAndValidateTenantFromRequest(request);
try {
- tenants.writeTenantPath(tenant);
+ tenants.writeTenantPath(tenantName);
} catch (Exception e) {
throw new InternalServerException(Exceptions.toMessageString(e));
}
- return new TenantCreateResponse(tenant);
+ return new TenantCreateResponse(tenantName);
}
/**
@@ -51,10 +51,10 @@ public class TenantHandler extends HttpHandler {
* @return tenant name
*/
private TenantName getAndValidateTenantFromRequest(HttpRequest request) {
- TenantName tenant = Utils.getTenantFromRequest(request);
- Utils.checkThatTenantDoesNotExist(tenants, tenant);
- validateTenantName(tenant);
- return tenant;
+ final TenantName tenantName = Utils.getTenantFromRequest(request);
+ Utils.checkThatTenantDoesNotExist(tenants, tenantName);
+ validateTenantName(tenantName);
+ return tenantName;
}
private void validateTenantName(TenantName tenant) {
@@ -65,14 +65,14 @@ public class TenantHandler extends HttpHandler {
@Override
protected HttpResponse handleGET(HttpRequest request) {
- TenantName tenant = getExistingTenant(request);
- return new TenantGetResponse(tenant);
+ Tenant tenant = Utils.checkThatTenantExists(tenants, Utils.getTenantFromRequest(request));
+ return new TenantGetResponse(tenant.getName());
}
@Override
protected HttpResponse handleDELETE(HttpRequest request) {
- TenantName tenantName = getExistingTenant(request);
- Tenant tenant = Utils.checkThatTenantExists(tenants, tenantName);
+ Tenant tenant = Utils.checkThatTenantExists(tenants, Utils.getTenantFromRequest(request));
+ final TenantName tenantName = tenant.getName();
TenantApplications applicationRepo = tenant.getApplicationRepo();
final List<ApplicationId> activeApplications = applicationRepo.listApplications();
if (activeApplications.isEmpty()) {
@@ -88,9 +88,4 @@ public class TenantHandler extends HttpHandler {
return new TenantDeleteResponse(tenantName);
}
- private TenantName getExistingTenant(HttpRequest request) {
- TenantName tenant = Utils.getTenantFromRequest(request);
- Utils.checkThatTenantExists(tenants, tenant);
- return tenant;
- }
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java
index 5402b14a337..dcc403b620f 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java
@@ -19,7 +19,6 @@ import org.apache.curator.framework.state.ConnectionState;
import org.apache.curator.framework.state.ConnectionStateListener;
import org.apache.zookeeper.KeeperException;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -53,6 +52,7 @@ import java.util.logging.Logger;
* @author lulf
* @since 5.1.26
*/
+//TODO Rename to TenantRepository
public class Tenants implements ConnectionStateListener, PathChildrenCacheListener {
private static final Logger log = Logger.getLogger(Tenants.class.getName());
@@ -345,6 +345,19 @@ public class Tenants implements ConnectionStateListener, PathChildrenCacheListen
}
}
+ public void checkThatTenantDoesNotExist(TenantName tenant) {
+ if (tenantsCopy().containsKey(tenant)) {
+ throw new IllegalArgumentException("There already exists a tenant '" + tenant + "'");
+ }
+ }
+
+ public Tenant checkThatTenantExists(TenantName tenant) {
+ if ( ! tenantsCopy().containsKey(tenant)) {
+ throw new IllegalArgumentException("Tenant '" + tenant + "' was not found.");
+ }
+ return tenantsCopy().get(tenant);
+ }
+
private static int redeployProgress(Tenant tenant, int applicationsRedeployed, int totalNumberOfApplications) {
int size = tenant.getApplicationRepo().listApplications().size();
if (size > 0) {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java
index c629765f8fe..81ade07fd5a 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java
@@ -57,7 +57,6 @@ public class ApplicationContentHandlerTest extends ContentHandlerTestBase {
testTenantBuilder.tenants().get(tenant2).getApplicationRepo().createPutApplicationTransaction(idTenant2, 3l).commit();
handler = new ApplicationHandler(command -> command.run(),
AccessLog.voidAccessLog(),
- testTenantBuilder.createTenants(),
Zone.defaultZone(),
new ApplicationRepository(testTenantBuilder.createTenants(),
HostProvisionerProvider.empty(),
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
index 7a73e975e23..c4090c96f04 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
@@ -96,7 +96,6 @@ public class ApplicationHandlerTest {
return new ApplicationHandler(
Runnable::run,
AccessLog.voidAccessLog(),
- tenants,
Zone.defaultZone(),
new ApplicationRepository(tenants,
HostProvisionerProvider.withProvisioner(provisioner),
@@ -109,7 +108,6 @@ public class ApplicationHandlerTest {
return new ApplicationHandler(
Runnable::run,
AccessLog.voidAccessLog(),
- tenants,
Zone.defaultZone(),
new ApplicationRepository(tenants,
HostProvisionerProvider.withProvisioner(provisioner),