aboutsummaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorValerij Fredriksen <valerij92@gmail.com>2019-06-08 14:43:21 +0200
committerValerij Fredriksen <valerij92@gmail.com>2019-06-08 14:45:52 +0200
commitdf1083d05f5311ba07723a30fc1777b820444096 (patch)
tree30725d98aaa8cff8d117dbc6da4104162aa1005d /configserver
parent1523544cab62ec5a0f9f62afefa63d6f6fabce2b (diff)
Let the individual handlers determine if the application is valid
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java25
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java3
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java13
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java2
4 files changed, 14 insertions, 29 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 6f907088f01..ecf300359a7 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
@@ -458,7 +458,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
private Application getApplication(ApplicationId applicationId, Optional<Version> version) {
try {
Tenant tenant = tenantRepository.getTenant(applicationId.tenant());
- if (tenant == null) throw new IllegalArgumentException("Tenant '" + applicationId.tenant() + "' not found");
+ if (tenant == null) throw new NotFoundException("Tenant '" + applicationId.tenant() + "' not found");
long sessionId = getSessionIdForApplication(tenant, applicationId);
RemoteSession session = tenant.getRemoteSessionRepo().getSession(sessionId, 0);
return session.ensureApplicationLoaded().getForVersionOrLatest(version, clock.instant());
@@ -533,10 +533,16 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
return getActiveSession(tenantRepository.getTenant(applicationId.tenant()), applicationId);
}
- public long getSessionIdForApplication(Tenant tenant, ApplicationId applicationId) {
+ public long getSessionIdForApplication(ApplicationId applicationId) {
+ Tenant tenant = tenantRepository.getTenant(applicationId.tenant());
+ if (tenant == null) throw new NotFoundException("Tenant '" + applicationId.tenant() + "' not found");
+ return getSessionIdForApplication(tenant, applicationId);
+ }
+
+ private long getSessionIdForApplication(Tenant tenant, ApplicationId applicationId) {
TenantApplications applicationRepo = tenant.getApplicationRepo();
if (applicationRepo == null)
- throw new IllegalArgumentException("Application repo for tenant '" + tenant.getName() + "' not found");
+ throw new NotFoundException("Application repo for tenant '" + tenant.getName() + "' not found");
return applicationRepo.requireActiveSessionOf(applicationId);
}
@@ -626,19 +632,6 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
// ---------------- Misc operations ----------------------------------------------------------------
- public Tenant verifyTenantAndApplication(ApplicationId applicationId) {
- TenantName tenantName = applicationId.tenant();
- if (!tenantRepository.checkThatTenantExists(tenantName)) {
- throw new IllegalArgumentException("Tenant " + tenantName + " was not found.");
- }
- Tenant tenant = tenantRepository.getTenant(tenantName);
- List<ApplicationId> applicationIds = listApplicationIds(tenant);
- if (!applicationIds.contains(applicationId)) {
- throw new IllegalArgumentException("No such application id: " + applicationId);
- }
- return tenant;
- }
-
public ApplicationMetaData getMetadataFromSession(Tenant tenant, long sessionId) {
return getLocalSession(tenant, sessionId).getMetaData();
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java
index f7a26ebd76c..5b2f6cab3c4 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java
@@ -10,6 +10,7 @@ import com.yahoo.path.Path;
import com.yahoo.text.Utf8;
import com.yahoo.transaction.Transaction;
import com.yahoo.vespa.config.server.GlobalComponentRegistry;
+import com.yahoo.vespa.config.server.NotFoundException;
import com.yahoo.vespa.config.server.ReloadHandler;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
import com.yahoo.vespa.curator.Curator;
@@ -92,7 +93,7 @@ public class TenantApplications {
/** Returns the id of the currently active session for the given application, if any. Throws on unknown applications. */
public Optional<Long> activeSessionOf(ApplicationId id) {
String data = curator.getData(applicationPath(id)).map(Utf8::toString)
- .orElseThrow(() -> new IllegalArgumentException("Unknown application '" + id + "'."));
+ .orElseThrow(() -> new NotFoundException("No such application id: '" + id + "'"));
return data.isEmpty() ? Optional.empty() : Optional.of(Long.parseLong(data));
}
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 d9592dc9352..865805d1258 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
@@ -57,7 +57,6 @@ public class ApplicationHandler extends HttpHandler {
@Override
public HttpResponse handleGET(HttpRequest request) {
ApplicationId applicationId = getApplicationIdFromRequest(request);
- Tenant tenant = verifyTenantAndApplication(applicationId);
Duration timeout = HttpHandler.getRequestTimeout(request, Duration.ofSeconds(5));
if (isServiceConvergeRequest(request)) {
@@ -74,10 +73,10 @@ public class ApplicationHandler extends HttpHandler {
}
if (isContentRequest(request)) {
- long sessionId = applicationRepository.getSessionIdForApplication(tenant, applicationId);
+ long sessionId = applicationRepository.getSessionIdForApplication(applicationId);
String contentPath = ApplicationContentRequest.getContentPath(request);
ApplicationFile applicationFile =
- applicationRepository.getApplicationFileFromSession(tenant.getName(),
+ applicationRepository.getApplicationFileFromSession(applicationId.tenant(),
sessionId,
contentPath,
ContentRequest.getApplicationFileMode(request.getMethod()));
@@ -135,14 +134,6 @@ public class ApplicationHandler extends HttpHandler {
request.getProperty("clusterId"));
}
- private Tenant verifyTenantAndApplication(ApplicationId applicationId) {
- try {
- return applicationRepository.verifyTenantAndApplication(applicationId);
- } catch (IllegalArgumentException e) {
- throw new NotFoundException(e.getMessage());
- }
- }
-
private static BindingMatch<?> getBindingMatch(HttpRequest request) {
return HttpConfigRequests.getBindingMatch(request,
// WARNING: UPDATE src/main/resources/configserver-app/services.xml IF YOU MAKE ANY CHANGES TO THESE BINDINGS!
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 a843212927b..41db57ab1e0 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
@@ -197,7 +197,7 @@ public class ApplicationHandlerTest {
ApplicationId unknown = new ApplicationId.Builder().applicationName("unknown").tenant(mytenantName).build();
HttpResponse responseForUnknown = fileDistributionStatus(unknown, zone);
assertEquals(404, responseForUnknown.getStatus());
- assertEquals("{\"error-code\":\"NOT_FOUND\",\"message\":\"No such application id: mytenant.unknown\"}",
+ assertEquals("{\"error-code\":\"NOT_FOUND\",\"message\":\"No such application id: 'mytenant.unknown'\"}",
SessionHandlerTest.getRenderedString(responseForUnknown));
}