diff options
7 files changed, 42 insertions, 16 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 a1ec308c808..4cf0aa151b1 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 @@ -187,12 +187,15 @@ public class MetricsProxyContainerCluster extends ContainerCluster<MetricsProxyC .region(cloudWatch.region()) .namespace(cloudWatch.namespace()) .consumer(cloudWatch.consumer()); + cloudWatch.hostedAuth().ifPresent(hostedAuth -> cloudWatchBuilder .accessKeyName(hostedAuth.accessKeyName) .secretKeyName(hostedAuth.secretKeyName)); - cloudWatch.sharedCredentials().ifPresent(sharedCredentials -> cloudWatchBuilder - .profile(sharedCredentials.profile) - .file(sharedCredentials.file)); + + cloudWatch.sharedCredentials().ifPresent(sharedCredentials -> { + cloudWatchBuilder.file(sharedCredentials.file); + sharedCredentials.profile.ifPresent(cloudWatchBuilder::profile); + }); builder.cloudWatch(cloudWatchBuilder); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/CloudWatch.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/CloudWatch.java index 0f3543d3c36..5351c3fb3a7 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/CloudWatch.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/CloudWatch.java @@ -32,27 +32,27 @@ public class CloudWatch { hostedAuth = new HostedAuth(accessKeyName, secretKeyName); } - public void setSharedCredentials(String profile, String file) { - sharedCredentials = new SharedCredentials(profile, file); + public void setSharedCredentials(String file, Optional<String> profile) { + sharedCredentials = new SharedCredentials(file, profile); } public static class HostedAuth { public final String accessKeyName; public final String secretKeyName; - public HostedAuth(String accessKeyName, String secretKeyName) { + HostedAuth(String accessKeyName, String secretKeyName) { this.accessKeyName = accessKeyName; this.secretKeyName = secretKeyName; } } public static class SharedCredentials { - public final String profile; public final String file; + public final Optional<String> profile; - public SharedCredentials(String profile, String file) { - this.profile = profile; + SharedCredentials(String file, Optional<String> profile) { this.file = file; + this.profile = profile; } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/CloudWatchBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/CloudWatchBuilder.java index 5ce941d6638..314ef9cc5a5 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/CloudWatchBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/CloudWatchBuilder.java @@ -1,10 +1,10 @@ package com.yahoo.vespa.model.admin.monitoring.builder.xml; import com.yahoo.vespa.model.admin.monitoring.CloudWatch; -import com.yahoo.vespa.model.admin.monitoring.CloudWatch.HostedAuth; import com.yahoo.vespa.model.admin.monitoring.MetricsConsumer; import org.w3c.dom.Element; +import static com.yahoo.config.model.builder.xml.XmlHelper.getOptionalAttribute; import static com.yahoo.config.model.builder.xml.XmlHelper.getOptionalChild; /** @@ -31,8 +31,8 @@ public class CloudWatchBuilder { elem.getAttribute(SECRET_KEY_ATTRIBUTE))); getOptionalChild(cloudwatchElement, SHARED_CREDENTIALS_ELEMENT) - .ifPresent(elem -> cloudWatch.setSharedCredentials(elem.getAttribute(PROFILE_ATTRIBUTE), - elem.getAttribute(FILE_ATTRIBUTE))); + .ifPresent(elem -> cloudWatch.setSharedCredentials(elem.getAttribute(FILE_ATTRIBUTE), + getOptionalAttribute(elem, PROFILE_ATTRIBUTE))); return cloudWatch; } diff --git a/config-model/src/main/resources/schema/admin.rnc b/config-model/src/main/resources/schema/admin.rnc index f4585b3cf3f..1eac11a879c 100644 --- a/config-model/src/main/resources/schema/admin.rnc +++ b/config-model/src/main/resources/schema/admin.rnc @@ -97,8 +97,8 @@ Cloudwatch = element cloudwatch { } | element shared-credentials { - attribute profile { xsd:Name } & - attribute file { string }? + attribute file { string } & + attribute profile { xsd:Name }? } )? } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/TelegrafTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/TelegrafTest.java index 9be94e4198e..f81ad31acb3 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/TelegrafTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/TelegrafTest.java @@ -9,6 +9,7 @@ import org.junit.Test; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.CLUSTER_CONFIG_ID; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.TestMode.hosted; +import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.TestMode.self_hosted; import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getModel; import static org.hamcrest.CoreMatchers.hasItem; import static org.hamcrest.CoreMatchers.not; @@ -125,4 +126,26 @@ public class TelegrafTest { assertEquals("profile-2", cloudWatch1.profile()); } + @Test + public void profile_named_default_is_used_when_no_profile_is_given_in_shared_credentials() { + String services = String.join("\n", + "<services>", + " <admin version='2.0'>", + " <adminserver hostalias='node1'/>", + " <metrics>", + " <consumer id='cloudwatch-consumer'>", + " <metric id='my-metric'/>", + " <cloudwatch region='us-east-1' namespace='foo' >", + " <shared-credentials file='/path/to/file' />", + " </cloudwatch>", + " </consumer>", + " </metrics>", + " </admin>", + "</services>" + ); + VespaModel model = getModel(services, self_hosted); + TelegrafConfig config = model.getConfig(TelegrafConfig.class, CLUSTER_CONFIG_ID); + assertEquals("default", config.cloudWatch(0).profile()); + } + } diff --git a/config-model/src/test/schema-test-files/services.xml b/config-model/src/test/schema-test-files/services.xml index 0c395fedb96..253af585c73 100644 --- a/config-model/src/test/schema-test-files/services.xml +++ b/config-model/src/test/schema-test-files/services.xml @@ -34,7 +34,7 @@ <consumer id="cloudwatch-self-hosted-with-profile"> <metric id="my-custom-metric" /> <cloudwatch region="us-east1" namespace="another-namespace"> - <shared-credentials profile="profile-in-credentials-file" file="/user/.aws/credentials"/> + <shared-credentials file="/user/.aws/credentials" profile="profile-in-credentials-file" /> </cloudwatch> </consumer> diff --git a/metrics-proxy/src/main/resources/configdefinitions/telegraf.def b/metrics-proxy/src/main/resources/configdefinitions/telegraf.def index 8a87b92cd60..ba58f6e6817 100644 --- a/metrics-proxy/src/main/resources/configdefinitions/telegraf.def +++ b/metrics-proxy/src/main/resources/configdefinitions/telegraf.def @@ -18,5 +18,5 @@ cloudWatch[].accessKeyName string default="" cloudWatch[].secretKeyName string default="" # Only valid and optional for self-hosted Vespa -cloudWatch[].profile string default="" cloudWatch[].file string default="" +cloudWatch[].profile string default="default" |