You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sm...@apache.org on 2015/12/10 00:40:10 UTC
ambari git commit: AMBARI-14302. Storm configuration value for
storm.zookeeper.servers is wrong (Sebastian Toader via smohanty)
Repository: ambari
Updated Branches:
refs/heads/branch-2.2 532c712db -> 06ee768fb
AMBARI-14302. Storm configuration value for storm.zookeeper.servers is wrong (Sebastian Toader via smohanty)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/06ee768f
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/06ee768f
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/06ee768f
Branch: refs/heads/branch-2.2
Commit: 06ee768fbd28ed729808b5a5e09e96194adbfc5e
Parents: 532c712
Author: Sumit Mohanty <sm...@hortonworks.com>
Authored: Wed Dec 9 15:39:58 2015 -0800
Committer: Sumit Mohanty <sm...@hortonworks.com>
Committed: Wed Dec 9 15:39:58 2015 -0800
----------------------------------------------------------------------
.../BlueprintConfigurationProcessor.java | 24 +++-
.../BlueprintConfigurationProcessorTest.java | 122 +++++++++++++++++++
2 files changed, 144 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/06ee768f/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
index 815a109..ee0aaff 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
@@ -1811,7 +1811,7 @@ public class BlueprintConfigurationProcessor {
/**
* Return properties of the form ['value']
*/
- private static class YamlMultiValuePropertyDecorator extends AbstractPropertyValueDecorator {
+ static class YamlMultiValuePropertyDecorator extends AbstractPropertyValueDecorator {
// currently, only plain and single-quoted Yaml flows are supported by this updater
enum FlowStyle {
@@ -1819,6 +1819,15 @@ public class BlueprintConfigurationProcessor {
PLAIN
}
+ /**
+ * Regexp to extract the inner part of a string enclosed in []
+ */
+ private static Pattern REGEX_IN_BRACKETS = Pattern.compile("\\s*\\[(?<INNER>.*)\\]\\s*");
+ /**
+ * Regexp to extract the inner part of a string enclosed in ''
+ */
+ private static Pattern REGEX_IN_QUOTES = Pattern.compile("\\s*'(?<INNER>.*)'\\s*");
+
private final FlowStyle flowStyle;
public YamlMultiValuePropertyDecorator(PropertyUpdater propertyUpdater) {
@@ -1833,7 +1842,8 @@ public class BlueprintConfigurationProcessor {
/**
* Format input String of the form, str1,str2 to ['str1','str2']
- *
+ * If the input string is already surrounded by [] ignore those
+ * and process the part from within the square brackets.
* @param origValue input string
*
* @return formatted string
@@ -1841,10 +1851,20 @@ public class BlueprintConfigurationProcessor {
@Override
public String doFormat(String origValue) {
StringBuilder sb = new StringBuilder();
+
+ Matcher m = REGEX_IN_BRACKETS.matcher(origValue);
+ if (m.matches())
+ origValue = m.group("INNER");
+
if (origValue != null) {
sb.append("[");
boolean isFirst = true;
for (String value : origValue.split(",")) {
+
+ m = REGEX_IN_QUOTES.matcher(value);
+ if (m.matches())
+ value = m.group("INNER");
+
if (!isFirst) {
sb.append(",");
} else {
http://git-wip-us.apache.org/repos/asf/ambari/blob/06ee768f/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
index 1084b3f..83b2d81 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
@@ -5975,6 +5975,128 @@ public class BlueprintConfigurationProcessorTest {
assertEquals("kms://http@host1:9292/kms", clusterConfig.getPropertyValue(configType, "hadoop.security.key.provider.path"));
}
+ @Test
+ public void testYamlMultiValueWithSingleQuoteFlowStyleFormatSingleValue() throws Exception {
+ // Given
+ BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator yamlMultiValuePropertyDecorator = new BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator(null);
+ String originalValue = "test_value";
+
+
+ // When
+ String newValue = yamlMultiValuePropertyDecorator.doFormat(originalValue);
+
+ // Then
+ String expectedValue = "['test_value']";
+ assertEquals(expectedValue, newValue);
+ }
+
+ @Test
+ public void testYamlMultiValueWithPlainFlowStyleFormatSingleValue() throws Exception {
+ // Given
+ BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator yamlMultiValuePropertyDecorator = new BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator(null, BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator.FlowStyle.PLAIN);
+ String originalValue = "test_value";
+
+
+ // When
+ String newValue = yamlMultiValuePropertyDecorator.doFormat(originalValue);
+
+ // Then
+ String expectedValue = "[test_value]";
+ assertEquals(expectedValue, newValue);
+ }
+
+ @Test
+ public void testYamlMultiValueWithSingleQuoteFlowStyleFormatMultiValue() throws Exception {
+ // Given
+ BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator yamlMultiValuePropertyDecorator = new BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator(null);
+ String originalValue = "test_value1,test_value2";
+
+
+ // When
+ String newValue = yamlMultiValuePropertyDecorator.doFormat(originalValue);
+
+ // Then
+ String expectedValue = "['test_value1','test_value2']";
+ assertEquals(expectedValue, newValue);
+ }
+
+ @Test
+ public void testYamlMultiValueWithPlainFlowStyleFormatMultiValue() throws Exception {
+ // Given
+ BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator yamlMultiValuePropertyDecorator = new BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator(null, BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator.FlowStyle.PLAIN);
+ String originalValue = "test_value1,test_value2";
+
+
+ // When
+ String newValue = yamlMultiValuePropertyDecorator.doFormat(originalValue);
+
+ // Then
+ String expectedValue = "[test_value1,test_value2]";
+ assertEquals(expectedValue, newValue);
+ }
+
+ @Test
+ public void testYamlMultiValueWithSingleQuoteFlowStyleFormatSingleValueInSquareBrackets() throws Exception {
+ // Given
+ BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator yamlMultiValuePropertyDecorator = new BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator(null);
+ String originalValue = "['test_value']";
+
+
+ // When
+ String newValue = yamlMultiValuePropertyDecorator.doFormat(originalValue);
+
+ // Then
+ String expectedValue = "['test_value']";
+ assertEquals(expectedValue, newValue);
+ }
+
+
+ @Test
+ public void testYamlMultiValueFormatWithPlainFlowStyleSingleValueInSquareBrackets() throws Exception {
+ // Given
+ BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator yamlMultiValuePropertyDecorator = new BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator(null, BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator.FlowStyle.PLAIN);
+ String originalValue = "[test_value]";
+
+
+ // When
+ String newValue = yamlMultiValuePropertyDecorator.doFormat(originalValue);
+
+ // Then
+ String expectedValue = "[test_value]";
+ assertEquals(expectedValue, newValue);
+ }
+
+
+ @Test
+ public void testYamlMultiValueWithSingleQuoteFlowStyleFormatMultiValueInSquareBrackets() throws Exception {
+ // Given
+ BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator yamlMultiValuePropertyDecorator = new BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator(null);
+ String originalValue = "['test_value1','test_value2']";
+
+
+ // When
+ String newValue = yamlMultiValuePropertyDecorator.doFormat(originalValue);
+
+ // Then
+ String expectedValue = "['test_value1','test_value2']";
+ assertEquals(expectedValue, newValue);
+ }
+
+ @Test
+ public void testYamlMultiValueWithPlainFlowStyleFormatMultiValueInSquareBrackets() throws Exception {
+ // Given
+ BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator yamlMultiValuePropertyDecorator = new BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator(null, BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator.FlowStyle.PLAIN);
+ String originalValue = "[test_value1,test_value2]";
+
+
+ // When
+ String newValue = yamlMultiValuePropertyDecorator.doFormat(originalValue);
+
+ // Then
+ String expectedValue = "[test_value1,test_value2]";
+ assertEquals(expectedValue, newValue);
+ }
+
private Map<String, AdvisedConfiguration> createAdvisedConfigMap() {
Map<String, AdvisedConfiguration> advMap = new HashMap<String, AdvisedConfiguration>();