Przeglądaj źródła

AMBARI-4040. In installer, behavior of actions in manage config-groups dialog different from reconfigure. (akovalenko)

Aleksandr Kovalenko 11 lat temu
rodzic
commit
02ef1af609

+ 20 - 5
ambari-web/app/controllers/main/service/info/configs.js

@@ -1923,6 +1923,9 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
       classNames: ['sixty-percent-width-modal', 'manage-configuration-group-popup'],
       primary: Em.I18n.t('common.save'),
       onPrimary: function() {
+        if (!this.get('enablePrimary')) {
+          return false;
+        }
         // Save modified config-groups
         if (!!controller) {
           controller.set('selectedService.configGroups', App.router.get('installerManageConfigGroupsController.configGroups'));
@@ -1981,13 +1984,25 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
         var subViewController = this.get('subViewController');
         var selectedConfigGroup = subViewController.get('selectedConfigGroup');
         var managedConfigGroups = subViewController.get('configGroups');
-        // do not save config groups in wizards if Cancel or Close button is clicked
-        if (!(onClose && controller)) {
-          if (!controller) {
-            controller = App.router.get('mainServiceInfoConfigsController');
+        // restore config groups hosts in wizards if Cancel or Close button is clicked
+        if (onClose && controller) {
+          var unusedHosts = controller.get('getAllHosts').slice().mapProperty('hostName');
+          var hostsToGroupMap = subViewController.get('loadedHostsToGroupMap');
+          for (var group in hostsToGroupMap) {
+            var groupToChange = managedConfigGroups.findProperty('name', group);
+            if (groupToChange) {
+              hostsToGroupMap[group].forEach(function (host) {
+                unusedHosts = unusedHosts.without(host);
+              }, this);
+              groupToChange.set('hosts', hostsToGroupMap[group]);
+            }
           }
-          controller.set('configGroups', managedConfigGroups);
+          managedConfigGroups.findProperty('isDefault').set('hosts', unusedHosts);
+        }
+        if (!controller) {
+          controller = App.router.get('mainServiceInfoConfigsController');
         }
+        controller.set('selectedService.configGroups', managedConfigGroups);
         //check whether selectedConfigGroup was selected
         if (selectedConfigGroup && controller.get('configGroups').someProperty('name', selectedConfigGroup.get('name'))) {
           controller.set('selectedConfigGroup', selectedConfigGroup);

+ 2 - 23
ambari-web/app/controllers/main/service/manage_config_groups_controller.js

@@ -518,7 +518,7 @@ App.InstallerManageConfigGroupsController = App.ManageConfigGroupsController.ext
   loadConfigGroups: function (serviceName) {
     this.set('serviceName', serviceName);
     var loadedHostsToGroupMap = this.get('loadedHostsToGroupMap');
-    var configGroups = this.copyConfigGroups(App.router.get('wizardStep7Controller.selectedService.configGroups'));
+    var configGroups = App.router.get('wizardStep7Controller.selectedService.configGroups');
     configGroups.forEach(function (configGroup) {
       if (!configGroup.get('isDefault')) {
         loadedHostsToGroupMap[configGroup.name] = configGroup.hosts.slice();
@@ -527,25 +527,6 @@ App.InstallerManageConfigGroupsController = App.ManageConfigGroupsController.ext
     this.set('configGroups', configGroups);
     this.set('isLoaded', true);
   },
-  /**
-   * copy config groups to manage popup to give user choice whether or not save changes
-   * @param originGroups
-   * @return {Array}
-   */
-  copyConfigGroups: function (originGroups) {
-    var configGroups = [];
-    var defaultConfigGroup = App.ConfigGroup.create($.extend(true, {},originGroups.findProperty('isDefault')));
-    originGroups.forEach(function (configGroup) {
-      if (!configGroup.get('isDefault')) {
-        var copiedGroup = App.ConfigGroup.create($.extend(true, {}, configGroup));
-        copiedGroup.set('parentConfigGroup', defaultConfigGroup);
-        configGroups.pushObject(copiedGroup);
-      }
-    });
-    defaultConfigGroup.set('childConfigGroups', configGroups.slice());
-    configGroups.pushObject(defaultConfigGroup);
-    return configGroups;
-  },
   /**
    * delete selected config group
    */
@@ -660,7 +641,5 @@ App.InstallerManageConfigGroupsController = App.ManageConfigGroupsController.ext
 
   duplicateConfigGroup: function() {
     this.addConfigGroup(true);
-  },
-  //always enable Save button in Manage Dialog in Installer
-  isHostsModified: true
+  }
 })