diff options
author | Harald Musum <musum@yahoo-inc.com> | 2016-12-09 13:53:10 +0100 |
---|---|---|
committer | Harald Musum <musum@yahoo-inc.com> | 2016-12-09 13:53:10 +0100 |
commit | 7d0a8de636b8ca5b1ebe4dfc54117cec90969cc7 (patch) | |
tree | 290c044e1bc7701f394bcbd76baf109139dfa3c6 /configserver | |
parent | 2d02084e5ec773265a15f94316b18ebd95f203df (diff) |
Move tenant checking out of http layer
Diffstat (limited to 'configserver')
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), |