Repository: ambari
Updated Branches:
  refs/heads/trunk 827fb2069 -> e405be9de


AMBARI-15889 Wrong overrides after Add Service Wizard. (ababiichuk)


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

Branch: refs/heads/trunk
Commit: e405be9defb7603a5fbbc02b769cce2dc484f567
Parents: 827fb20
Author: ababiichuk <ababiic...@hortonworks.com>
Authored: Thu Apr 14 19:27:02 2016 +0300
Committer: ababiichuk <ababiic...@hortonworks.com>
Committed: Fri Apr 15 12:48:49 2016 +0300

----------------------------------------------------------------------
 .../main/service/manage_config_groups_controller.js |  2 +-
 .../app/controllers/wizard/step7_controller.js      |  4 ++--
 .../app/mappers/configs/config_groups_mapper.js     |  4 ++--
 .../app/mixins/common/configs/configs_saver.js      | 16 +++++++++++++++-
 ambari-web/app/models/configs/config_group.js       |  2 +-
 ambari-web/test/models/configs/config_group_test.js |  2 +-
 6 files changed, 22 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/e405be9d/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/app/controllers/main/service/manage_config_groups_controller.js 
b/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
index d8bfa32..854e6c8 100644
--- a/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
+++ b/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
@@ -710,7 +710,7 @@ App.ManageConfigGroupsController = 
Em.Controller.extend(App.ConfigOverridable, {
           name: groupName,
           description: this.get('configGroupDesc'),
           isDefault: false,
-          parent_config_group_id: serviceName + '_default',
+          parent_config_group_id: 
App.ServiceConfigGroup.getParentConfigGroupId(serviceName),
           service_id: serviceName,
           service_name: serviceName,
           hosts: [],

http://git-wip-us.apache.org/repos/asf/ambari/blob/e405be9d/ambari-web/app/controllers/wizard/step7_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step7_controller.js 
b/ambari-web/app/controllers/wizard/step7_controller.js
index eb44842..02a555b 100644
--- a/ambari-web/app/controllers/wizard/step7_controller.js
+++ b/ambari-web/app/controllers/wizard/step7_controller.js
@@ -413,7 +413,7 @@ App.WizardStep7Controller = 
Em.Controller.extend(App.ServerValidatorMixin, App.E
    */
   _updateIsEditableFlagForConfig: function (serviceConfigProperty, 
defaultGroupSelected) {
     if (App.isAuthorized('AMBARI.ADD_DELETE_CLUSTERS')) {
-      if (defaultGroupSelected && !this.get('isHostsConfigsPage') && 
!Em.get(serviceConfigProperty, 'group')) {
+      if (defaultGroupSelected && !Em.get(serviceConfigProperty, 'group')) {
         if (serviceConfigProperty.get('serviceName') === 'MISC') {
           var service = 
App.config.get('serviceByConfigTypeMap')[App.config.getConfigTagFromFileName(serviceConfigProperty.get('filename'))];
           serviceConfigProperty.set('isEditable', service && 
!this.get('installedServiceNames').contains(service.get('serviceName')));
@@ -649,7 +649,7 @@ App.WizardStep7Controller = 
Em.Controller.extend(App.ServerValidatorMixin, App.E
    * @returns {Object[]} existing configs + additional config parameters in 
hdfs-client.xml
    */
   addHawqConfigsOnNnHa: function(configs) {
-    var nameService = configs.findProperty('id', 
'dfs.nameservices__hdfs-site').value;
+    var nameService = configs.findProperty('id', 
App.config.configId('dfs.nameservices', 'hdfs-site')).value;
     var propertyNames = [
       'dfs.nameservices',
       'dfs.ha.namenodes.' + nameService,

http://git-wip-us.apache.org/repos/asf/ambari/blob/e405be9d/ambari-web/app/mappers/configs/config_groups_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/configs/config_groups_mapper.js 
b/ambari-web/app/mappers/configs/config_groups_mapper.js
index 98a570b..b389c6d 100644
--- a/ambari-web/app/mappers/configs/config_groups_mapper.js
+++ b/ambari-web/app/mappers/configs/config_groups_mapper.js
@@ -91,7 +91,7 @@ App.configGroupsMapper = App.QuickDataMapper.create({
               
hostNamesForService[configGroup.service_name].splice(hostNamesForService[configGroup.service_name].indexOf(host),
 1);
             });
             configGroup = this.parseIt(configGroup, (mapFromVersions ? 
this.get('config2') : this.get('config')));
-            configGroup.parent_config_group_id = configGroup.service_name + 
'_default';
+            configGroup.parent_config_group_id = 
App.ServiceConfigGroup.getParentConfigGroupId(configGroup.service_name);
             configGroups.push(configGroup);
           }
         }, this);
@@ -133,7 +133,7 @@ App.configGroupsMapper = App.QuickDataMapper.create({
    */
   generateDefaultGroup: function (serviceName, hostNames, childConfigGroups) {
     return {
-      id: serviceName + '_' + 'default',
+      id: App.ServiceConfigGroup.getParentConfigGroupId(serviceName),
       name: 'Default',
       service_name: serviceName,
       description: 'Default cluster level ' + App.format.role(serviceName, 
true) + ' configuration',

http://git-wip-us.apache.org/repos/asf/ambari/blob/e405be9d/ambari-web/app/mixins/common/configs/configs_saver.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/common/configs/configs_saver.js 
b/ambari-web/app/mixins/common/configs/configs_saver.js
index f5dd841..1f81ef1 100644
--- a/ambari-web/app/mixins/common/configs/configs_saver.js
+++ b/ambari-web/app/mixins/common/configs/configs_saver.js
@@ -365,6 +365,16 @@ App.ConfigsSaverMixin = Em.Mixin.create({
   /*********************************** 3. GENERATING JSON TO SAVE 
*****************************/
 
   /**
+   * Map that contains last used timestamp per filename.
+   * There is a case when two config groups can update same filename almost 
simultaneously
+   * so they have equal timestamp only and this causes collision. So to 
prevent this we need to check
+   * if specific filename with specific timestamp is not saved yet
+   *
+   * @type {Object}
+   */
+  _timeStamps: {},
+
+  /**
    * generating common JSON object for desired configs
    * @param configsToSave
    * @param fileNamesToSave
@@ -377,8 +387,12 @@ App.ConfigsSaverMixin = Em.Mixin.create({
     if (Em.isArray(configsToSave) && Em.isArray(fileNamesToSave) && 
fileNamesToSave.length && configsToSave.length) {
       serviceConfigNote = serviceConfigNote || "";
       var tagVersion = "version" + (new Date).getTime();
-
       fileNamesToSave.forEach(function(fName) {
+
+        /** @see <code>_timeStamps<code> **/
+        if (this.get('_timeStamps')[fName] === tagVersion) tagVersion++;
+        this.get('_timeStamps')[fName] = tagVersion;
+
         if (this.allowSaveSite(fName)) {
           var properties = configsToSave.filterProperty('filename', fName);
           var type = App.config.getConfigTagFromFileName(fName);

http://git-wip-us.apache.org/repos/asf/ambari/blob/e405be9d/ambari-web/app/models/configs/config_group.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/configs/config_group.js 
b/ambari-web/app/models/configs/config_group.js
index a2a64d3..44e20d5 100644
--- a/ambari-web/app/models/configs/config_group.js
+++ b/ambari-web/app/models/configs/config_group.js
@@ -151,7 +151,7 @@ App.ServiceConfigGroup = DS.Model.extend({
 App.ServiceConfigGroup.FIXTURES = [];
 
 App.ServiceConfigGroup.getParentConfigGroupId = function(serviceName) {
-  return App.ServiceConfigGroup.groupId(serviceName, 'Default');
+  return App.ServiceConfigGroup.groupId(serviceName, 'default');
 };
 
 App.ServiceConfigGroup.groupId = function(serviceName, groupName) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/e405be9d/ambari-web/test/models/configs/config_group_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/models/configs/config_group_test.js 
b/ambari-web/test/models/configs/config_group_test.js
index 1d254c3..b9bc56b 100644
--- a/ambari-web/test/models/configs/config_group_test.js
+++ b/ambari-web/test/models/configs/config_group_test.js
@@ -133,7 +133,7 @@ describe('App.ServiceConfigGroup', function () {
 
     it("App.ServiceConfigGroup.groupId should be called", function () {
       App.ServiceConfigGroup.getParentConfigGroupId('S1');
-      expect(App.ServiceConfigGroup.groupId.calledWith('S1', 
'Default')).to.be.true;
+      expect(App.ServiceConfigGroup.groupId.calledWith('S1', 
'default')).to.be.true;
     });
   });
 

Reply via email to