Jelajahi Sumber

AMBARI-9900. Incorrect navigation when closing Add Service wizard on Stack And Versions page (alexantonenko)

Alex Antonenko 10 tahun lalu
induk
melakukan
2cb028c555

+ 1 - 0
ambari-web/app/controllers/main/admin/kerberos.js

@@ -161,6 +161,7 @@ App.MainAdminKerberosController = App.KerberosWizardStep4Controller.extend({
 
   startKerberosWizard: function () {
     this.setAddSecurityWizardStatus('RUNNING');
+    App.router.get('kerberosWizardController').setDBProperty('onClosePath', 'main.admin.adminKerberos.index');
     App.router.transitionTo('adminKerberos.adminAddKerberos');
   },
 

+ 1 - 0
ambari-web/app/controllers/main/service.js

@@ -191,6 +191,7 @@ App.MainServiceController = Em.ArrayController.extend({
     if (this.get('isAllServicesInstalled')) {
       return;
     }
+    App.router.get('addServiceController').setDBProperty('onClosePath', 'main.services.index');
     App.router.transitionTo('main.serviceAdd');
   }
 });

+ 2 - 1
ambari-web/app/routes/add_kerberos_routes.js

@@ -70,6 +70,7 @@ module.exports = App.WizardRoute.extend({
           var self = this;
           var kerberosProgressPageController = App.router.get('kerberosProgressPageController');
           var controller = App.router.get('kerberosWizardController');
+          var exitPath = controller.getDBProperty('onClosePath') || 'adminKerberos.index';
           controller.clearTasksData();
           controller.finish();
           App.get('router.updateController').set('isWorking', true);
@@ -84,7 +85,7 @@ module.exports = App.WizardRoute.extend({
           }, {
             alwaysCallback: function () {
               self.hide();
-              App.get('router').transitionTo('adminKerberos.index');
+              App.get('router').transitionTo(exitPath);
               location.reload();
             }
           });

+ 2 - 1
ambari-web/app/routes/add_service_routes.js

@@ -49,12 +49,13 @@ module.exports = App.WizardRoute.extend({
             App.router.get('updateController').updateServices(function(){
               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('main.services.index');location.reload();}});
+            }, {alwaysCallback: function() {self.hide();App.router.transitionTo(exitPath);location.reload();}});
 
           },
           didInsertElement: function(){

+ 2 - 0
ambari-web/app/views/main/admin/stack_upgrade/services_view.js

@@ -46,8 +46,10 @@ App.MainAdminStackServicesView = Em.View.extend({
   goToAddService: function (event) {
     if (event.context == "KERBEROS") {
       App.router.get('mainAdminKerberosController').checkAndStartKerberosWizard();
+      App.router.get('kerberosWizardController').setDBProperty('onClosePath', 'main.admin.stackAndUpgrade.services');
     } else {
       App.router.get('addServiceController').set('serviceToInstall', event.context);
+      App.router.get('addServiceController').setDBProperty('onClosePath', 'main.admin.stackAndUpgrade.services');
       App.get('router').transitionTo('main.serviceAdd');
     }
   },

+ 6 - 3
ambari-web/test/views/main/admin/stack_upgrade/services_view_test.js

@@ -42,13 +42,14 @@ describe('App.MainAdminStackServicesView', function () {
       expect(view.get('services')).to.eql([
         Em.Object.create({serviceName: 'S1', isInstalled: true}),
         Em.Object.create({serviceName: 'S2', isInstalled: false})
-      ])
+      ]);
     });
   });
 
   describe("#goToAddService()" , function() {
     var mock = Em.Object.create({
-      checkAndStartKerberosWizard: Em.K
+      checkAndStartKerberosWizard: Em.K,
+      setDBProperty: sinon.spy()
     });
     beforeEach(function() {
       sinon.stub(App.get('router'), 'transitionTo', Em.K);
@@ -60,13 +61,15 @@ describe('App.MainAdminStackServicesView', function () {
       App.router.get.restore();
       mock.checkAndStartKerberosWizard.restore();
     });
-    it("routes to Add Service Wizard", function() {
+    it("routes to Add Service Wizard and set redirect path on wizard close", function() {
       view.goToAddService({context: "serviceName"});
+      expect(App.router.get.calledWith('addServiceController') && mock.setDBProperty.calledWith('onClosePath', 'main.admin.stackAndUpgrade.services')).to.be.true;
       expect(App.get('router').transitionTo.calledWith('main.serviceAdd')).to.be.true;
       expect(mock.get('serviceToInstall')).to.be.equal("serviceName");
     });
     it("routes to Security Wizard", function() {
       view.goToAddService({context: "KERBEROS"});
+      expect(App.router.get.calledWith('kerberosWizardController') && mock.setDBProperty.calledWith('onClosePath', 'main.admin.stackAndUpgrade.services')).to.be.true;
       expect(mock.checkAndStartKerberosWizard.calledOnce).to.be.true;
     });
   });