You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ma...@apache.org on 2014/02/13 21:54:51 UTC
git commit: AMBARI-4490. If Ganglia is not installed,
server logs hundreds of error messages. (Dmytro Shkvyra via mahadev)
Updated Branches:
refs/heads/trunk 38cd87d82 -> fdfe81086
AMBARI-4490. If Ganglia is not installed, server logs hundreds of error messages. (Dmytro Shkvyra via mahadev)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/fdfe8108
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/fdfe8108
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/fdfe8108
Branch: refs/heads/trunk
Commit: fdfe81086b2a46d0977b77b0b94447f7261f1aff
Parents: 38cd87d
Author: Mahadev Konar <ma...@apache.org>
Authored: Thu Feb 13 12:54:27 2014 -0800
Committer: Mahadev Konar <ma...@apache.org>
Committed: Thu Feb 13 12:54:37 2014 -0800
----------------------------------------------------------------------
.../internal/AbstractProviderModule.java | 55 +++++++++++++++++++-
.../internal/JMXHostProviderTest.java | 3 +-
2 files changed, 55 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/fdfe8108/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java
index f39893c..3053998 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java
@@ -233,6 +233,41 @@ public abstract class AbstractProviderModule implements ProviderModule, Resource
return clusterJmxPorts.get(componentName);
}
+ /**Post process property value. If value has one ore some substrings
+ * started with "${" and ended with "}" these substrings will replace
+ * with properties from current propertiesMap. It is doing recursively.
+ * @param key - properties name
+ * @param value - properties value
+ * @param properties - map with properties
+ */
+ private String postProcessPropertyValue(String key, String value, Map<String, String> properties, Set<String> prevProps) {
+ if (value != null && key != null && value.contains("${")){
+ if (prevProps == null) prevProps = new HashSet<String>();
+ if (prevProps.contains(key)){
+ return value;
+ }
+ prevProps.add(key);
+ String refValueString = value;
+ Map<String, String> refMap = new HashMap<String, String>();
+ while(refValueString.contains("${")) {
+ int startValueRef = refValueString.indexOf("${") + 2;
+ int endValueRef = refValueString.indexOf("}");
+ String valueRef = refValueString.substring(startValueRef, endValueRef);
+ refValueString = refValueString.substring(endValueRef+1);
+ String trueValue = (String) postProcessPropertyValue(valueRef, properties.get(valueRef), properties, prevProps);
+ if (trueValue != null){
+ refMap.put("${"+valueRef+"}", trueValue);
+ }
+ }
+ for (String keyRef : refMap.keySet()){
+ refValueString = refMap.get(keyRef);
+ value = ((String)value).replace(keyRef, refValueString);
+ }
+ properties.put(key, value);
+ }
+ return value;
+ }
+
// ----- GangliaHostProvider -----------------------------------------------
@Override
@@ -581,12 +616,28 @@ public abstract class AbstractProviderModule implements ProviderModule, Resource
Map<String, String> mConfigs = new HashMap<String, String>();
if (configResources != null) {
for (Resource res : configResources) {
+ Map<String, String> evalutedProperties = null;
for (String key : keys.keySet()) {
String value = (String) res.getPropertyValue
(PropertyHelper.getPropertyId(PROPERTIES_CATEGORY, keys.get(key)));
+ if (value != null && value.contains("${"))
+ if (evalutedProperties == null){
+ evalutedProperties = new HashMap<String, String>();
+ Map<String, Object> properties = res.getPropertiesMap().get(PROPERTIES_CATEGORY);
+ for (Map.Entry<String, Object> entry : properties.entrySet()) {
+ String keyString = entry.getKey();
+ Object object = entry.getValue();
+ String valueString;
+ if (object != null && object instanceof String){
+ valueString = (String)object;
+ evalutedProperties.put(keyString, valueString);
+ postProcessPropertyValue(keyString, valueString, evalutedProperties, null);
+ }
+ }
+ }
+ value = postProcessPropertyValue(keys.get(key), value, evalutedProperties, null);
LOG.debug("PROPERTY -> key: " + keys.get(key) + ", " +
- "value: " + value);
-
+ "value: " + value);
mConfigs.put(key, value);
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/fdfe8108/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
index 1a1bad6..0b5f660 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
@@ -151,8 +151,9 @@ public class JMXHostProviderTest {
// Create configs
Map<String, String> configs = new HashMap<String, String>();
- configs.put(NAMENODE_PORT, "localhost:70070");
+ configs.put(NAMENODE_PORT, "localhost:${ambari.dfs.datanode.http.port}");
configs.put(DATANODE_PORT, "localhost:70075");
+ configs.put("ambari.dfs.datanode.http.port", "70070");
ConfigurationRequest cr = new ConfigurationRequest(clusterName,
"hdfs-site", "version1", configs);
controller.createConfiguration(cr);