You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by at...@apache.org on 2014/02/21 14:49:38 UTC

git commit: AMBARI-4777 Restart indicators work incorrectly after adding component. (atkach)

Repository: ambari
Updated Branches:
  refs/heads/trunk 44f0f2d97 -> 9c98af160


AMBARI-4777 Restart indicators work incorrectly after adding component. (atkach)


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

Branch: refs/heads/trunk
Commit: 9c98af160d8b87068f8b223fa714501caf6701d0
Parents: 44f0f2d
Author: atkach <at...@hortonworks.com>
Authored: Fri Feb 21 15:38:59 2014 +0200
Committer: atkach <at...@hortonworks.com>
Committed: Fri Feb 21 15:38:59 2014 +0200

----------------------------------------------------------------------
 .../controllers/main/service/info/configs.js    |   3 +-
 .../app/controllers/wizard/step8_controller.js  | 107 ++-----------------
 ambari-web/app/data/HDP2/config_mapping.js      |  28 +++--
 ambari-web/app/utils/config.js                  |  10 ++
 4 files changed, 37 insertions(+), 111 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/9c98af16/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 1f8565c..9d3e64b 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -1112,7 +1112,8 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     var serviceConfigProperties = configs.filterProperty('id', 'site property');
     this.formatConfigValues(serviceConfigProperties);
     var storedConfigs = serviceConfigProperties.filterProperty('value');
-    var allUiConfigs = this.loadUiSideConfigs(this.get('configMapping').all());
+    var mappedConfigs = App.config.excludeUnsupportedConfigs(this.get('configMapping').all(), App.Service.find().mapProperty('serviceName'));
+    var allUiConfigs = this.loadUiSideConfigs(mappedConfigs);
     this.set('uiConfigs', storedConfigs.concat(allUiConfigs));
   },
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/9c98af16/ambari-web/app/controllers/wizard/step8_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step8_controller.js b/ambari-web/app/controllers/wizard/step8_controller.js
index ab0f909..4280f47 100644
--- a/ambari-web/app/controllers/wizard/step8_controller.js
+++ b/ambari-web/app/controllers/wizard/step8_controller.js
@@ -189,13 +189,14 @@ App.WizardStep8Controller = Em.Controller.extend({
       _config.value = (typeof _config.value === "boolean") ? _config.value.toString() : _config.value;
     });
     var storedConfigs = serviceConfigProperties.filterProperty('value');
-    var uiConfigs = this.loadUiSideConfigs();
+    var mappedConfigs = App.config.excludeUnsupportedConfigs(this.get('configMapping'), this.get('selectedServices').mapProperty('serviceName'));
+    var uiConfigs = this.loadUiSideConfigs(mappedConfigs);
     this.set('configs', storedConfigs.concat(uiConfigs));
   },
 
