Updated Branches:
  refs/heads/trunk 3009a1cc6 -> 13b0376d3

AMBARI-3839 DataNode heapsize config override causes DataNode to not start. 
(atkach)


Project: http://git-wip-us.apache.org/repos/asf/incubator-ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ambari/commit/13b0376d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ambari/tree/13b0376d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ambari/diff/13b0376d

Branch: refs/heads/trunk
Commit: 13b0376d3bca78c9673f002310ccb5471e437275
Parents: 3009a1c
Author: atkach <andrey91...@gmail.com>
Authored: Thu Nov 21 13:07:42 2013 +0200
Committer: atkach <andrey91...@gmail.com>
Committed: Thu Nov 21 13:07:42 2013 +0200

----------------------------------------------------------------------
 .../controllers/main/service/info/configs.js    | 54 ++++++++++++++------
 1 file changed, 38 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/13b0376d/ambari-web/app/controllers/main/service/info/configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/info/configs.js 
b/ambari-web/app/controllers/main/service/info/configs.js
index 975462c..d650ecb 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -894,6 +894,7 @@ App.MainServiceInfoConfigsController = 
Em.Controller.extend({
       configs.filterProperty('isOverridden', true).forEach(function (config) {
         overridenConfigs = overridenConfigs.concat(config.get('overrides'));
       });
+      this.formatConfigValues(overridenConfigs);
       selectedConfigGroup.get('hosts').forEach(function(hostName){
         groupHosts.push({"host_name": hostName});
       });
@@ -931,14 +932,31 @@ App.MainServiceInfoConfigsController = 
Em.Controller.extend({
     var time = (new Date).getTime();
     configs.forEach(function (config) {
       var type = config.get('filename').replace('.xml', '');
-      var site = sites.findProperty('type', type) || {
-        type: type,
-        tag: 'version' + time,
-        properties: {}
-      };
-      site.properties[config.get('name')] = config.get('value');
-      sites.push(site);
+      var site = sites.findProperty('type', type);
+      if (site) {
+        site.properties.push({
+          name: config.get('name'),
+          value: config.get('value')
+        });
+      } else {
+        site = {
+          type: type,
+          tag: 'version' + time,
+          properties: [{
+            name: config.get('name'),
+            value: config.get('value')
+          }]
+        };
+        sites.push(site);
+      }
     });
+    sites.forEach(function(site){
+      if(site.type === 'global') {
+        site.properties = this.createGlobalSiteObj(site.tag, 
site.properties).properties;
+      } else {
+        site.properties = this.createSiteObj(site.type, site.tag, 
site.properties).properties;
+      }
+    }, this);
     return sites;
   },
   /**
@@ -1080,13 +1098,17 @@ App.MainServiceInfoConfigsController = 
Em.Controller.extend({
   saveSiteConfigs: function (configs) {
     //storedConfigs contains custom configs as well
     var serviceConfigProperties = configs.filterProperty('id', 'site 
property');
+    this.formatConfigValues(serviceConfigProperties);
+    var storedConfigs = serviceConfigProperties.filterProperty('value');
+    var allUiConfigs = this.loadUiSideConfigs(this.get('configMapping').all());
+    this.set('uiConfigs', storedConfigs.concat(allUiConfigs));
+  },
+
+  formatConfigValues: function(serviceConfigProperties){
     serviceConfigProperties.forEach(function (_config) {
       if (typeof _config.get('value') === "boolean") _config.set('value', 
_config.value.toString());
       _config.set('value', App.config.trimProperty(_config), true);
     });
-    var storedConfigs = serviceConfigProperties.filterProperty('value');
-    var allUiConfigs = this.loadUiSideConfigs(this.get('configMapping').all());
-    this.set('uiConfigs', storedConfigs.concat(allUiConfigs));
   },
 
   /**
@@ -1238,7 +1260,7 @@ App.MainServiceInfoConfigsController = 
Em.Controller.extend({
     serviceConfigTags.forEach(function (_serviceTags) {
       if (_serviceTags.siteName === 'global') {
         console.log("TRACE: Inside global");
-        var serverGlobalConfigs = 
this.createGlobalSiteObj(_serviceTags.newTagName);
+        var serverGlobalConfigs = 
this.createGlobalSiteObj(_serviceTags.newTagName, this.get('globalConfigs'));
         siteNameToServerDataMap['global'] = serverGlobalConfigs;
         var loadedProperties = configController.getConfigsByTags([{siteName: 
'global', tagName: this.loadedClusterSiteToTagMap['global']}]);
         if (loadedProperties && loadedProperties[0]) {
@@ -1261,7 +1283,8 @@ App.MainServiceInfoConfigsController = 
Em.Controller.extend({
           }
         }
       } else {
-        var serverConfigs = this.createSiteObj(_serviceTags.siteName, 
_serviceTags.newTagName);
+        var siteConfigs = this.get('uiConfigs').filterProperty('filename', 
_serviceTags.siteName + '.xml');
+        var serverConfigs = this.createSiteObj(_serviceTags.siteName, 
_serviceTags.newTagName, siteConfigs);
         siteNameToServerDataMap[_serviceTags.siteName] = serverConfigs;
         var loadedProperties = configController.getConfigsByTags([{siteName: 
_serviceTags.siteName, tagName: 
this.loadedClusterSiteToTagMap[_serviceTags.siteName]}]);
         if (loadedProperties && loadedProperties[0]) {
@@ -1438,10 +1461,10 @@ App.MainServiceInfoConfigsController = 
Em.Controller.extend({
    * @param tagName
    * @return {Object}
    */
-  createGlobalSiteObj: function (tagName) {
+  createGlobalSiteObj: function (tagName, globalConfigs) {
     var heapsizeException = ['hadoop_heapsize', 'yarn_heapsize', 
'nodemanager_heapsize', 'resourcemanager_heapsize'];
     var globalSiteProperties = {};
-    this.get('globalConfigs').forEach(function (_globalSiteObj) {
+    globalConfigs.forEach(function (_globalSiteObj) {
       // do not pass any globalConfigs whose name ends with _host or _hosts
       if (!/_hosts?$/.test(_globalSiteObj.name)) {
         // append "m" to JVM memory options except for hadoop_heapsize
@@ -1524,8 +1547,7 @@ App.MainServiceInfoConfigsController = 
Em.Controller.extend({
    * @param tagName
    * @return {Object}
    */
-  createSiteObj: function (siteName, tagName) {
-    var siteObj = this.get('uiConfigs').filterProperty('filename', siteName + 
'.xml');
+  createSiteObj: function (siteName, tagName, siteObj) {
     var siteProperties = {};
     siteObj.forEach(function (_siteObj) {
       siteProperties[_siteObj.name] = 
App.config.escapeXMLCharacters(_siteObj.value);

Reply via email to