use of com.yahoo.vespa.config.server.tenant.Tenant in project vespa by vespa-engine.
the class TenantHandlerTest method testDeleteTenantWithActiveApplications.
@Test
public void testDeleteTenantWithActiveApplications() throws Exception {
putSync(HttpRequest.createTestRequest("http://deploy.example.yahoo.com:80/application/v2/tenant/" + a, Method.PUT));
Tenant tenant = tenants.getTenant(a);
assertEquals(a, tenant.getName());
int sessionId = 1;
ApplicationId app = ApplicationId.from(a, ApplicationName.from("foo"), InstanceName.defaultName());
ApplicationHandlerTest.addMockApplication(tenant, app, sessionId, Clock.systemUTC());
try {
handler.handleDELETE(HttpRequest.createTestRequest("http://deploy.example.yahoo.com:80/application/v2/tenant/" + a, Method.DELETE));
fail();
} catch (BadRequestException e) {
assertThat(e.getMessage(), is("Cannot delete tenant 'a', as it has active applications: [a.foo]"));
}
}
use of com.yahoo.vespa.config.server.tenant.Tenant in project vespa by vespa-engine.
the class SessionActiveHandler method handlePUT.
@Override
protected HttpResponse handlePUT(HttpRequest request) {
final TenantName tenantName = Utils.getTenantNameFromSessionRequest(request);
Utils.checkThatTenantExists(tenants, tenantName);
Tenant tenant = tenants.getTenant(tenantName);
TimeoutBudget timeoutBudget = getTimeoutBudget(request, DEFAULT_ACTIVATE_TIMEOUT);
final Long sessionId = getSessionIdV2(request);
ApplicationId applicationId = applicationRepository.activate(tenant, sessionId, timeoutBudget, shouldIgnoreLockFailure(request), shouldIgnoreSessionStaleFailure(request));
ApplicationMetaData metaData = applicationRepository.getMetadataFromSession(tenant, sessionId);
return new SessionActiveResponse(metaData.getSlime(), request, applicationId, sessionId, zone);
}
use of com.yahoo.vespa.config.server.tenant.Tenant in project vespa by vespa-engine.
the class TenantHandler method handleDELETE.
@Override
protected HttpResponse handleDELETE(HttpRequest request) {
final TenantName tenantName = getTenantNameFromRequest(request);
Utils.checkThatTenantExists(tenants, tenantName);
// TODO: Move logic to ApplicationRepository
Tenant tenant = tenants.getTenant(tenantName);
TenantApplications applicationRepo = tenant.getApplicationRepo();
final List<ApplicationId> activeApplications = applicationRepo.listApplications();
if (activeApplications.isEmpty()) {
try {
tenants.deleteTenant(tenantName);
} catch (IllegalArgumentException e) {
throw e;
} catch (Exception e) {
throw new InternalServerException(Exceptions.toMessageString(e));
}
} else {
throw new BadRequestException("Cannot delete tenant '" + tenantName + "', as it has active applications: " + activeApplications);
}
return new TenantDeleteResponse(tenantName);
}
use of com.yahoo.vespa.config.server.tenant.Tenant in project vespa by vespa-engine.
the class SessionPrepareHandler method handleGET.
@Override
protected HttpResponse handleGET(HttpRequest request) {
Tenant tenant = getExistingTenant(request);
long sessionId = getSessionIdV2(request);
applicationRepository.validateThatRemoteSessionIsNotActive(tenant, sessionId);
applicationRepository.validateThatRemoteSessionIsPrepared(tenant, sessionId);
return new SessionPrepareResponse(createDeployLog(), tenant.getName(), request, sessionId);
}
use of com.yahoo.vespa.config.server.tenant.Tenant in project vespa by vespa-engine.
the class DeployTester method deployApp.
/**
* Do the initial "deploy" with the existing API-less code as the deploy API doesn't support first deploys yet.
*/
public ApplicationId deployApp(String appName, String vespaVersion, Instant now) {
Tenant tenant = tenant();
TimeoutBudget timeoutBudget = new TimeoutBudget(clock, Duration.ofSeconds(60));
ApplicationId id = ApplicationId.from(tenant.getName(), ApplicationName.from(appName), InstanceName.defaultName());
PrepareParams.Builder paramsBuilder = new PrepareParams.Builder().applicationId(id);
if (vespaVersion != null)
paramsBuilder.vespaVersion(vespaVersion);
long sessionId = applicationRepository.createSession(tenant, timeoutBudget, testApp, appName);
applicationRepository.prepare(tenant, sessionId, paramsBuilder.build(), now);
applicationRepository.activate(tenant, sessionId, timeoutBudget, false, false);
this.id = id;
return id;
}
Aggregations