summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java47
-rwxr-xr-xconfig-model/src/main/sh/vespa-validate-application4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java3
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));