aboutsummaryrefslogtreecommitdiffstats
path: root/standalone-container
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2019-02-14 20:33:37 +0100
committerGitHub <noreply@github.com>2019-02-14 20:33:37 +0100
commit8b87896c867b11d54f26af5878cdfe196b215561 (patch)
treec883fccc5a3129a2993665ef98345c98a4149a60 /standalone-container
parent8776510d28f2c62612eb72d51d92c253ee26762f (diff)
Revert "Revert "Use VIP status file for config server (and controller) in hosted""
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..06e49843eac 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() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public HostName loadBalancerName() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public URI ztsUrl() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public String athenzDnsSuffix() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean hostedVespa() {
+ return cloudConfigInstallVariables.hostedVespa().orElse(Boolean.FALSE);
+ }
+
+ @Override
+ public Zone zone() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Set<Rotation> rotations() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean isBootstrap() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean isFirstTimeDeployment() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean useDedicatedNodeForLogserver() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean useFdispatchByDefault() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean useAdaptiveDispatch() {
+ throw new UnsupportedOperationException();
+ }
+ }
+
}