diff options
author | bjormel <bjormel@verizonmedia.com> | 2022-05-11 10:52:09 +0200 |
---|---|---|
committer | bjormel <bjormel@verizonmedia.com> | 2022-05-11 10:52:09 +0200 |
commit | 8c0bf8ff0ab2a5f021e333e56bfe062ce3d4de1d (patch) | |
tree | c3fbfa23a2c914d28795c9ba5c245d16ae4ebec6 /config-model | |
parent | 631c539a74a1500b7956071e1ccf375e45ceca7b (diff) |
Disallow 'accesslog' override in hosted Vespa
Diffstat (limited to 'config-model')
2 files changed, 40 insertions, 2 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index 170e22b6164..ee974d800c6 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -422,8 +422,13 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { protected void addAccessLogs(DeployState deployState, ApplicationContainerCluster cluster, Element spec) { List<Element> accessLogElements = getAccessLogElements(spec); - for (Element accessLog : accessLogElements) { - AccessLogBuilder.buildIfNotDisabled(deployState, cluster, accessLog).ifPresent(cluster::addComponent); + if (cluster.isHostedVespa() && !accessLogElements.isEmpty()) { + log.logApplicationPackage( + Level.WARNING, "The element 'accesslog' is not overridable in hosted Vespa"); + } else { + for (Element accessLog : accessLogElements) { + AccessLogBuilder.buildIfNotDisabled(deployState, cluster, accessLog).ifPresent(cluster::addComponent); + } } if (accessLogElements.isEmpty() && deployState.getAccessLoggingEnabledByDefault()) diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java index 16b4a8bed9b..7c76aef0981 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java @@ -1095,6 +1095,39 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase { logger.msgs.get(1).getSecond()); } + @Test + public void logs_accesslog_not_overidable_in_hosted() { + String containerService = joinLines("<container id='foo' version='1.0'>", + " <accesslog type='json' fileNamePattern='logs/vespa/qrs/access.%Y%m%d%H%M%S' symlinkName='json_access' />", + " <nodes count=\"2\">", + " </nodes>", + "</container>"); + + String deploymentXml = joinLines("<deployment version='1.0'>", + " <prod>", + " <region>us-east-1</region>", + " </prod>", + "</deployment>"); + + ApplicationPackage applicationPackage = new MockApplicationPackage.Builder() + .withServices(containerService) + .withDeploymentSpec(deploymentXml) + .build(); + + TestLogger logger = new TestLogger(); + DeployState deployState = new DeployState.Builder() + .applicationPackage(applicationPackage) + .zone(new Zone(Environment.prod, RegionName.from("us-east-1"))) + .properties(new TestProperties().setHostedVespa(true)) + .deployLogger(logger) + .build(); + createModel(root, deployState, null, DomBuilderTest.parse(containerService)); + assertFalse(logger.msgs.isEmpty()); + assertEquals(Level.WARNING, logger.msgs.get(0).getFirst()); + assertEquals("The element 'accesslog' is not overridable in hosted Vespa", + logger.msgs.get(0).getSecond()); + } + private void assertComponentConfigured(ApplicationContainerCluster cluster, String componentId) { Component<?, ?> component = cluster.getComponentsMap().get(ComponentId.fromString(componentId)); assertNotNull(component); |