aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2020-03-09 13:39:27 +0100
committergjoranv <gv@verizonmedia.com>2020-03-09 13:44:08 +0100
commitcd2d0bb1e07e7e743f19159682776478fae65d36 (patch)
tree0b4f0eeafe2edbaf31f29345cc099f166f3a24ec
parentbbc74ec90bcba32b2de15b3cb5f17b0ed221ca33 (diff)
Require 'file' and make 'profile' optional for shared-credentials
- The default profile is 'default'
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/CloudWatch.java12
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/CloudWatchBuilder.java6
-rw-r--r--config-model/src/main/resources/schema/admin.rnc4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/TelegrafTest.java23
-rw-r--r--config-model/src/test/schema-test-files/services.xml2
-rw-r--r--metrics-proxy/src/main/resources/configdefinitions/telegraf.def2
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"