aboutsummaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorHarald Musum <musum@yahoo-inc.com>2016-09-15 14:36:18 +0200
committerHarald Musum <musum@yahoo-inc.com>2016-09-15 14:36:18 +0200
commitb98805c6f63b428d62e715ac64630dfe12d126ac (patch)
treee32e3eb85c42bd9c4f68e0a7927acbc8f497516e /configserver
parente45e56adbc80c3efe7b03fd3f41b46739164f023 (diff)
Refactoring to separate some business logic into ApplicationRepository
* Start refactoring, no functional changes, more to be done
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java1
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionActiveHandlerBase.java17
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java12
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java14
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java15
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java14
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java19
7 files changed, 55 insertions, 37 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 6ed1ddf6c7e..9c742bc29f9 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
@@ -2,6 +2,7 @@
package com.yahoo.vespa.config.server;
import com.yahoo.cloud.config.ConfigserverConfig;
+
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.Provisioner;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionActiveHandlerBase.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionActiveHandlerBase.java
index cc4689682dd..b54c722a7e4 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionActiveHandlerBase.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionActiveHandlerBase.java
@@ -1,39 +1,38 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
-import com.yahoo.config.provision.Provisioner;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.logging.AccessLog;
import com.yahoo.vespa.config.server.tenant.ActivateLock;
import com.yahoo.vespa.config.server.TimeoutBudget;
import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.deploy.Deployment;
-import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
import com.yahoo.vespa.config.server.session.LocalSession;
import com.yahoo.vespa.config.server.session.LocalSessionRepo;
-import java.util.Optional;
import java.util.concurrent.Executor;
/**
* @author lulf
*/
public class SessionActiveHandlerBase extends SessionHandler {
+ private final ApplicationRepository applicationRepository;
- public SessionActiveHandlerBase(Executor executor, AccessLog accessLog) {
+ public SessionActiveHandlerBase(Executor executor, AccessLog accessLog, ApplicationRepository applicationRepository ) {
super(executor, accessLog);
+ this.applicationRepository = applicationRepository;
}
protected void activate(HttpRequest request,
LocalSessionRepo localSessionRepo,
ActivateLock activateLock,
TimeoutBudget timeoutBudget,
- Optional<Provisioner> hostProvisioner,
LocalSession localSession) {
- // TODO: Use an injected applicationRepository from the callers of this instead
- // TODO: And then get rid of the activateLock and localSessionRepo arguments in deployFromPreparedSession
- ApplicationRepository applicationRepository = new ApplicationRepository(null, HostProvisionerProvider.from(hostProvisioner), null, null);
- Deployment deployment = applicationRepository.deployFromPreparedSession(localSession, activateLock, localSessionRepo, timeoutBudget.timeLeft());
+ // TODO: Get rid of the activateLock and localSessionRepo arguments in deployFromPreparedSession
+ Deployment deployment = applicationRepository.deployFromPreparedSession(localSession,
+ activateLock,
+ localSessionRepo,
+ timeoutBudget.timeLeft());
deployment.setIgnoreLockFailure(shouldIgnoreLockFailure(request));
deployment.setIgnoreSessionStaleFailure(shouldIgnoreSessionStaleFailure(request));
deployment.activate();
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 c0482ad5d99..9e49ebd1fad 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
@@ -1,7 +1,6 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
-import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
import com.yahoo.config.provision.HostFilter;
@@ -32,7 +31,6 @@ import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
import com.yahoo.vespa.config.server.session.LocalSession;
import com.yahoo.vespa.config.server.session.RemoteSession;
import com.yahoo.vespa.config.server.session.RemoteSessionRepo;
-import com.yahoo.vespa.curator.Curator;
import java.io.IOException;
import java.time.Clock;
@@ -59,18 +57,20 @@ public class ApplicationHandler extends HttpHandler {
private final LogServerLogGrabber logServerLogGrabber;
private final ApplicationRepository applicationRepository;
- public ApplicationHandler(Executor executor, AccessLog accessLog, Tenants tenants,
- HostProvisionerProvider hostProvisionerProvider, Zone zone,
+ public ApplicationHandler(Executor executor, AccessLog accessLog,
+ Tenants tenants,
+ HostProvisionerProvider hostProvisionerProvider,
+ Zone zone,
ApplicationConvergenceChecker convergeChecker,
LogServerLogGrabber logServerLogGrabber,
- ConfigserverConfig configserverConfig, Curator curator) {
+ ApplicationRepository applicationRepository) {
super(executor, accessLog);
this.tenants = tenants;
this.hostProvisioner = hostProvisionerProvider.getHostProvisioner();
this.zone = zone;
this.convergeChecker = convergeChecker;
this.logServerLogGrabber = logServerLogGrabber;
- this.applicationRepository = new ApplicationRepository(tenants, hostProvisionerProvider, configserverConfig, curator);
+ this.applicationRepository = applicationRepository;
}
@Override
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 89463a0b8ee..af8288374f3 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
@@ -1,24 +1,22 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
-import java.util.Optional;
import java.util.concurrent.Executor;
import com.google.inject.Inject;
-import com.yahoo.config.provision.Provisioner;
import com.yahoo.config.provision.TenantName;
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;
import com.yahoo.vespa.config.server.TimeoutBudget;
import com.yahoo.vespa.config.server.http.SessionActiveHandlerBase;
import com.yahoo.vespa.config.server.http.SessionHandler;
import com.yahoo.vespa.config.server.http.Utils;
-import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
import com.yahoo.vespa.config.server.session.LocalSession;
/**
@@ -30,18 +28,16 @@ import com.yahoo.vespa.config.server.session.LocalSession;
public class SessionActiveHandler extends SessionActiveHandlerBase {
private final Tenants tenants;
- private final Optional<Provisioner> hostProvisioner;
private final Zone zone;
@Inject
public SessionActiveHandler(Executor executor,
AccessLog accessLog,
Tenants tenants,
- HostProvisionerProvider hostProvisionerProvider,
- Zone zone) {
- super(executor, accessLog);
+ Zone zone,
+ ApplicationRepository applicationRepository) {
+ super(executor, accessLog, applicationRepository);
this.tenants = tenants;
- this.hostProvisioner = hostProvisionerProvider.getHostProvisioner();
this.zone = zone;
}
@@ -52,7 +48,7 @@ public class SessionActiveHandler extends SessionActiveHandlerBase {
log.log(LogLevel.DEBUG, "Found tenant '" + tenantName + "' in request");
Tenant tenant = Utils.checkThatTenantExists(tenants, tenantName);
LocalSession localSession = getSessionFromRequestV2(tenant.getLocalSessionRepo(), request);
- activate(request, tenant.getLocalSessionRepo(), tenant.getActivateLock(), timeoutBudget, hostProvisioner, localSession);
+ activate(request, tenant.getLocalSessionRepo(), tenant.getActivateLock(), timeoutBudget, localSession);
return new SessionActiveResponse(localSession.getMetaData().getSlime(), tenantName, request, localSession, zone);
}
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 f92bfa7d866..c5925104484 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
@@ -1,6 +1,7 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
+import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.Zone;
@@ -9,9 +10,11 @@ import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.logging.AccessLog;
import com.yahoo.jdisc.Response;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.http.ContentHandlerTestBase;
import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
import com.yahoo.vespa.config.server.session.Session;
+import com.yahoo.vespa.curator.mock.MockCurator;
import org.junit.Before;
import org.junit.Test;
@@ -51,7 +54,17 @@ public class ApplicationContentHandlerTest extends ContentHandlerTestBase {
testTenantBuilder.tenants().get(tenant2).getLocalSessionRepo().addSession(new MockSession(3l, FilesApplicationPackage.fromFile(new File("src/test/apps/content2"))));
testTenantBuilder.tenants().get(tenant1).getApplicationRepo().createPutApplicationTransaction(idTenant1, 2l).commit();
testTenantBuilder.tenants().get(tenant2).getApplicationRepo().createPutApplicationTransaction(idTenant2, 3l).commit();
- handler = new ApplicationHandler(command -> command.run(), AccessLog.voidAccessLog(), testTenantBuilder.createTenants(), HostProvisionerProvider.empty(), Zone.defaultZone(), null, null, null, null);
+ handler = new ApplicationHandler(command -> command.run(),
+ AccessLog.voidAccessLog(),
+ testTenantBuilder.createTenants(),
+ HostProvisionerProvider.empty(),
+ Zone.defaultZone(),
+ null,
+ null,
+ new ApplicationRepository(testTenantBuilder.createTenants(),
+ HostProvisionerProvider.empty(),
+ new ConfigserverConfig(new ConfigserverConfig.Builder()),
+ new MockCurator()));
pathPrefix = createPath(idTenant1, Zone.defaultZone());
baseUrl = baseServer + pathPrefix;
}
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 a1a4a3413ba..7bd4a26180f 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
@@ -2,6 +2,7 @@
package com.yahoo.vespa.config.server.http.v2;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.NullConfigModelRegistry;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
@@ -15,6 +16,7 @@ import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.logging.AccessLog;
import com.yahoo.jdisc.Response;
import com.yahoo.path.Path;
+import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.GlobalComponentRegistry;
import com.yahoo.vespa.config.server.MockReloadHandler;
import com.yahoo.vespa.config.server.SuperModelGenerationCounter;
@@ -100,8 +102,10 @@ public class ApplicationHandlerTest {
Zone.defaultZone(),
convergeChecker,
logServerLogGrabber,
- null,
- null);
+ new ApplicationRepository(tenants,
+ HostProvisionerProvider.withProvisioner(provisioner),
+ new ConfigserverConfig(new ConfigserverConfig.Builder()),
+ new MockCurator()));
}
private ApplicationHandler createApplicationHandler(Tenants tenants) {
@@ -113,8 +117,10 @@ public class ApplicationHandlerTest {
Zone.defaultZone(),
new ApplicationConvergenceChecker(stateApiFactory),
new LogServerLogGrabber(),
- null,
- null);
+ new ApplicationRepository(tenants,
+ HostProvisionerProvider.withProvisioner(provisioner),
+ new ConfigserverConfig(new ConfigserverConfig.Builder()),
+ new MockCurator()));
}
@Test
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java
index 0b0c4ad0629..0af43649351 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java
@@ -5,8 +5,9 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
-import java.util.concurrent.Executor;
+import java.util.Optional;
+import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.config.provision.*;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.logging.AccessLog;
@@ -158,13 +159,15 @@ public class SessionActiveHandlerTest extends SessionActiveHandlerTestBase {
.withRemoteSessionRepo(remoteSessionRepo)
.withApplicationRepo(applicationRepo)
.build();
- return new SessionActiveHandler(new Executor() {
- @SuppressWarnings("NullableProblems")
- @Override
- public void execute(Runnable command) {
- command.run();
- }
- }, AccessLog.voidAccessLog(), testTenantBuilder.createTenants(), HostProvisionerProvider.withProvisioner(hostProvisioner), Zone.defaultZone());
+ return new SessionActiveHandler(
+ Runnable::run,
+ AccessLog.voidAccessLog(),
+ testTenantBuilder.createTenants(),
+ Zone.defaultZone(),
+ new ApplicationRepository(testTenantBuilder.createTenants(),
+ HostProvisionerProvider.withProvisioner(hostProvisioner),
+ new ConfigserverConfig(new ConfigserverConfig.Builder()),
+ curator));
}
public static class MockProvisioner implements Provisioner {