aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2024-06-17 14:18:50 +0200
committerGitHub <noreply@github.com>2024-06-17 14:18:50 +0200
commitd5aa7bb8a9c40e08c7580c6e95cebaf537ca2ea4 (patch)
tree6779053434bd6b3a990b5440bc2938024b7050fc
parent04111a792621846fd4fed77b4945e2ccc400433b (diff)
parentcda9cb3321a4fb7e12e40f61d66174205c0ee3cd (diff)
Merge pull request #31589 from vespa-engine/mpolden/logcontainer
Add container on logserver in non-hosted environment
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainer.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java27
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/deploy/SystemModelTestCase.java12
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java36
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java7
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java4
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java12
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java6
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java8
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java5
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java19
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java8
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationApiHandlerTest.java4
15 files changed, 97 insertions, 59 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java b/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java
index e2c6b788b02..4ef591cda9f 100644
--- a/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java
+++ b/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java
@@ -84,7 +84,7 @@ public class AdminModel extends ConfigModel {
}
TreeConfigProducer<AnyConfigProducer> parent = modelContext.getParentProducer();
ModelContext.Properties properties = modelContext.getDeployState().getProperties();
- DomAdminV2Builder domBuilder = new DomAdminV2Builder(modelContext.getApplicationType(),
+ DomAdminV2Builder domBuilder = new DomAdminV2Builder(modelContext,
properties.multitenant(),
properties.configServerSpecs());
model.admin = domBuilder.build(modelContext.getDeployState(), parent, adminElement);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainer.java
index a513cc673dd..db9f97451b8 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainer.java
@@ -8,14 +8,12 @@ import com.yahoo.vespa.model.container.Container;
/**
* Container that should be running on same host as the logserver. Sets up a handler for getting logs from logserver.
- * Only in use in hosted Vespa.
*/
public class LogserverContainer extends Container {
public LogserverContainer(TreeConfigProducer<?> parent, DeployState deployState) {
super(parent, "" + 0, 0, deployState);
- if (deployState.isHosted() && deployState.getProperties().applicationId().instance().isTester())
- useDynamicPorts();
+ useDynamicPorts();
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
index 692de1769d3..a5cf9df45a1 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
@@ -12,15 +12,18 @@ import com.yahoo.vespa.model.SimpleConfigProducer;
import com.yahoo.vespa.model.admin.Admin;
import com.yahoo.vespa.model.admin.Configserver;
import com.yahoo.vespa.model.admin.Logserver;
+import com.yahoo.vespa.model.admin.LogserverContainer;
+import com.yahoo.vespa.model.admin.LogserverContainerCluster;
import com.yahoo.vespa.model.admin.Slobrok;
import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerCluster;
import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerContainer;
import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerContainerCluster;
import com.yahoo.vespa.model.admin.otel.OpenTelemetryCollector;
-import com.yahoo.vespa.model.admin.otel.OpenTelemetryConfigGenerator;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder.DomConfigProducerBuilderBase;
import com.yahoo.vespa.model.container.Container;
+import com.yahoo.vespa.model.container.ContainerModel;
import org.w3c.dom.Element;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -35,10 +38,13 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
private static final String ATTRIBUTE_CLUSTER_CONTROLLER_STANDALONE_ZK = "standalone-zookeeper";
- public DomAdminV2Builder(ConfigModelContext.ApplicationType applicationType,
+ private final ConfigModelContext context;
+
+ public DomAdminV2Builder(ConfigModelContext context,
boolean multitenant,
List<ConfigServerSpec> configServerSpecs) {
- super(applicationType, multitenant, configServerSpecs);
+ super(context.getApplicationType(), multitenant, configServerSpecs);
+ this.context = context;
}
private void addOtelcol(TreeConfigProducer<?> parent, DeployState deployState, HostResource hostResource) {
@@ -52,6 +58,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
List<Configserver> configservers = parseConfigservers(deployState, admin, adminE);
var logserver = parseLogserver(deployState, admin, adminE);
admin.setLogserver(logserver);
+ createContainerOnLogserverHost(deployState, admin, logserver.getHostResource());
if (deployState.featureFlags().logserverOtelCol()) {
// for manual testing
addOtelcol(admin, deployState, logserver.getHostResource());
@@ -65,6 +72,20 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
addLoggingSpecs(new ModelElement(adminE).child("logging"), admin);
}
+ private void createContainerOnLogserverHost(DeployState deployState, Admin admin, HostResource hostResource) {
+ LogserverContainerCluster logServerCluster = new LogserverContainerCluster(admin, "logs", deployState);
+ ContainerModel logserverClusterModel = new ContainerModel(context.withParent(admin).withId(logServerCluster.getSubId()));
+ logserverClusterModel.setCluster(logServerCluster);
+
+ LogserverContainer container = new LogserverContainer(logServerCluster, deployState);
+ container.setHostResource(hostResource);
+ container.initService(deployState);
+ logServerCluster.addContainer(container);
+ admin.addAndInitializeService(deployState, hostResource, container);
+ admin.setLogserverContainerCluster(logServerCluster);
+ context.getConfigModelRepoAdder().add(logserverClusterModel);
+ }
+
private List<Configserver> parseConfigservers(DeployState deployState, Admin admin, Element adminE) {
List<Configserver> configservers;
if (multitenant)
diff --git a/config-model/src/test/java/com/yahoo/config/model/deploy/SystemModelTestCase.java b/config-model/src/test/java/com/yahoo/config/model/deploy/SystemModelTestCase.java
index f9f74546a00..8a184e414d7 100644
--- a/config-model/src/test/java/com/yahoo/config/model/deploy/SystemModelTestCase.java
+++ b/config-model/src/test/java/com/yahoo/config/model/deploy/SystemModelTestCase.java
@@ -62,7 +62,7 @@ public class SystemModelTestCase {
VespaModel vespaModel = getVespaModelDoNotValidateXml(TESTDIR + "simpleconfig/");
assertNotNull(vespaModel);
- assertEquals(4, vespaModel.configModelRepo().asMap().size(), "There are two instances of the simple model + Routing and AdminModel (set up implicitly)");
+ assertEquals(5, vespaModel.configModelRepo().asMap().size(), "There are two instances of the simple model + Routing, Logs and AdminModel (set up implicitly)");
assertNotNull(vespaModel.configModelRepo().asMap().get("simple"), "One gets the default name as there is no explicit id");
assertNotNull(vespaModel.configModelRepo().asMap().get("second"), "The other gets the explicit id as name");
@@ -116,9 +116,9 @@ public class SystemModelTestCase {
assertEquals(host1, host2);
assertEquals(host2, host3);
- // all three host aliases are for the same host, so the number of services should be 3 + 8
- // (3 simpleservices and logd, configproxy, config sentinel, admin server config server, slobrok, logserver and metricsproxy)
- assertEquals(10, host1.getServices().size());
+ // all three host aliases are for the same host, so the number of services should be 3 + 9
+ // (3 simpleservices and logd, configproxy, config sentinel, admin server config server, slobrok, logserver, logserver-container and metricsproxy)
+ assertEquals(11, host1.getServices().size());
assertNotNull(host1.getService("simpleservice"));
assertNotNull(host1.getService("simpleservice2"));
@@ -145,7 +145,7 @@ public class SystemModelTestCase {
assertNotNull(vespaModel);
ApplicationConfigProducerRoot root = vespaModel.getVespa();
- assertEquals(5, vespaModel.configModelRepo().asMap().size());
+ assertEquals(6, vespaModel.configModelRepo().asMap().size());
assertTrue(vespaModel.configModelRepo().asMap().containsKey("simple"));
assertTrue(vespaModel.configModelRepo().asMap().containsKey("api"));
assertTrue(root.getConfigIds().contains("simple/simpleservice.0"));
@@ -155,6 +155,8 @@ public class SystemModelTestCase {
// Verify that configModelRegistry iterates in dependency order
Iterator<ConfigModel> i = vespaModel.configModelRepo().iterator();
ConfigModel plugin = i.next();
+ assertEquals("logs", plugin.getId());
+ plugin = i.next();
assertEquals("admin", plugin.getId());
plugin = i.next();
assertEquals("simple", plugin.getId());
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java
index adf570c4664..96c6b1f99eb 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java
@@ -50,8 +50,8 @@ public class AdminTestCase {
void testAdmin20() {
VespaModel vespaModel = getVespaModel(TESTDIR + "adminconfig20");
- // Verify that the admin plugin has been loaded (always loads routing).
- assertEquals(2, vespaModel.configModelRepo().asMap().size());
+ // Verify that the admin plugin has been loaded (always loads 'routing' and 'logs')
+ assertEquals(3, vespaModel.configModelRepo().asMap().size());
ApplicationConfigProducerRoot root = vespaModel.getVespa();
assertNotNull(root);
@@ -81,10 +81,10 @@ public class AdminTestCase {
StateserverConfig.Builder ssb = new StateserverConfig.Builder();
vespaModel.getConfig(ssb, "admin/slobrok.0");
- assertEquals(19100, new StateserverConfig(ssb).httpport());
+ assertEquals(19103, new StateserverConfig(ssb).httpport());
vespaModel.getConfig(ssb, "admin/slobrok.1");
- assertEquals(19102, new StateserverConfig(ssb).httpport());
+ assertEquals(19105, new StateserverConfig(ssb).httpport());
LogdConfig.Builder lb = new LogdConfig.Builder();
vespaModel.getConfig(lb, "admin/slobrok.0");
@@ -98,12 +98,13 @@ public class AdminTestCase {
SentinelConfig.Builder b = new SentinelConfig.Builder();
vespaModel.getConfig(b, localhostConfigId);
SentinelConfig sentinelConfig = new SentinelConfig(b);
- assertEquals(5, sentinelConfig.service().size());
+ assertEquals(6, sentinelConfig.service().size());
assertEquals("logserver", sentinelConfig.service(0).name());
- assertEquals("slobrok", sentinelConfig.service(1).name());
- assertEquals("slobrok2", sentinelConfig.service(2).name());
- assertEquals(METRICS_PROXY_CONTAINER.serviceName, sentinelConfig.service(3).name());
- assertEquals("logd", sentinelConfig.service(4).name());
+ assertEquals("logserver-container", sentinelConfig.service(1).name());
+ assertEquals("slobrok", sentinelConfig.service(2).name());
+ assertEquals("slobrok2", sentinelConfig.service(3).name());
+ assertEquals(METRICS_PROXY_CONTAINER.serviceName, sentinelConfig.service(4).name());
+ assertEquals("logd", sentinelConfig.service(5).name());
}
/**
@@ -114,8 +115,8 @@ public class AdminTestCase {
void testOnlyAdminserver() {
VespaModel vespaModel = getVespaModel(TESTDIR + "simpleadminconfig20");
- // Verify that the admin plugin has been loaded (always loads routing).
- assertEquals(2, vespaModel.configModelRepo().asMap().size());
+ // Verify that the admin plugin has been loaded (always loads 'routing' and 'logs')
+ assertEquals(3, vespaModel.configModelRepo().asMap().size());
ApplicationConfigProducerRoot root = vespaModel.getVespa();
assertNotNull(root);
@@ -134,11 +135,12 @@ public class AdminTestCase {
SentinelConfig.Builder b = new SentinelConfig.Builder();
vespaModel.getConfig(b, localhostConfigId);
SentinelConfig sentinelConfig = new SentinelConfig(b);
- assertEquals(4, sentinelConfig.service().size());
+ assertEquals(5, sentinelConfig.service().size());
assertEquals("logserver", sentinelConfig.service(0).name());
- assertEquals("slobrok", sentinelConfig.service(1).name());
- assertEquals(METRICS_PROXY_CONTAINER.serviceName, sentinelConfig.service(2).name());
- assertEquals("logd", sentinelConfig.service(3).name());
+ assertEquals("logserver-container", sentinelConfig.service(1).name());
+ assertEquals("slobrok", sentinelConfig.service(2).name());
+ assertEquals(METRICS_PROXY_CONTAINER.serviceName, sentinelConfig.service(3).name());
+ assertEquals("logd", sentinelConfig.service(4).name());
assertEquals(-1, sentinelConfig.service(0).affinity().cpuSocket());
assertTrue(sentinelConfig.service(0).preShutdownCommand().isEmpty());
@@ -175,8 +177,8 @@ public class AdminTestCase {
void testMultipleConfigServers() {
VespaModel vespaModel = getVespaModel(TESTDIR + "multipleconfigservers");
- // Verify that the admin plugin has been loaded (always loads routing).
- assertEquals(2, vespaModel.configModelRepo().asMap().size());
+ // Verify that the admin plugin has been loaded (always loads 'routing' and 'logs')
+ assertEquals(3, vespaModel.configModelRepo().asMap().size());
ApplicationConfigProducerRoot root = vespaModel.getVespa();
assertNotNull(root);
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
index ac431f081ed..0acacc340eb 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
@@ -150,7 +150,7 @@ public class MetricsProxyContainerTest {
@Test
void vespa_services_config_has_all_services() {
VespaServicesConfig vespaServicesConfig = getVespaServicesConfig(hostedServicesWithContent());
- assertEquals(10, vespaServicesConfig.service().size());
+ assertEquals(11, vespaServicesConfig.service().size());
for (var service : vespaServicesConfig.service()) {
if (service.configId().equals("admin/cluster-controllers/0")) {
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java
index f68a1da7dfb..0f7113748dd 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java
@@ -57,10 +57,11 @@ public class ConfigValueChangeValidatorTest {
createVespaModel(createQrStartConfigSegment(true, 2096)),
createVespaModel(createQrStartConfigSegment(false, 2096))
);
- assertEquals(3, changes.size());
+ assertEquals(4, changes.size());
assertComponentsEquals(changes, "default/container.0", 0);
- assertComponentsEquals(changes, "admin/cluster-controllers/0", 1);
- assertComponentsEquals(changes, "admin/metrics/localhost", 2);
+ assertComponentsEquals(changes, "admin/logs/0", 1);
+ assertComponentsEquals(changes, "admin/cluster-controllers/0", 2);
+ assertComponentsEquals(changes, "admin/metrics/localhost", 3);
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java
index 3144748e7cc..052d32269ef 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java
@@ -157,7 +157,7 @@ public class ContentBuilderTest extends DomBuilderTest {
assertEquals("clu/storage/0", c.getRootGroup().getNodes().get(0).getConfigId()); // Due to reuse.
assertEquals(1, c.getRoot().hostSystem().getHosts().size());
HostResource h = c.getRoot().hostSystem().getHost("mockhost");
- String [] expectedServices = {"configserver", "logserver", "logd", "container-clustercontroller", "metricsproxy-container", "slobrok", "configproxy", "config-sentinel", "container", "storagenode", "searchnode", "distributor"};
+ String [] expectedServices = {"configserver", "logserver", "logserver-container", "logd", "container-clustercontroller", "metricsproxy-container", "slobrok", "configproxy", "config-sentinel", "container", "storagenode", "searchnode", "distributor"};
assertServices(h, expectedServices);
assertEquals("clu/storage/0", h.getService("storagenode").getConfigId());
assertEquals("clu/search/cluster.clu/0", h.getService("searchnode").getConfigId());
@@ -205,7 +205,7 @@ public class ContentBuilderTest extends DomBuilderTest {
HostResource h = cluster.getRoot().hostSystem().getHost("mockhost");
String [] expectedServices = {
"logd", "configproxy", "config-sentinel", "configserver", "container", "logserver",
- "slobrok", "storagenode", "distributor", "searchnode",
+ "logserver-container", "slobrok", "storagenode", "distributor", "searchnode",
CLUSTERCONTROLLER_CONTAINER.serviceName, METRICS_PROXY_CONTAINER.serviceName
};
assertServices(h, expectedServices);
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java
index 0e616661191..feeff452a91 100755
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java
@@ -17,6 +17,7 @@ import com.yahoo.vespa.model.admin.monitoring.Monitoring;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.w3c.dom.Element;
+
import java.util.ArrayList;
import java.util.List;
@@ -196,14 +197,21 @@ public class DomAdminV2BuilderTest extends DomBuilderTest {
assertEquals(1, admin.getConfigservers().size());
}
+ @Test
+ void containerOnLogserver() {
+ Admin admin = buildAdmin(servicesAdminNoAdminServerOrConfigServer());
+ assertTrue(admin.getLogServerContainerCluster().isPresent());
+ assertEquals("logs", admin.getLogServerContainerCluster().get().getName());
+ }
+
private Admin buildAdmin(Element xml) {
return buildAdmin(xml, false, new ArrayList<>());
}
private Admin buildAdmin(Element xml, boolean multitenant, List<ConfigServerSpec> configServerSpecs) {
DeployState deployState = DeployState.createTestState();
- final DomAdminV2Builder domAdminBuilder =
- new DomAdminV2Builder(ConfigModelContext.ApplicationType.DEFAULT, multitenant, configServerSpecs);
+ ConfigModelContext context = ConfigModelContext.create(deployState, null, (m) -> {}, root, "foo");
+ DomAdminV2Builder domAdminBuilder = new DomAdminV2Builder(context, multitenant, configServerSpecs);
Admin admin = domAdminBuilder.build(deployState, root, xml);
admin.addPerHostServices(root.hostSystem().getHosts(), deployState);
return admin;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java
index 8b83c941631..2a81f2da286 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java
@@ -111,9 +111,9 @@ public class ClusterTest {
assertEquals(1, nodesConfig.node(1).key());
assertEquals(2, nodesConfig.node(2).key());
- assertEquals(19106, nodesConfig.node(0).port());
- assertEquals(19118, nodesConfig.node(1).port());
- assertEquals(19130, nodesConfig.node(2).port());
+ assertEquals(19109, nodesConfig.node(0).port());
+ assertEquals(19121, nodesConfig.node(1).port());
+ assertEquals(19133, nodesConfig.node(2).port());
assertEquals(0, nodesConfig.node(0).group());
assertEquals(0, nodesConfig.node(1).group());
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java
index c7d9ae6b818..2fda76d0d82 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java
@@ -20,9 +20,6 @@ import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.config.model.test.TestDriver;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.config.provision.Environment;
-import com.yahoo.config.provision.RegionName;
-import com.yahoo.config.provision.Zone;
import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.messagebus.MessagebusConfig;
import com.yahoo.net.HostName;
@@ -37,6 +34,7 @@ import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.xml.sax.SAXException;
+
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
@@ -265,9 +263,9 @@ public class VespaModelTestCase {
assertEquals(1, admin.getConfigservers().size());
Set<HostInfo> hosts = model.getHosts();
assertEquals(1, hosts.size());
- //logd, config proxy, sentinel, config server, slobrok, log server
+ // logd, config proxy, sentinel, config server, slobrok, logserver, logserver container
HostInfo host = hosts.iterator().next();
- assertEquals(7, host.getServices().size());
+ assertEquals(8, host.getServices().size());
new LogdConfig((LogdConfig.Builder) model.getConfig(new LogdConfig.Builder(), "admin/model"));
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
index f1bf7a918e7..b5c1d9779c9 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
@@ -547,7 +547,10 @@ public class ApplicationRepositoryTest {
list.add(new NetworkPorts.Allocation(19100, "container", "container/container.0", "http/1"));
list.add(new NetworkPorts.Allocation(19101, "container", "container/container.0", "messaging"));
list.add(new NetworkPorts.Allocation(19102, "container", "container/container.0", "rpc/admin"));
- list.add(new NetworkPorts.Allocation(19103, "slobrok", "admin/slobrok.0", "http"));
+ list.add(new NetworkPorts.Allocation(19103, "logserver-container", "admin/logs/0", "http"));
+ list.add(new NetworkPorts.Allocation(19104, "logserver-container", "admin/logs/0", "http/1"));
+ list.add(new NetworkPorts.Allocation(19105, "logserver-container", "admin/logs/0", "rpc/admin"));
+ list.add(new NetworkPorts.Allocation(19106, "slobrok", "admin/slobrok.0", "http"));
AllocatedHosts info = session.getAllocatedHosts();
assertNotNull(info);
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java
index 68add64ddd9..ec000951684 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java
@@ -139,6 +139,13 @@ public class DeployTester {
* Do the initial "deploy" with the existing API-less code as the deploy API doesn't support first deploys yet.
*/
public PrepareResult deployApp(String applicationPath, String vespaVersion) {
+ return deployApp(applicationPath, new PrepareParams.Builder().vespaVersion(vespaVersion));
+ }
+
+ /**
+ * Do the initial "deploy" with the existing API-less code as the deploy API doesn't support first deploys yet.
+ */
+ public PrepareResult deployApp(String applicationPath, PrepareParams.Builder paramsBuilder) {
String endpoints = """
[
{
@@ -151,15 +158,9 @@ public class DeployTester {
}
]
""";
- return deployApp(applicationPath, new PrepareParams.Builder().containerEndpoints(endpoints).vespaVersion(vespaVersion));
- }
-
- /**
- * Do the initial "deploy" with the existing API-less code as the deploy API doesn't support first deploys yet.
- */
- public PrepareResult deployApp(String applicationPath, PrepareParams.Builder paramsBuilder) {
- paramsBuilder.applicationId(applicationId)
- .timeoutBudget(new TimeoutBudget(clock, Duration.ofSeconds(60)));
+ paramsBuilder.applicationId(applicationId)
+ .timeoutBudget(new TimeoutBudget(clock, Duration.ofSeconds(60)))
+ .containerEndpoints(endpoints);
return applicationRepository.deploy(new File(applicationPath), paramsBuilder.build());
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java
index 512f4dff6b7..a82052b6356 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java
@@ -22,7 +22,6 @@ import com.yahoo.config.provision.DockerImage;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.Zone;
-import com.yahoo.container.ComponentsConfig;
import com.yahoo.slime.SlimeUtils;
import com.yahoo.test.ManualClock;
import com.yahoo.vespa.config.server.MockConfigConvergenceChecker;
@@ -35,7 +34,6 @@ import com.yahoo.vespa.config.server.http.v2.PrepareResult;
import com.yahoo.vespa.config.server.maintenance.PendingRestartsMaintainer;
import com.yahoo.vespa.config.server.model.TestModelFactory;
import com.yahoo.vespa.config.server.session.PrepareParams;
-import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.application.validation.change.VespaReindexAction;
import com.yahoo.vespa.model.application.validation.change.VespaRestartAction;
import org.junit.Rule;
@@ -77,6 +75,7 @@ public class HostedDeployTest {
@Test
public void testRedeployWithVersion() {
DeployTester tester = new DeployTester.Builder(temporaryFolder)
+ .hostedConfigserverConfig(Zone.defaultZone())
.modelFactory(createHostedModelFactory(Version.fromString("4.5.6"), Clock.systemUTC()))
.build();
tester.deployApp("src/test/apps/hosted/", "4.5.6");
@@ -90,6 +89,7 @@ public class HostedDeployTest {
@Test
public void testRedeploy() {
DeployTester tester = new DeployTester.Builder(temporaryFolder)
+ .hostedConfigserverConfig(Zone.defaultZone())
.modelFactory(createHostedModelFactory())
.build();
ApplicationId appId = tester.applicationId();
@@ -105,6 +105,7 @@ public class HostedDeployTest {
@Test
public void testReDeployWithWantedDockerImageRepositoryAndAthenzDomain() {
DeployTester tester = new DeployTester.Builder(temporaryFolder)
+ .hostedConfigserverConfig(Zone.defaultZone())
.modelFactory(createHostedModelFactory(Version.fromString("4.5.6"), Clock.systemUTC()))
.build();
String dockerImageRepository = "docker.foo.com:4443/bar/baz";
@@ -125,6 +126,7 @@ public class HostedDeployTest {
public void testRedeployWithTenantSecretStores() {
List<TenantSecretStore> tenantSecretStores = List.of(new TenantSecretStore("foo", "123", "role"));
DeployTester tester = new DeployTester.Builder(temporaryFolder)
+ .hostedConfigserverConfig(Zone.defaultZone())
.modelFactory(createHostedModelFactory(Version.fromString("4.5.6"), Clock.systemUTC()))
.build();
tester.deployApp("src/test/apps/hosted/", new PrepareParams.Builder()
@@ -141,6 +143,7 @@ public class HostedDeployTest {
public void testDeployOnUnknownVersion() {
List<ModelFactory> modelFactories = List.of(createHostedModelFactory(Version.fromString("1.0.0")));
DeployTester tester = new DeployTester.Builder(temporaryFolder)
+ .hostedConfigserverConfig(Zone.defaultZone())
.modelFactories(modelFactories)
.build();
@@ -561,6 +564,7 @@ public class HostedDeployTest {
public void testRedeployWithCloudAccount() {
CloudAccount cloudAccount = CloudAccount.from("012345678912");
DeployTester tester = new DeployTester.Builder(temporaryFolder)
+ .hostedConfigserverConfig(Zone.defaultZone())
.modelFactory(createHostedModelFactory(Version.fromString("4.5.6"), Clock.systemUTC()))
.build();
tester.deployApp("src/test/apps/hosted/", new PrepareParams.Builder()
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationApiHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationApiHandlerTest.java
index d4aa0676c4f..25e4e004a61 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationApiHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationApiHandlerTest.java
@@ -86,7 +86,7 @@ class ApplicationApiHandlerTest {
public Path dbDir, defsDir, refsDir;
@BeforeEach
- public void setupRepo() throws IOException {
+ public void setupRepo() {
configserverConfig = new ConfigserverConfig.Builder()
.hostedVespa(true)
.configServerDBDir(dbDir.toString())
@@ -113,7 +113,7 @@ class ApplicationApiHandlerTest {
Zone.defaultZone());
}
- private HttpResponse put(long sessionId, Map<String, String> parameters) throws IOException {
+ private HttpResponse put(long sessionId, Map<String, String> parameters) {
var request = com.yahoo.container.jdisc.HttpRequest.createTestRequest("http://host:123/application/v2/tenant/" + tenant + "/prepareandactivate/" + sessionId,
Method.PUT,
InputStream.nullInputStream(),