Repository: ambari
Updated Branches:
  refs/heads/trunk 688f6d46d -> 04fe46d74


AMBARI-15735 Check if persist data 'wizard-data' is removed upon exiting any 
wizard. (atkach)


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

Branch: refs/heads/trunk
Commit: 04fe46d74bccd09f4a367193378e90bda09e7bba
Parents: 688f6d4
Author: Andrii Tkach <[email protected]>
Authored: Wed Apr 6 17:43:51 2016 +0300
Committer: Andrii Tkach <[email protected]>
Committed: Thu Apr 7 11:51:07 2016 +0300

----------------------------------------------------------------------
 .../main/admin/highAvailability_controller.js   |  2 +-
 ambari-web/app/controllers/wizard.js            | 25 ++++++++
 ambari-web/app/routes/add_host_routes.js        | 20 +-----
 ambari-web/app/routes/add_kerberos_routes.js    | 34 +---------
 ambari-web/app/routes/add_service_routes.js     | 17 +----
 .../app/routes/high_availability_routes.js      | 32 +---------
 .../app/routes/ra_high_availability_routes.js   | 37 +----------
 ambari-web/app/routes/reassign_master_routes.js | 31 +---------
 .../app/routes/rm_high_availability_routes.js   | 51 ++-------------
 ambari-web/test/controllers/wizard_test.js      | 65 ++++++++++++++++++++
 10 files changed, 108 insertions(+), 206 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/controllers/main/admin/highAvailability_controller.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/app/controllers/main/admin/highAvailability_controller.js 
b/ambari-web/app/controllers/main/admin/highAvailability_controller.js
index 1115a69..4cd50a6 100644
--- a/ambari-web/app/controllers/main/admin/highAvailability_controller.js
+++ b/ambari-web/app/controllers/main/admin/highAvailability_controller.js
@@ -18,7 +18,7 @@
 
 var App = require('app');
 
