summaryrefslogtreecommitdiffstats
path: root/standalone-container
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2019-02-13 09:06:34 +0100
committerHarald Musum <musum@verizonmedia.com>2019-02-13 11:59:29 +0100
commit771b37e1fc85081633ee0870868f83ee4db1b3c0 (patch)
treec36dd51067090291bcb324dda5106316f750cbb0 /standalone-container
parent9b7af46ffcddc4ef24d0c7677ef45799e8ef9e8d (diff)
Use VIP status file for config server (and controller) in hosted
The code for setting up VIP status is already in place in config model, but depends on value of hostedVespa() in ModelContext.Properties, so have to make sure that is set for standalone container as well. Removing config override for vip status, as setting VIP in or out of rotation when not using a VIP status file is handled when bootstrapping now.
Diffstat (limited to 'standalone-container')
-rw-r--r--standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneContainerApplication.java109
1 files changed, 96 insertions, 13 deletions
diff --git a/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneContainerApplication.java b/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneContainerApplication.java
index a2e1e36e48f..0c671071ac5 100644
--- a/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneContainerApplication.java
+++ b/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneContainerApplication.java
@@ -15,14 +15,19 @@ import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.config.model.ApplicationConfigProducerRoot;
import com.yahoo.config.model.ConfigModelRepo;
+import com.yahoo.config.model.api.ConfigServerSpec;
+import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
import com.yahoo.config.model.application.provider.StaticConfigDefinitionRepo;
import com.yahoo.config.model.builder.xml.ConfigModelId;
import com.yahoo.config.model.builder.xml.XmlHelper;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.Environment;
+import com.yahoo.config.provision.HostName;
import com.yahoo.config.provision.RegionName;
+import com.yahoo.config.provision.Rotation;
import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.Zone;
import com.yahoo.container.di.config.SubscriberFactory;
@@ -43,12 +48,14 @@ import org.w3c.dom.Element;
import java.io.File;
import java.io.IOException;
+import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
+import java.util.Set;
import java.util.stream.Collectors;
import static com.yahoo.collections.CollectionUtil.first;
@@ -81,6 +88,7 @@ public class StandaloneContainerApplication implements Application {
private final Application configuredApplication;
private final Container container;
+ @SuppressWarnings("WeakerAccess")
@Inject
public StandaloneContainerApplication(Injector injector) {
this.injector = injector;
@@ -212,9 +220,9 @@ public class StandaloneContainerApplication implements Application {
}
}
- private static ContainerModelBuilder newContainerModelBuilder(Networking networkingOption) {
+ private static ContainerModelBuilder newContainerModelBuilder(Networking networkingOption, CloudConfigInstallVariables cloudConfigInstallVariables) {
return isConfigServer() ?
- new ConfigServerContainerModelBuilder(new CloudConfigInstallVariables()) :
+ new ConfigServerContainerModelBuilder(cloudConfigInstallVariables) :
new ContainerModelBuilder(true, networkingOption);
}
@@ -238,14 +246,16 @@ public class StandaloneContainerApplication implements Application {
.includeSourceFiles(true).preprocessedDir(preprocessedApplicationDir).build();
ApplicationPackage applicationPackage = rawApplicationPackage.preprocess(getZone(), logger);
validateApplication(applicationPackage);
- DeployState deployState = createDeployState(applicationPackage, fileRegistry, logger);
+ CloudConfigInstallVariables cloudConfigInstallVariables = new CloudConfigInstallVariables();
+ DeployState deployState = createDeployState(applicationPackage, fileRegistry, logger, cloudConfigInstallVariables);
VespaModel root = VespaModel.createIncomplete(deployState);
ApplicationConfigProducerRoot vespaRoot = new ApplicationConfigProducerRoot(root, "vespa", deployState.getDocumentModel(),
deployState.getVespaVersion(), deployState.getProperties().applicationId());
Element spec = containerRootElement(applicationPackage);
- ContainerModel containerModel = newContainerModelBuilder(networkingOption).build(deployState, root, configModelRepo, vespaRoot, spec);
+ ContainerModel containerModel = newContainerModelBuilder(networkingOption, cloudConfigInstallVariables)
+ .build(deployState, root, configModelRepo, vespaRoot, spec);
containerModel.getCluster().prepare(deployState);
initializeContainerModel(containerModel, configModelRepo);
Container container = first(containerModel.getCluster().getContainers());
@@ -274,19 +284,14 @@ public class StandaloneContainerApplication implements Application {
return new Zone(system, environment, region);
}
- private static DeployState createDeployState(ApplicationPackage applicationPackage, FileRegistry fileRegistry, DeployLogger logger) {
+ private static DeployState createDeployState(ApplicationPackage applicationPackage, FileRegistry fileRegistry,
+ DeployLogger logger, CloudConfigInstallVariables cloudConfigInstallVariables) {
DeployState.Builder builder = new DeployState.Builder()
.applicationPackage(applicationPackage)
.fileRegistry(fileRegistry)
.deployLogger(logger)
- .configDefinitionRepo(configDefinitionRepo);
-
- /* Temporarily disable until we know how status.html is updated for config servers/controllers
- if (isConfigServer())
- builder.properties(new DeployProperties.Builder()
- .hostedVespa(new CloudConfigInstallVariables().hostedVespa().orElse(Boolean.FALSE))
- .build());
- */
+ .configDefinitionRepo(configDefinitionRepo)
+ .properties(new StandaloneContainerModelContextProperties(cloudConfigInstallVariables));
return builder.build();
}
@@ -340,4 +345,82 @@ public class StandaloneContainerApplication implements Application {
return Optional.ofNullable(System.getProperty(name)); // for unit testing
}
+ private static class StandaloneContainerModelContextProperties implements ModelContext.Properties {
+ private final CloudConfigInstallVariables cloudConfigInstallVariables;
+
+ StandaloneContainerModelContextProperties(CloudConfigInstallVariables cloudConfigInstallVariables) {
+ this.cloudConfigInstallVariables = cloudConfigInstallVariables;
+ }
+
+ @Override
+ public boolean multitenant() {
+ return cloudConfigInstallVariables.multiTenant().orElse(Boolean.FALSE);
+ }
+
+ @Override
+ public ApplicationId applicationId() {
+ return ApplicationId.defaultId();
+ }
+
+ @Override
+ public List<ConfigServerSpec> configServerSpecs() {
+ return null;
+ }
+
+ @Override
+ public HostName loadBalancerName() {
+ return null;
+ }
+
+ @Override
+ public URI ztsUrl() {
+ return null;
+ }
+
+ @Override
+ public String athenzDnsSuffix() {
+ return null;
+ }
+
+ @Override
+ public boolean hostedVespa() {
+ return cloudConfigInstallVariables.hostedVespa().orElse(Boolean.FALSE);
+ }
+
+ @Override
+ public Zone zone() {
+ return null;
+ }
+
+ @Override
+ public Set<Rotation> rotations() {
+ return null;
+ }
+
+ @Override
+ public boolean isBootstrap() {
+ return false;
+ }
+
+ @Override
+ public boolean isFirstTimeDeployment() {
+ return false;
+ }
+
+ @Override
+ public boolean useDedicatedNodeForLogserver() {
+ return false;
+ }
+
+ @Override
+ public boolean useFdispatchByDefault() {
+ return false;
+ }
+
+ @Override
+ public boolean useAdaptiveDispatch() {
+ return false;
+ }
+ }
+
}