diff options
author | gjoranv <gv@yahoo-inc.com> | 2016-11-08 15:46:04 +0100 |
---|---|---|
committer | gjoranv <gv@yahoo-inc.com> | 2016-11-09 14:09:56 +0100 |
commit | 63a2bc9bef0979c1896553be345e5fb12c2488c9 (patch) | |
tree | 02ceb4a173e1ff4355c37f56fc168fce8daedee1 /config-model | |
parent | f5e012d593846978b8e7412b99078ceb3b6406d6 (diff) |
Make 'vespa' the default metrics consumer, instead of 'yamas'.
- Prohibit custom consumers with id 'vespa'
- Convert id 'yamas' -> 'vespa' for the legacy xml syntax
to preserve current behaviour.
Diffstat (limited to 'config-model')
4 files changed, 29 insertions, 11 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultMetricConsumers.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultMetricConsumers.java index bfb7730982e..5bfd4ee4de7 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultMetricConsumers.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultMetricConsumers.java @@ -5,16 +5,15 @@ import java.util.LinkedHashMap; import java.util.Map; /** - * This class sets up the default metrics and the default 'vespa' metrics consumer. - * - * TODO: remove for Vespa 7 or when the 'metric-consumers' element in 'admin' has been removed. + * This class sets up the default 'vespa' metrics consumer. * * @author <a href="mailto:trygve@yahoo-inc.com">Trygve Bolsø Berdal</a> * @author gjoranv */ -@SuppressWarnings("UnusedDeclaration") // All public apis are used by model amenders public class DefaultMetricConsumers { + public static final String VESPA_CONSUMER_ID = "vespa"; + private static final MetricSet vespaMetricSet = new VespaMetricSet(); /** @@ -26,12 +25,8 @@ public class DefaultMetricConsumers { @SuppressWarnings("UnusedDeclaration") public static Map<String, MetricsConsumer> getDefaultMetricsConsumers() { Map<String, MetricsConsumer> metricsConsumers = new LinkedHashMap<>(); - metricsConsumers.put("yamas", getYamasConsumer()); + metricsConsumers.put(VESPA_CONSUMER_ID, new MetricsConsumer(VESPA_CONSUMER_ID, vespaMetricSet)); return metricsConsumers; } - private static MetricsConsumer getYamasConsumer(){ - return new MetricsConsumer("yamas", vespaMetricSet); - } - } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java index a577ae6dcab..6005aace89d 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.admin.monitoring.builder.xml; import com.yahoo.text.XML; +import com.yahoo.vespa.model.admin.monitoring.DefaultMetricConsumers; import com.yahoo.vespa.model.admin.monitoring.Metric; import com.yahoo.vespa.model.admin.monitoring.MetricSet; import com.yahoo.vespa.model.admin.monitoring.MetricsConsumer; @@ -14,12 +15,15 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import static com.yahoo.vespa.model.admin.monitoring.DefaultMetricConsumers.VESPA_CONSUMER_ID; + /** * @author gjoranv */ public class MetricsBuilder { private static final String ID_ATTRIBUTE = "id"; + private final Map<String, MetricSet> availableMetricSets; public MetricsBuilder(Map<String, MetricSet> availableMetricSets) { @@ -30,6 +34,9 @@ public class MetricsBuilder { Metrics metrics = new Metrics(); for (Element consumerElement : XML.getChildren(metricsElement, "consumer")) { String consumerId = consumerElement.getAttribute(ID_ATTRIBUTE); + if (consumerId.equals(VESPA_CONSUMER_ID)) + throw new IllegalArgumentException("'vespa' is not allowed as metric consumer id."); + MetricSet metricSet = buildMetricSet(consumerId, consumerElement); metrics.addConsumer(new MetricsConsumer(consumerId, metricSet)); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomMetricBuilderHelper.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomMetricBuilderHelper.java index e98c9e73486..18c7f901bfa 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomMetricBuilderHelper.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomMetricBuilderHelper.java @@ -13,14 +13,19 @@ import java.util.List; import java.util.Map; import java.util.Set; +import static com.yahoo.vespa.model.admin.monitoring.DefaultMetricConsumers.VESPA_CONSUMER_ID; + /** * Helper class for parsing yamasmetric config. * + * TODO: Remove when 'metric-consumers' under 'admin' is disallowed + * * @author trygve * @since 5.1 */ public class DomMetricBuilderHelper { + private static final String LEGACY_DEFAULT_CONSUMER_ID = "yamas"; /** * Build metricConsumer config @@ -32,7 +37,7 @@ public class DomMetricBuilderHelper { Map<String, MetricsConsumer> metricsConsumers = new LinkedHashMap<>(); List<Element> consumersElem = XML.getChildren(spec, "consumer"); for (Element consumer : consumersElem) { - String consumerName = consumer.getAttribute("name"); + String consumerName = getConsumerName(consumer); Set<Metric> metrics = new LinkedHashSet<>(); List<Element> metricsEl = XML.getChildren(consumer, "metric"); if (metricsEl != null) { @@ -49,6 +54,15 @@ public class DomMetricBuilderHelper { return metricsConsumers; } + // Converts the old default consumer id to the new default id. + private static String getConsumerName(Element consumerElement) { + String givenName = consumerElement.getAttribute("name"); + if (givenName.equals(LEGACY_DEFAULT_CONSUMER_ID)) + return VESPA_CONSUMER_ID; + else + return givenName; + } + private static String metricSetId(String consumerName) { return "legacy-user-metrics-" + consumerName; } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java index 9b4219a87cf..16d3da195cc 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java @@ -9,6 +9,7 @@ import com.yahoo.config.model.provision.Hosts; import com.yahoo.config.model.provision.InMemoryProvisioner; import com.yahoo.config.model.test.MockApplicationPackage; import com.yahoo.vespa.model.VespaModel; +import com.yahoo.vespa.model.admin.monitoring.DefaultMetricConsumers; import com.yahoo.vespa.model.admin.monitoring.Metric; import com.yahoo.vespa.model.admin.monitoring.MetricsConsumer; import com.yahoo.vespa.model.admin.monitoring.Yamas; @@ -19,6 +20,7 @@ import java.io.IOException; import java.util.Set; import java.util.stream.Collectors; +import static com.yahoo.vespa.model.admin.monitoring.DefaultMetricConsumers.VESPA_CONSUMER_ID; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertNotNull; @@ -84,7 +86,7 @@ public class DedicatedAdminV4Test { assertEquals("vespa.routing", yamas.getClustername()); assertEquals(60L, (long)yamas.getIntervalSeconds()); - MetricsConsumer consumer = model.getAdmin().getLegacyUserMetricsConsumers().get("yamas"); + MetricsConsumer consumer = model.getAdmin().getLegacyUserMetricsConsumers().get(VESPA_CONSUMER_ID); assertNotNull(consumer); assertEquals(3, consumer.getMetrics().size()); Metric metric = consumer.getMetrics().get("nginx.upstreams.down.last"); |