-App.MainAdminHighAvailabilityController = Em.Controller.extend({
+App.MainAdminHighAvailabilityController = App.WizardController.extend({
   name: 'mainAdminHighAvailabilityController',
 
   tag: null,

http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/controllers/wizard.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard.js 
b/ambari-web/app/controllers/wizard.js
index c349e55..27bef23 100644
--- a/ambari-web/app/controllers/wizard.js
+++ b/ambari-web/app/controllers/wizard.js
@@ -1348,5 +1348,30 @@ App.WizardController = 
Em.Controller.extend(App.LocalStorage, App.ThemesMappingM
 
   loadRecommendations: function () {
     this.set("content.recommendations", this.getDBProperty('recommendations'));
+  },
+
+  /**
+   * reset stored wizard data and reload App
+   * @param {App.WizardController} controller - wizard controller
+   * @param {string} route - preferable path to go after wizard finished
+   */
+  resetOnClose: function(controller, route) {
+    App.router.get('wizardWatcherController').resetUser();
+    controller.finish();
+    App.router.get('updateController').set('isWorking', true);
+    App.clusterStatus.setClusterStatus({
+      clusterName: App.get('clusterName'),
+      clusterState: 'DEFAULT',
+      localdb: App.db.data
+    },
+    {
+      alwaysCallback: function () {
+        controller.get('popup').hide();
+        App.router.transitionTo(route);
+        Em.run.next(function() {
+          location.reload();
+        });
+      }
+    });
   }
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/routes/add_host_routes.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/add_host_routes.js 
b/ambari-web/app/routes/add_host_routes.js
index 7c498a7..4b9f79a 100644
--- a/ambari-web/app/routes/add_host_routes.js
+++ b/ambari-web/app/routes/add_host_routes.js
@@ -22,23 +22,8 @@ module.exports = App.WizardRoute.extend({
   route: '/host/add',
 
   leaveWizard: function (router, context) {
-    App.router.get('wizardWatcherController').resetUser();
     var addHostController = router.get('addHostController');
-    App.router.get('updateController').set('isWorking', true);
-    addHostController.finish();
-    App.clusterStatus.setClusterStatus({
-      clusterName: App.router.get('content.cluster.name'),
-      clusterState: 'DEFAULT',
-      localdb: App.db.data
-    }, {
-      alwaysCallback: function () {
-        context.hide();
-        App.router.transitionTo('hosts.index');
-        Em.run.next(function() {
-          location.reload();
-        });
-      }
-    });
+    addHostController.resetOnClose(addHostController, 'hosts.index');
   },
 
   enter: function (router) {
@@ -47,7 +32,7 @@ module.exports = App.WizardRoute.extend({
       Ember.run.next(function () {
         var addHostController = router.get('addHostController');
         App.router.get('updateController').set('isWorking', false);
-        App.ModalPopup.show({
+        var popup = App.ModalPopup.show({
           classNames: ['full-width-modal'],
           header: Em.I18n.t('hosts.add.header'),
           bodyClass: App.AddHostView.extend({
@@ -98,6 +83,7 @@ module.exports = App.WizardRoute.extend({
           }
         }
 
+        addHostController.set('popup', popup);
         
App.router.get('wizardWatcherController').setUser(addHostController.get('name'));
         router.transitionTo('step' + addHostController.get('currentStep'));
       });

http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/routes/add_kerberos_routes.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/add_kerberos_routes.js 
b/ambari-web/app/routes/add_kerberos_routes.js
index 8393f39..074f821 100644
--- a/ambari-web/app/routes/add_kerberos_routes.js
+++ b/ambari-web/app/routes/add_kerberos_routes.js
@@ -67,14 +67,10 @@ module.exports = App.WizardRoute.extend({
         },
 
         exitWizard: function () {
-          var self = this;
           var kerberosProgressPageController = 
App.router.get('kerberosProgressPageController');
           var controller = App.router.get('kerberosWizardController');
           var exitPath = controller.getDBProperty('onClosePath') || 
'adminKerberos.index';
-          App.router.get('wizardWatcherController').resetUser();
           controller.clearTasksData();
-          controller.finish();
-          App.get('router.updateController').set('isWorking', true);
           controller.discardChanges().then(function() {
             if (App.get('testMode')) {
               App.get('router').transitionTo('adminKerberos.index');
@@ -82,19 +78,7 @@ module.exports = App.WizardRoute.extend({
                 location.reload();
               });
             }
-            App.clusterStatus.setClusterStatus({
-              clusterName: App.router.getClusterName(),
-              clusterState: 'DEFAULT',
-              localdb: App.db.data
-            }, {
-              alwaysCallback: function () {
-                self.hide();
-                App.get('router').transitionTo(exitPath);
-                Em.run.next(function() {
-                  location.reload();
-                });
-              }
-            });
+            controller.resetOnClose(controller, exitPath);
           });
         }
       });
@@ -364,21 +348,7 @@ module.exports = App.WizardRoute.extend({
     back: Em.Router.transitionTo('step7'),
     next: function (router) {
       var controller = router.get('kerberosWizardController');
-      controller.finish();
-      App.clusterStatus.setClusterStatus({
-        clusterName: App.get('router').getClusterName(),
-        clusterState: 'DEFAULT',
-        localdb: App.db.data
-      }, {
-        alwaysCallback: function () {
-          controller.get('popup').hide();
-          App.get('router').transitionTo('adminKerberos.index');
-          Em.run.next(function() {
-            location.reload();
-          });
-        }
-      });
-
+      controller.resetOnClose(controller, 'adminKerberos.index');
     }
   })
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/routes/add_service_routes.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/add_service_routes.js 
b/ambari-web/app/routes/add_service_routes.js
index 5458847..2aaf1c1 100644
--- a/ambari-web/app/routes/add_service_routes.js
+++ b/ambari-web/app/routes/add_service_routes.js
@@ -45,7 +45,6 @@ module.exports = App.WizardRoute.extend({
                 App.router.transitionTo('main.services.index');
               },
               onClose: function () {
-                App.router.get('wizardWatcherController').resetUser();
                 this.set('showCloseButton', false); // prevent user to click 
"Close" many times
                 App.router.get('updateController').set('isWorking', true);
                 var self = this;
@@ -53,21 +52,7 @@ module.exports = App.WizardRoute.extend({
                   App.router.get('updateController').updateServiceMetric();
                 });
                 var exitPath = 
addServiceController.getDBProperty('onClosePath') || 'main.services.index';
-                addServiceController.finish();
-                // We need to do recovery based on whether we are in Add Host 
or Installer wizard
-                App.clusterStatus.setClusterStatus({
-                  clusterName: App.router.get('content.cluster.name'),
-                  clusterState: 'DEFAULT'
-                }, {
-                  alwaysCallback: function () {
-                    self.hide();
-                    App.router.transitionTo(exitPath);
-                    Em.run.next(function() {
-                      location.reload();
-                    });
-                  }
-                });
-
+                addServiceController.resetOnClose(addServiceController, 
exitPath);
               },
               didInsertElement: function () {
                 this.fitHeight();

http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/routes/high_availability_routes.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/high_availability_routes.js 
b/ambari-web/app/routes/high_availability_routes.js
index 9042dbd..47bfc30 100644
--- a/ambari-web/app/routes/high_availability_routes.js
+++ b/ambari-web/app/routes/high_availability_routes.js
@@ -52,7 +52,6 @@ module.exports = App.WizardRoute.extend({
           
}.observes('App.router.highAvailabilityWizardController.currentStep'),
 
           onClose: function () {
-            App.router.get('wizardWatcherController').resetUser();
             var self = this;
             var currStep = 
App.router.get('highAvailabilityWizardController.currentStep');
             var highAvailabilityProgressPageController = 
App.router.get('highAvailabilityProgressPageController');
@@ -67,21 +66,7 @@ module.exports = App.WizardRoute.extend({
             } else {
               var controller = 
App.router.get('highAvailabilityWizardController');
               controller.clearTasksData();
-              controller.finish();
-              App.router.get('updateController').set('isWorking', true);
-              App.clusterStatus.setClusterStatus({
-                clusterName: controller.get('content.cluster.name'),
-                clusterState: 'DEFAULT',
-                localdb: App.db.data
-              }, {
-                alwaysCallback: function () {
-                  self.hide();
-                  App.router.transitionTo('main.services.index');
-                  Em.run.next(function() {
-                    location.reload();
-                  });
-                }
-              });
+              controller.resetOnClose(controller, self, 'main.services.index');
             }
           },
           didInsertElement: function () {
@@ -326,20 +311,7 @@ module.exports = App.WizardRoute.extend({
       var proceed = function() {
         var controller = router.get('highAvailabilityWizardController');
         controller.clearTasksData();
-        controller.finish();
-        App.clusterStatus.setClusterStatus({
-          clusterName: controller.get('content.cluster.name'),
-          clusterState: 'DEFAULT',
-          localdb: App.db.data
-        }, {
-          alwaysCallback: function () {
-            controller.get('popup').hide();
-            router.transitionTo('main.services.index');
-            Em.run.next(function() {
-              location.reload();
-            });
-          }
-        });
+        controller.resetOnClose(controller, 'main.services.index');
       };
       if (App.Service.find().someProperty('serviceName', 'HAWQ')) {
         App.showAlertPopup(

http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/routes/ra_high_availability_routes.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/ra_high_availability_routes.js 
b/ambari-web/app/routes/ra_high_availability_routes.js
index 54844c0..10bf3a0 100644
--- a/ambari-web/app/routes/ra_high_availability_routes.js
+++ b/ambari-web/app/routes/ra_high_availability_routes.js
@@ -41,44 +41,13 @@ module.exports = App.WizardRoute.extend({
 
         onClose: function () {
           var rAHighAvailabilityWizardController = 
router.get('rAHighAvailabilityWizardController'),
-              currStep = rAHighAvailabilityWizardController.get('currentStep'),
-              self = this;
-          App.router.get('wizardWatcherController').resetUser();
+              currStep = rAHighAvailabilityWizardController.get('currentStep');
           if (parseInt(currStep) === 4) {
             App.showConfirmationPopup(function () {
-              router.get('updateController').set('isWorking', true);
-              rAHighAvailabilityWizardController.finish();
-              App.clusterStatus.setClusterStatus({
-                clusterName: App.router.getClusterName(),
-                clusterState: 'DEFAULT',
-                localdb: App.db.data
-              }, {
-                alwaysCallback: function () {
-                  self.hide();
-                  router.transitionTo('main.services.index');
-                  Em.run.next(function() {
-                    location.reload();
-                  });
-                }
-              });
+              
rAHighAvailabilityWizardController.resetOnClose(rAHighAvailabilityWizardController,
 'main.services.index');
             }, Em.I18n.t('admin.ra_highAvailability.closePopup'));
           } else {
-            router.get('updateController').set('isWorking', true);
-            rAHighAvailabilityWizardController.finish();
-            App.router.get('wizardWatcherController').resetUser();
-            App.clusterStatus.setClusterStatus({
-              clusterName: App.router.getClusterName(),
-              clusterState: 'DEFAULT',
-              localdb: App.db.data
-            }, {
-              alwaysCallback: function () {
-                self.hide();
-                router.transitionTo('main.services.index');
-                Em.run.next(function() {
-                  location.reload();
-                });
-              }
-            });
+            
rAHighAvailabilityWizardController.resetOnClose(rAHighAvailabilityWizardController,
 'main.services.index');
           }
         },
         didInsertElement: function () {

http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/routes/reassign_master_routes.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/reassign_master_routes.js 
b/ambari-web/app/routes/reassign_master_routes.js
index acc071d..8f57d8a 100644
--- a/ambari-web/app/routes/reassign_master_routes.js
+++ b/ambari-web/app/routes/reassign_master_routes.js
@@ -22,21 +22,8 @@ module.exports = App.WizardRoute.extend({
   route: '/service/reassign',
 
   leaveWizard: function (router, context) {
-    App.router.get('wizardWatcherController').resetUser();
     var reassignMasterController = router.get('reassignMasterController');
-    App.router.get('updateController').set('isWorking', true);
-    reassignMasterController.finish();
-    App.clusterStatus.setClusterStatus({
-      clusterName: App.router.get('content.cluster.name'),
-      clusterState: 'DEFAULT',
-      localdb: App.db.data
-    }, {alwaysCallback: function () {
-      context.hide();
-      router.transitionTo('main.index');
-      Em.run.next(function() {
-        location.reload();
-      });
-    }});
+    reassignMasterController.resetOnClose(reassignMasterController, 
'main.index');
   },
 
   enter: function (router) {
@@ -362,21 +349,7 @@ module.exports = App.WizardRoute.extend({
       var controller = router.get('reassignMasterController');
       var reassignMasterWizardStep7 = 
router.get('reassignMasterWizardStep7Controller');
       if (!reassignMasterWizardStep7.get('isSubmitDisabled')) {
-        controller.finish();
-        controller.get('popup').hide();
-        App.clusterStatus.setClusterStatus({
-          clusterName: 
router.get('reassignMasterController.content.cluster.name'),
-          clusterState: 'DEFAULT',
-          localdb: App.db.data
-        }, {
-          alwaysCallback: function () {
-            controller.get('popup').hide();
-            router.transitionTo('main.index');
-            Em.run.next(function() {
-              location.reload();
-            });
-          }
-        });
+        controller.resetOnClose(controller, 'main.index');
       }
     },
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/routes/rm_high_availability_routes.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/rm_high_availability_routes.js 
b/ambari-web/app/routes/rm_high_availability_routes.js
index e6f091f..8166650 100644
--- a/ambari-web/app/routes/rm_high_availability_routes.js
+++ b/ambari-web/app/routes/rm_high_availability_routes.js
@@ -39,43 +39,13 @@ module.exports = App.WizardRoute.extend({
 
         onClose: function () {
           var rMHighAvailabilityWizardController = 
router.get('rMHighAvailabilityWizardController'),
-              currStep = rMHighAvailabilityWizardController.get('currentStep'),
-              self = this;
-          App.router.get('wizardWatcherController').resetUser();
+              currStep = rMHighAvailabilityWizardController.get('currentStep');
           if (parseInt(currStep) === 4) {
             App.showConfirmationPopup(function () {
-              router.get('updateController').set('isWorking', true);
-              rMHighAvailabilityWizardController.finish();
-              App.clusterStatus.setClusterStatus({
-                clusterName: App.router.getClusterName(),
-                clusterState: 'DEFAULT',
-                localdb: App.db.data
-              }, {
-                alwaysCallback: function () {
-                  self.hide();
-                  router.transitionTo('main.services.index');
-                  Em.run.next(function() {
-                    location.reload();
-                  });
-                }
-              });
+              
rMHighAvailabilityWizardController.resetOnClose(rMHighAvailabilityWizardController,
 'main.services.index');
             }, Em.I18n.t('admin.rm_highAvailability.closePopup'));
           } else {
-            router.get('updateController').set('isWorking', true);
-            rMHighAvailabilityWizardController.finish();
-            App.clusterStatus.setClusterStatus({
-              clusterName: App.router.getClusterName(),
-              clusterState: 'DEFAULT',
-              localdb: App.db.data
-            }, {
-              alwaysCallback: function () {
-                self.hide();
-                router.transitionTo('main.services.index');
-                Em.run.next(function() {
-                  location.reload();
-                });
-              }
-            });
+            
rMHighAvailabilityWizardController.resetOnClose(rMHighAvailabilityWizardController,
 'main.services.index');
           }
         },
         didInsertElement: function () {
@@ -197,20 +167,7 @@ module.exports = App.WizardRoute.extend({
     },
     next: function (router) {
       var controller = router.get('rMHighAvailabilityWizardController');
-      controller.finish();
-      App.clusterStatus.setClusterStatus({
-        clusterName: controller.get('content.cluster.name'),
-        clusterState: 'DEFAULT',
-        localdb: App.db.data
-      }, {
-        alwaysCallback: function () {
-          controller.get('popup').hide();
-          router.transitionTo('main.services.index');
-          Em.run.next(function () {
-            location.reload();
-          });
-        }
-      });
+      controller.resetOnClose(controller, 'main.services.index');
     }
   })
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/test/controllers/wizard_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/wizard_test.js 
b/ambari-web/test/controllers/wizard_test.js
index 0264472..c056052 100644
--- a/ambari-web/test/controllers/wizard_test.js
+++ b/ambari-web/test/controllers/wizard_test.js
@@ -1639,4 +1639,69 @@ describe('App.WizardController', function () {
 
   });
 
+  describe("#resetOnClose()", function () {
+    var ctrl = Em.Object.create({
+      finish: Em.K,
+      popup: {
+        hide: Em.K
+      }
+    });
+
+    var mock = Em.Object.create({
+      resetUser: Em.K
+    });
+
+    beforeEach(function () {
+      sinon.stub(ctrl, 'finish');
+      sinon.stub(ctrl.popup, 'hide');
+      sinon.stub(App.router, 'get').returns(mock);
+      sinon.stub(App.clusterStatus, 'setClusterStatus', function (arg1, arg2) {
+        arg2.alwaysCallback();
+      });
+      sinon.stub(Em.run, 'next');
+      sinon.stub(mock, 'resetUser');
+      sinon.stub(App.router, 'transitionTo');
+
+      c.resetOnClose(ctrl, 'path');
+    });
+
+    afterEach(function () {
+      ctrl.finish.restore();
+      ctrl.popup.hide.restore();
+      App.router.get.restore();
+      App.clusterStatus.setClusterStatus.restore();
+      Em.run.next.restore();
+      mock.resetUser.restore();
+      App.router.transitionTo.restore();
+    });
+
+    it("resetUser should be called", function () {
+      expect(mock.resetUser.calledOnce).to.be.true;
+    });
+
+    it("finish should be called", function () {
+      expect(ctrl.finish.calledOnce).to.be.true;
+    });
+
+    it("isWorking should be true", function () {
+      expect(mock.get('isWorking')).to.be.true;
+    });
+
+    it("App.clusterStatus.setClusterStatus should be called", function () {
+      expect(App.clusterStatus.setClusterStatus.calledOnce).to.be.true;
+    });
+
+    it("popup should be hidden", function () {
+      expect(ctrl.get('popup').hide.calledOnce).to.be.true;
+    });
+
+    it("App.router.transitionTo should be called", function () {
+      expect(App.router.transitionTo.calledOnce).to.be.true;
+    });
+
+    it("Em.run.next should be called", function () {
+      expect(Em.run.next.calledOnce).to.be.true;
+    });
+  });
+
 });

Reply via email to