-  loadUiSideConfigs: function () {
+  loadUiSideConfigs: function (configMapping) {
     var uiConfig = [];
-    var configs = this.get('configMapping').filterProperty('foreignKey', null);
+    var configs = configMapping.filterProperty('foreignKey', null);
     this.addDynamicProperties(configs);
     configs.forEach(function (_config) {
       var valueWithOverrides = this.getGlobConfigValueWithOverrides(_config.templateName, _config.value, _config.name);
@@ -207,7 +208,7 @@ App.WizardStep8Controller = Em.Controller.extend({
         "overrides": valueWithOverrides.overrides
       });
     }, this);
-    var dependentConfig = $.extend(true, [], this.get('configMapping').filterProperty('foreignKey'));
+    var dependentConfig = $.extend(true, [], configMapping.filterProperty('foreignKey'));
     dependentConfig.forEach(function (_config) {
       App.config.setConfigValue(uiConfig, this.get('content.serviceConfigProperties'), _config, this.get('globals'));
       uiConfig.pushObject({
@@ -614,7 +615,6 @@ App.WizardStep8Controller = Em.Controller.extend({
       this.createConfigurationGroups();
     }
     this.createAllHostComponents();
-    this.createHostOverrideConfigurations();
 
     this.ajaxQueueFinished = function () {
       console.log('everything is loaded');
@@ -1238,7 +1238,6 @@ App.WizardStep8Controller = Em.Controller.extend({
           globalSiteProperties[_globalSiteObj.name] = App.config.escapeXMLCharacters(_globalSiteObj.value);
         }
       }
-      this._recordHostOverrideFromObj(_globalSiteObj, 'global', 'version1', this);
     }, this);
     // we don't expose gmond_user to the user; it needs to be the same as gmetad_user
     globalSiteProperties['gmond_user'] = globalSiteProperties['gmetad_user'];
@@ -1255,23 +1254,15 @@ App.WizardStep8Controller = Em.Controller.extend({
     var hiveUser = this.get('globals').someProperty('name', 'hive_user') ? this.get('globals').findProperty('name', 'hive_user').value : null;
     var isHcatSelected = this.get('selectedServices').someProperty('serviceName', 'WEBHCAT');
     var hcatUser = this.get('globals').someProperty('name', 'hcat_user') ? this.get('globals').findProperty('name', 'hcat_user').value : null;
-    var isGLUSTERFSSelected = this.get('selectedServices').someProperty('serviceName', 'GLUSTERFS');
-    
-    // screen out the GLUSTERFS-specific core-site.xml entries when they are not needed
-    if (!isGLUSTERFSSelected) {
-       coreSiteObj = coreSiteObj.filter(function(_config) {
-         return _config.name.indexOf("fs.glusterfs") < 0;
-      });
-    }
+
     coreSiteObj.forEach(function (_coreSiteObj) {
       if ((isOozieSelected || (_coreSiteObj.name != 'hadoop.proxyuser.' + oozieUser + '.hosts' && _coreSiteObj.name != 'hadoop.proxyuser.' + oozieUser + '.groups')) && (isHiveSelected || (_coreSiteObj.name != 'hadoop.proxyuser.' + hiveUser + '.hosts' && _coreSiteObj.name != 'hadoop.proxyuser.' + hiveUser + '.groups')) && (isHcatSelected || (_coreSiteObj.name != 'hadoop.proxyuser.' + hcatUser + '.hosts' && _coreSiteObj.name != 'hadoop.proxyuser.' + hcatUser + '.groups'))) {
         coreSiteProperties[_coreSiteObj.name] = App.config.escapeXMLCharacters(_coreSiteObj.value);
-        this._recordHostOverrideFromObj(_coreSiteObj, 'core-site', 'version1', this);
       }
-      if (isGLUSTERFSSelected && _coreSiteObj.name == "fs.default.name") {
+      if (_coreSiteObj.name == "fs.default.name") {
         coreSiteProperties[_coreSiteObj.name] = this.get('globals').someProperty('name', 'fs_glusterfs_default_name') ? App.config.escapeXMLCharacters(this.get('globals').findProperty('name', 'fs_glusterfs_default_name').value) : null;
       }
-      if (isGLUSTERFSSelected && _coreSiteObj.name == "fs.defaultFS") {
+      if (_coreSiteObj.name == "fs.defaultFS") {
           coreSiteProperties[_coreSiteObj.name] = this.get('globals').someProperty('name', 'glusterfs_defaultFS_name') ? App.config.escapeXMLCharacters(this.get('globals').findProperty('name', 'glusterfs_defaultFS_name').value) : null;
         }
       console.log("STEP*: name of the property is: " + _coreSiteObj.name);
@@ -1285,7 +1276,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     var hdfsProperties = {};
     hdfsSiteObj.forEach(function (_configProperty) {
       hdfsProperties[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
-      this._recordHostOverrideFromObj(_configProperty, 'hdfs-site', 'version1', this);
       console.log("STEP*: name of the property is: " + _configProperty.name);
       console.log("STEP8: value of the property is: " + _configProperty.value);
     }, this);
@@ -1298,7 +1288,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     var Log4jProperties = {};
     Log4jObj.forEach(function (_configProperty) {
       Log4jProperties[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
-      this._recordHostOverrideFromObj(_configProperty, fileName + '-log4j', 'version1', this);
       console.log("STEP*: name of the property is: " + _configProperty.name);
       console.log("STEP8: value of the property is: " + _configProperty.value);
     }, this);
@@ -1310,7 +1299,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     var hueProperties = {};
     hueSiteObj.forEach(function (_configProperty) {
       hueProperties[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
-      this._recordHostOverrideFromObj(_configProperty, 'hue-site', 'version1', this);
       console.log("STEP*: name of the property is: " + _configProperty.name);
       console.log("STEP8: value of the property is: " + _configProperty.value);
     }, this);
@@ -1322,7 +1310,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     var mrProperties = {};
     configs.forEach(function (_configProperty) {
       mrProperties[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
-      this._recordHostOverrideFromObj(_configProperty, 'mapred-site', 'version1', this);
       console.log("STEP*: name of the property is: " + _configProperty.name);
       console.log("STEP8: value of the property is: " + _configProperty.value);
     }, this);
@@ -1334,7 +1321,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     var mrProperties = {};
     configs.forEach(function (_configProperty) {
       mrProperties[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
-      this._recordHostOverrideFromObj(_configProperty, 'yarn-site', 'version1', this);
       console.log("STEP*: name of the property is: " + _configProperty.name);
       console.log("STEP8: value of the property is: " + _configProperty.value);
     }, this);
@@ -1346,7 +1332,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     var csProperties = {};
     configs.forEach(function (_configProperty) {
       csProperties[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
-      this._recordHostOverrideFromObj(_configProperty, 'capacity-scheduler', 'version1', this);
       console.log("STEP*: name of the property is: " + _configProperty.name);
       console.log("STEP8: value of the property is: " + _configProperty.value);
     }, this);
@@ -1358,7 +1343,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     var mqProperties = {};
     configs.forEach(function (_configProperty) {
      mqProperties[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
-     this._recordHostOverrideFromObj(_configProperty, 'mapred-queue-acls', 'version1', this);
       console.log("STEP*: name of the property is: " + _configProperty.name);
       console.log("STEP8: value of the property is: " + _configProperty.value);
     }, this);
@@ -1370,7 +1354,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     var hbaseProperties = {};
     configs.forEach(function (_configProperty) {
       hbaseProperties[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
-      this._recordHostOverrideFromObj(_configProperty, 'hbase-site', 'version1', this);
     }, this);
     return {type: 'hbase-site', tag: 'version1', properties: hbaseProperties};
   },
@@ -1380,7 +1363,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     var oozieProperties = {};
     configs.forEach(function (_configProperty) {
       oozieProperties[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
-      this._recordHostOverrideFromObj(_configProperty, 'oozie-site', 'version1', this);
     }, this);
     return {type: 'oozie-site', tag: 'version1', properties: oozieProperties};
   },
@@ -1390,7 +1372,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     var hiveProperties = {};
     configs.forEach(function (_configProperty) {
       hiveProperties[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
-      this._recordHostOverrideFromObj(_configProperty, 'hive-site', 'version1', this);
     }, this);
     return {type: 'hive-site', tag: 'version1', properties: hiveProperties};
   },
@@ -1400,7 +1381,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     var webHCatProperties = {};
     configs.forEach(function (_configProperty) {
       webHCatProperties[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
-      this._recordHostOverrideFromObj(_configProperty, 'webhcat-site', 'version1', this);
     }, this);
     return {type: 'webhcat-site', tag: 'version1', properties: webHCatProperties};
   },
@@ -1410,7 +1390,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     var csProperties = {};
     configs.forEach(function (_configProperty) {
       csProperties[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
-      this._recordHostOverrideFromObj(_configProperty, 'zoo.cfg', 'version1', this);
     }, this);
     return {type: 'zoo.cfg', tag: 'version1', properties: csProperties};
   },
@@ -1429,7 +1408,6 @@ App.WizardStep8Controller = Em.Controller.extend({
       } else {
         stormProperties[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
       }
-      this._recordHostOverrideFromObj(_configProperty, 'storm-site', 'version1', this);
     }, this);
     return {type: 'storm-site', tag: 'version1', properties: stormProperties};
   },
@@ -1439,7 +1417,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     var tezProperty = {};
     configs.forEach(function (_configProperty) {
       tezProperty[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
-      this._recordHostOverrideFromObj(_configProperty, 'tez-site', 'version1', this);
     }, this);
     return {type: 'tez-site', tag: 'version1', properties: tezProperty};
   },
@@ -1450,7 +1427,6 @@ App.WizardStep8Controller = Em.Controller.extend({
     var falconProperties = {};
     configs.forEach(function (_configProperty) {
       falconProperties[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
-      this._recordHostOverrideFromObj(_configProperty, 'oozie-site', 'version1', this);
     }, this);
     return {type: 'oozie-site', tag: 'version1', properties: falconProperties};
   },
@@ -1481,73 +1457,6 @@ App.WizardStep8Controller = Em.Controller.extend({
   },
 
   /**
-   * Records all the host overrides per site/tag
-   */
-  _recordHostOverrideFromObj: function(serviceConfigObj, siteName, tagName, self){
-    var overrides = serviceConfigObj.overrides;
-    if(overrides && overrides.length>0){
-      overrides.forEach(function(override){
-        override.hosts.forEach(function(host){
-          if(!(host in self.savedHostToOverrideSiteToTagMap)){
-            self.savedHostToOverrideSiteToTagMap[host] = {};
-          }
-          if(!(siteName in self.savedHostToOverrideSiteToTagMap[host])){
-            self.savedHostToOverrideSiteToTagMap[host][siteName] = {};
-            self.savedHostToOverrideSiteToTagMap[host][siteName].map = {};
-          }
-          var finalTag = tagName + '_' + host;
-          console.log("recordHostOverride(): Saving host override for host="+host+", site="+siteName+", tag="+finalTag+", (key,value)=("+serviceConfigObj.name+","+override.value+")");
-          self.savedHostToOverrideSiteToTagMap[host][siteName].tagName = finalTag;
-          self.savedHostToOverrideSiteToTagMap[host][siteName].map[serviceConfigObj.name] = override.value;
-        });
-      });
-    }
-  },
-
-  /**
-   * Creates host level overrides for service configuration.
-   *
-   */
-  createHostOverrideConfigurations: function () {
-    var singlePUTHostData = [];
-    var savedHostSiteArray = [];
-    for ( var host in this.savedHostToOverrideSiteToTagMap) {
-      for ( var siteName in this.savedHostToOverrideSiteToTagMap[host]) {
-        var tagName = this.savedHostToOverrideSiteToTagMap[host][siteName].tagName;
-        var map = this.savedHostToOverrideSiteToTagMap[host][siteName].map;
-        savedHostSiteArray.push(host + "///" + siteName);
-        singlePUTHostData.push({
-          RequestInfo: {
-            query: 'Hosts/host_name='+host
-          },
-          Body: {
-            Hosts: {
-              desired_config: {
-                type: siteName,
-                tag: tagName,
-                properties: map
-              }
-            }
-          }
-        });
-      }
-    }
-    console.log("createHostOverrideConfigSites(): PUTting host-overrides. Data=", singlePUTHostData);
-    if(singlePUTHostData.length>0){
-      var url = App.apiPrefix + '/clusters/' + this.get('clusterName') + '/hosts';
-      this.ajax({
-        type: 'PUT',
-        url: url,
-        data: JSON.stringify(singlePUTHostData),
-        dataType: 'text',
-        beforeSend: function () {
-          console.log("createHostOverrideConfigSites() PUT override=", singlePUTHostData);
-        }
-      });
-    }
-  },
-
-  /**
    * We need to do a lot of ajax calls async in special order. To do this,
    * generate array of ajax objects and then send requests step by step. All
    * ajax objects are stored in <code>ajaxQueue</code>

http://git-wip-us.apache.org/repos/asf/ambari/blob/9c98af16/ambari-web/app/data/HDP2/config_mapping.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2/config_mapping.js b/ambari-web/app/data/HDP2/config_mapping.js
index fa1d6a4..c3757e5 100644
--- a/ambari-web/app/data/HDP2/config_mapping.js
+++ b/ambari-web/app/data/HDP2/config_mapping.js
@@ -73,43 +73,49 @@ var configs = [
     "templateName": ["fs_glusterfs_impl"],
     "foreignKey": null,
     "value": "<templateName[0]>",
-    "filename": "core-site.xml"
+    "filename": "core-site.xml",
+    "serviceName": "GLUSTERFS"
   },
   {
     "name": "fs.glusterfs.volname",
     "templateName": ["fs_glusterfs_volname"],
     "foreignKey": null,
     "value": "<templateName[0]>",
-    "filename": "core-site.xml"
+    "filename": "core-site.xml",
+    "serviceName": "GLUSTERFS"
   },
   {
     "name": "fs.glusterfs.mount",
     "templateName": ["fs_glusterfs_mount"],
     "foreignKey": null,
     "value": "<templateName[0]>",
-    "filename": "core-site.xml"
+    "filename": "core-site.xml",
+    "serviceName": "GLUSTERFS"
   },
   {
     "name": "fs.glusterfs.getfattrcmd",
     "templateName": ["fs_glusterfs_getfattrcmd"],
     "foreignKey": null,
     "value": "<templateName[0]>",
-    "filename": "core-site.xml"
+    "filename": "core-site.xml",
+    "serviceName": "GLUSTERFS"
   },
   {
     "name": "fs.AbstractFileSystem.glusterfs.impl",
     "templateName": ["fs_AbstractFileSystem_glusterfs_impl"],
     "foreignKey": null,
     "value": "<templateName[0]>",
-    "filename": "core-site.xml"
+    "filename": "core-site.xml",
+    "serviceName": "GLUSTERFS"
   },
   {
-	    "name": "gluster.daemon.user",
-	    "templateName": ["gluster_daemon_user"],
-	    "foreignKey": null,
-	    "value": "<templateName[0]>",
-	    "filename": "core-site.xml"
-	  }
+    "name": "gluster.daemon.user",
+    "templateName": ["gluster_daemon_user"],
+    "foreignKey": null,
+    "value": "<templateName[0]>",
+    "filename": "core-site.xml",
+    "serviceName": "GLUSTERFS"
+  }
 ];
 
 /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/9c98af16/ambari-web/app/utils/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js
index 7bfe7cb..d45f94b 100644
--- a/ambari-web/app/utils/config.js
+++ b/ambari-web/app/utils/config.js
@@ -1037,6 +1037,16 @@ App.config = Em.Object.create({
       });
     }
   },
+  /**
+   * exclude configs that depends on services which are uninstalled
+   * if config doesn't have serviceName or dependent service is installed then
+   * config not excluded
+   */
+  excludeUnsupportedConfigs: function (configs, installedServices) {
+    return configs.filter(function (config) {
+      return !(config.serviceName && !installedServices.contains(config.serviceName));
+    });
+  },
 
   launchConfigGroupSelectionCreationDialog : function(serviceId, configGroups, configProperty, callback, isInstaller) {
     var self = this;