diff options
Diffstat (limited to 'config-model')
5 files changed, 39 insertions, 22 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java index 6cd0a80bee3..253ad4ce119 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java @@ -10,6 +10,7 @@ import ai.vespa.metricsproxy.core.MetricsManager; import ai.vespa.metricsproxy.core.MonitoringConfig; import ai.vespa.metricsproxy.core.VespaMetrics; import ai.vespa.metricsproxy.http.MetricsHandler; +import ai.vespa.metricsproxy.http.yamas.YamasHandler; import ai.vespa.metricsproxy.http.prometheus.PrometheusHandler; import ai.vespa.metricsproxy.metric.ExternalMetrics; import ai.vespa.metricsproxy.metric.dimensions.ApplicationDimensions; @@ -51,6 +52,7 @@ import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerClus import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.LEGACY_APPLICATION; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.TENANT; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.ZONE; +import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainerCluster.AppDimensionNames.SYSTEM; import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicConsumer.getDefaultPublicConsumer; import static com.yahoo.vespa.model.admin.monitoring.MetricSet.emptyMetricSet; import static com.yahoo.vespa.model.admin.monitoring.VespaMetricsConsumer.getVespaMetricsConsumer; @@ -76,6 +78,7 @@ public class MetricsProxyContainerCluster extends ContainerCluster<MetricsProxyC static final String METRICS_PROXY_BUNDLE_NAME = "com.yahoo.vespa." + METRICS_PROXY_NAME; static final class AppDimensionNames { + static final String SYSTEM = "system"; static final String ZONE = "zone"; static final String APPLICATION_ID = "applicationId"; // tenant.app.instance static final String TENANT = "tenantName"; @@ -111,6 +114,7 @@ public class MetricsProxyContainerCluster extends ContainerCluster<MetricsProxyC addMetricsProxyComponent(VespaMetrics.class); addHttpHandler(MetricsHandler.class, MetricsHandler.V1_PATH); addHttpHandler(PrometheusHandler.class, PrometheusHandler.V1_PATH); + addHttpHandler(YamasHandler.class, YamasHandler.V1_PATH); } private void addHttpHandler(Class<? extends ThreadedHttpRequestHandler> clazz, String bindingPath) { @@ -202,6 +206,7 @@ public class MetricsProxyContainerCluster extends ContainerCluster<MetricsProxyC private Map<String, String> applicationDimensions() { Map<String, String> dimensions = new LinkedHashMap<>(); + dimensions.put(SYSTEM, getZone().system().value()); dimensions.put(ZONE, zoneString(getZone())); dimensions.put(APPLICATION_ID, serializeWithDots(applicationId)); dimensions.put(TENANT, applicationId.tenant().value()); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java index 2eff081f42d..38a6070d357 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java @@ -64,6 +64,8 @@ public class ConfigserverCluster extends AbstractConfigProducer } String myhostname = HostName.getLocalhost(); + // TODO: Server index should be in interval [1, 254] according to doc, + // however, we cannot change this id for an existing server for (int i = 0; i < configServers.length; i++) { if (zookeeperIds[i] < 0) { throw new IllegalArgumentException(String.format("Zookeeper ids cannot be negative, was %d for %s", 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 e47c00eeea3..2343fbf4452 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 @@ -59,6 +59,7 @@ import com.yahoo.vespa.model.container.component.chain.ProcessingHandler; import com.yahoo.vespa.model.container.docproc.ContainerDocproc; import com.yahoo.vespa.model.container.docproc.DocprocChains; import com.yahoo.vespa.model.container.http.ConnectorFactory; +import com.yahoo.vespa.model.container.http.FilterChains; import com.yahoo.vespa.model.container.http.Http; import com.yahoo.vespa.model.container.http.JettyHttpServer; import com.yahoo.vespa.model.container.http.ssl.HostedSslConnectorFactory; @@ -328,33 +329,35 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { if (httpElement != null) { cluster.setHttp(buildHttp(deployState, cluster, httpElement)); } - // If the deployment contains certificate/private key reference, setup TLS port if (deployState.tlsSecrets().isPresent()) { - boolean authorizeClient = XML.getChild(spec, "client-authorize") != null; - if (authorizeClient) { - if (deployState.tlsClientAuthority().isEmpty()) { - throw new RuntimeException("client-authorize set, but security/clients.pem is missing"); - } - } - - if(httpElement == null) { - cluster.setHttp(new Http(Collections.emptyList())); - } - if(cluster.getHttp().getHttpServer() == null) { - JettyHttpServer defaultHttpServer = new JettyHttpServer(new ComponentId("DefaultHttpServer")); - cluster.getHttp().setHttpServer(defaultHttpServer); - defaultHttpServer.addConnector(new ConnectorFactory("SearchServer", Defaults.getDefaults().vespaWebServicePort())); + addTlsPort(deployState, spec, cluster); + } + } + private void addTlsPort(DeployState deployState, Element spec, ApplicationContainerCluster cluster) { + boolean authorizeClient = XML.getChild(spec, "client-authorize") != null; + if (authorizeClient) { + if (deployState.tlsClientAuthority().isEmpty()) { + throw new RuntimeException("client-authorize set, but security/clients.pem is missing"); } - JettyHttpServer server = cluster.getHttp().getHttpServer(); - - String serverName = server.getComponentId().getName(); - HostedSslConnectorFactory connectorFactory = authorizeClient - ? new HostedSslConnectorFactory(serverName, deployState.tlsSecrets().get(), deployState.tlsClientAuthority().get()) - : new HostedSslConnectorFactory(serverName, deployState.tlsSecrets().get()); - server.addConnector(connectorFactory); } + if(cluster.getHttp() == null) { + Http http = new Http(Collections.emptyList()); + http.setFilterChains(new FilterChains(cluster)); + cluster.setHttp(http); + } + if(cluster.getHttp().getHttpServer() == null) { + JettyHttpServer defaultHttpServer = new JettyHttpServer(new ComponentId("DefaultHttpServer")); + cluster.getHttp().setHttpServer(defaultHttpServer); + defaultHttpServer.addConnector(new ConnectorFactory("SearchServer", Defaults.getDefaults().vespaWebServicePort())); + } + JettyHttpServer server = cluster.getHttp().getHttpServer(); + String serverName = server.getComponentId().getName(); + HostedSslConnectorFactory connectorFactory = authorizeClient + ? new HostedSslConnectorFactory(serverName, deployState.tlsSecrets().get(), deployState.tlsClientAuthority().get()) + : new HostedSslConnectorFactory(serverName, deployState.tlsSecrets().get()); + server.addConnector(connectorFactory); } private Http buildHttp(DeployState deployState, ApplicationContainerCluster cluster, Element httpElement) { diff --git a/config-model/src/main/sh/vespa-validate-application b/config-model/src/main/sh/vespa-validate-application index ba126542289..59891706068 100755 --- a/config-model/src/main/sh/vespa-validate-application +++ b/config-model/src/main/sh/vespa-validate-application @@ -8,6 +8,10 @@ findpath () { myname=${0} mypath=${myname%/*} myname=${myname##*/} + empty_if_start_slash=${mypath%%/*} + if [ "${empty_if_start_slash}" ]; then + mypath=$(pwd)/${mypath} + fi if [ "$mypath" ] && [ -d "$mypath" ]; then return fi diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java index db29dbba306..6e3ff564025 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java @@ -6,6 +6,7 @@ package com.yahoo.vespa.model.admin.metricsproxy; import ai.vespa.metricsproxy.core.ConsumersConfig; import ai.vespa.metricsproxy.http.MetricsHandler; +import ai.vespa.metricsproxy.http.yamas.YamasHandler; import ai.vespa.metricsproxy.http.prometheus.PrometheusHandler; import ai.vespa.metricsproxy.metric.dimensions.ApplicationDimensionsConfig; import com.yahoo.component.ComponentSpecification; @@ -107,6 +108,7 @@ public class MetricsProxyContainerClusterTest { assertThat(handlerClasses, hasItem(ComponentSpecification.fromString(MetricsHandler.class.getName()))); assertThat(handlerClasses, hasItem(ComponentSpecification.fromString(PrometheusHandler.class.getName()))); + assertThat(handlerClasses, hasItem(ComponentSpecification.fromString(YamasHandler.class.getName()))); } @Test @@ -268,6 +270,7 @@ public class MetricsProxyContainerClusterTest { VespaModel hostedModel = getModel(servicesWithAdminOnly(), hosted); ApplicationDimensionsConfig config = getApplicationDimensionsConfig(hostedModel); + assertEquals(Zone.defaultZone().system().value(), config.dimensions(AppDimensionNames.SYSTEM)); assertEquals(zoneString(Zone.defaultZone()), config.dimensions(AppDimensionNames.ZONE)); assertEquals(MY_TENANT, config.dimensions(AppDimensionNames.TENANT)); assertEquals(MY_APPLICATION, config.dimensions(AppDimensionNames.APPLICATION)); |