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 2015/09/09 16:01:43 UTC

ambari git commit: AMBARI-13042 Manage Config Groups: revert changes takes too much time. (atkach)

Repository: ambari
Updated Branches:
  refs/heads/trunk 37f8c88f2 -> 40f2ac2f1


AMBARI-13042 Manage Config Groups: revert changes takes too much time. (atkach)


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

Branch: refs/heads/trunk
Commit: 40f2ac2f17837eec848489478b70db1162267804
Parents: 37f8c88
Author: Andrii Tkach <at...@hortonworks.com>
Authored: Wed Sep 9 11:50:02 2015 +0300
Committer: Andrii Tkach <at...@hortonworks.com>
Committed: Wed Sep 9 17:01:19 2015 +0300

----------------------------------------------------------------------
 .../controllers/main/service/info/configs.js    |  2 +-
 .../service/manage_config_groups_controller.js  | 22 ++++++++++++----
 .../main/service/configs/config_overridable.js  | 27 ++++++++++++--------
 .../main/service/manage_config_groups_view.js   | 12 +--------
 .../manage_config_groups_controller_test.js     |  1 +
 5 files changed, 36 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/40f2ac2f/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 978c03b..6e31216 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -51,7 +51,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ConfigsLoader, A
    */
   configGroups: function() {
     return this.get('groupsStore').filterProperty('serviceName', this.get('content.serviceName'));
-  }.property('content.serviceName', 'groupsStore.length', 'groupStore.@each.name'),
+  }.property('content.serviceName', 'groupsStore'),
 
   dependentConfigGroups: function() {
     if (this.get('dependentServiceNames.length') === 0) return [];

http://git-wip-us.apache.org/repos/asf/ambari/blob/40f2ac2f/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 a2f9628..d580139 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
@@ -95,6 +95,12 @@ App.ManageConfigGroupsController = Em.Controller.extend(App.ConfigOverridable, {
   clusterHosts: [],
 
   /**
+   * trigger <code>selectDefaultGroup</code> after group delete
+   * @type {null}
+   */
+  groupDeleteTrigger: null,
+
+  /**
    * List of available service components for <code>serviceName</code>
    * @type {{componentName: string, displayName: string, selected: boolean}[]}
    */
@@ -560,6 +566,7 @@ App.ManageConfigGroupsController = Em.Controller.extend(App.ConfigOverridable, {
     this.deleteHosts();
     this.get('configGroups').removeObject(selectedConfigGroup);
     this.set('selectedConfigGroup', this.get('configGroups').findProperty('isDefault'));
+    this.propertyDidChange('groupDeleteTrigger');
   },
 
   /**
@@ -769,20 +776,25 @@ App.ManageConfigGroupsController = Em.Controller.extend(App.ConfigOverridable, {
       },
 
       onClose: function () {
-        this.resetGroupChanges();
+        //<code>_super</code> has to be called before <code>resetGroupChanges</code>
+        var originalGroups = this.get('subViewController.originalConfigGroups').slice(0);
         this._super();
+        this.resetGroupChanges(originalGroups);
       },
 
       onSecondary: function () {
-        this.resetGroupChanges();
-        this._super();
+        this.onClose();
       },
 
-      resetGroupChanges: function () {
+      /**
+       * reset group changes made by user
+       * @param {Array} originalGroups
+       */
+      resetGroupChanges: function (originalGroups) {
         if (this.get('subViewController.isHostsModified')) {
           App.ServiceConfigGroup.find().clear();
           App.store.commit();
-          App.store.loadMany(App.ServiceConfigGroup, this.get('subViewController.originalConfigGroups'));
+          App.store.loadMany(App.ServiceConfigGroup, originalGroups);
           App.store.commit();
         }
       },

http://git-wip-us.apache.org/repos/asf/ambari/blob/40f2ac2f/ambari-web/app/mixins/main/service/configs/config_overridable.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/main/service/configs/config_overridable.js b/ambari-web/app/mixins/main/service/configs/config_overridable.js
index d5b733c..1962502 100644
--- a/ambari-web/app/mixins/main/service/configs/config_overridable.js
+++ b/ambari-web/app/mixins/main/service/configs/config_overridable.js
@@ -135,27 +135,27 @@ App.ConfigOverridable = Em.Mixin.create({
         } else {
           var newConfigGroupName = this.get('newConfigGroupName').trim();
           var newConfigGroup = {
-            id: null,
+            id: serviceName + "_NEW_" + configGroups.length,
             name: newConfigGroupName,
             description: Em.I18n.t('config.group.description.default').format(new Date().toDateString()),
             service_id: serviceId,
             hosts: [],
             desired_configs: []
           };
+          App.store.load(App.ServiceConfigGroup, newConfigGroup);
+          App.store.commit();
           if (!isInstaller) {
             self.postNewConfigurationGroup(newConfigGroup);
           }
-          if (newConfigGroup) {
-            newConfigGroup.set('parentConfigGroup', configGroups.findProperty('isDefault'));
-            configGroups.pushObject(newConfigGroup);
-            if (isInstaller) {
-              self.persistConfigGroups();
-            } else {
-              self.saveGroupConfirmationPopup(newConfigGroupName);
-            }
-            this.hide();
-            callback(newConfigGroup);
+          newConfigGroup = App.ServiceConfigGroup.find(newConfigGroup.id);
+          configGroups.pushObject(newConfigGroup);
+          if (isInstaller) {
+            self.persistConfigGroups();
+          } else {
+            self.saveGroupConfirmationPopup(newConfigGroupName);
           }
+          this.hide();
+          callback(newConfigGroup);
         }
       },
       onSecondary: function () {
@@ -235,6 +235,7 @@ App.ConfigOverridable = Em.Mixin.create({
     var sendData = {
       name: 'config_groups.create',
       data: {
+        'mock_id': newConfigGroupData.id,
         'group_name': newConfigGroupData.name,
         'service_id': newConfigGroupData.service_id,
         'description': newConfigGroupData.description,
@@ -243,6 +244,10 @@ App.ConfigOverridable = Em.Mixin.create({
       success: 'successFunction',
       error: 'errorFunction',
       successFunction: function (response, opt, params) {
+        var configGroupData = App.router.get('manageConfigGroupsController').generateOriginalConfigGroups([App.ServiceConfigGroup.find(params.mock_id)]);
+        App.configGroupsMapper.deleteRecord(App.ServiceConfigGroup.find(params.mock_id));
+        configGroupData[0].id = response.resources[0].ConfigGroup.id;
+        App.store.load(App.ServiceConfigGroup, configGroupData[0]);
         App.ServiceConfigGroup.find().clear();
         if (callback) {
           callback();

http://git-wip-us.apache.org/repos/asf/ambari/blob/40f2ac2f/ambari-web/app/views/main/service/manage_config_groups_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/manage_config_groups_view.js b/ambari-web/app/views/main/service/manage_config_groups_view.js
index f7477ae..d4cb381 100644
--- a/ambari-web/app/views/main/service/manage_config_groups_view.js
+++ b/ambari-web/app/views/main/service/manage_config_groups_view.js
@@ -135,16 +135,6 @@ App.MainServiceManageConfigGroupView = Em.View.extend({
   }.observes('selectedConfigGroup'),
 
   /**
-   * Select first config group after all groups are loaded
-   * @method onLoad
-   */
-  onLoad: function () {
-    if (this.get('controller.isLoaded')) {
-      this.set('selectedConfigGroup', this.get('controller.configGroups')[0])
-    }
-  }.observes('controller.isLoaded', 'controller.configGroups'),
-
-  /**
    * Select default config group after all config groups are loaded
    * @method selectDefaultGroup
    */
@@ -152,6 +142,6 @@ App.MainServiceManageConfigGroupView = Em.View.extend({
     if (this.get('controller.isLoaded')) {
       this.set('selectedConfigGroup', [this.get('controller.configGroups').findProperty('isDefault')]);
     }
-  }.observes('controller.isLoaded')
+  }.observes('controller.isLoaded', 'controller.groupDeleteTrigger')
 
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/40f2ac2f/ambari-web/test/controllers/main/service/manage_config_groups_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/service/manage_config_groups_controller_test.js b/ambari-web/test/controllers/main/service/manage_config_groups_controller_test.js
index 6d4eec7..4828869 100644
--- a/ambari-web/test/controllers/main/service/manage_config_groups_controller_test.js
+++ b/ambari-web/test/controllers/main/service/manage_config_groups_controller_test.js
@@ -183,6 +183,7 @@ describe('App.ManageConfigGroupsController', function() {
 
       c.deleteConfigGroup();
 
+      expect(c.get('configGroups.length')).to.equal(1);
       expect(c.get('selectedConfigGroup.hosts')).to.include.members(['h1','h2','h3']);
       expect(c.get('selectedConfigGroup.isDefault')).to.be.true;
     });