Browse Source

AMBARI-9544 RU Upgrade/Downgrade actions should have confirmation. (atkach)

Andrii Tkach 10 years ago
parent
commit
874b048c71

+ 19 - 1
ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js

@@ -271,7 +271,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
       },
       Em.I18n.t('admin.stackUpgrade.downgrade.body').format(currentVersion.repository_name),
       null,
-      Em.I18n.t('admin.stackUpgrade.downgrade.title').format(currentVersion.repository_name),
+      Em.I18n.t('admin.stackUpgrade.dialog.downgrade.header').format(currentVersion.repository_name),
       Em.I18n.t('admin.stackUpgrade.downgrade.proceed')
     );
   },
@@ -344,6 +344,24 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
     this.openUpgradeDialog();
   },
 
+  /**
+   * upgrade confirmation popup
+   * @param {object} version
+   * @return App.ModalPopup
+   */
+  confirmUpgrade: function (version) {
+    var self = this;
+
+    return App.showConfirmationPopup(
+      function () {
+        self.runPreUpgradeCheck.call(self, version);
+      },
+      Em.I18n.t('admin.stackUpgrade.upgrade.confirm.body').format(version.get('displayName')),
+      null,
+      Em.I18n.t('admin.stackUpgrade.dialog.header').format(version.get('displayName'))
+    );
+  },
+
   /**
    * send request for pre upgrade check
    * @param version

+ 3 - 2
ambari-web/app/controllers/main/service/info/summary.js

@@ -80,9 +80,10 @@ App.MainServiceInfoSummaryController = Em.Controller.extend({
     if (App.get('router.clusterController.isLoaded') && !this.get('isRangerPluginsArraySet')) {
       this.setProperties({
         rangerPlugins: this.get('rangerPlugins').map(function (item) {
+          var stackService = App.StackService.find().findProperty('serviceName', item.serviceName);
+          var displayName = (stackService) ? stackService.get('displayName') : item.serviceName;
           return $.extend(item, {
-            pluginTitle: Em.I18n.t('services.service.summary.ranger.plugin.title').
-              format(App.StackService.find().findProperty('serviceName', item.serviceName).get('displayName')),
+            pluginTitle: Em.I18n.t('services.service.summary.ranger.plugin.title').format(displayName),
             isDisplayed: App.Service.find().someProperty('serviceName', item.serviceName),
             status: Em.I18n.t('services.service.summary.ranger.plugin.loadingStatus')
           });

+ 1 - 1
ambari-web/app/messages.js

@@ -1317,8 +1317,8 @@ Em.I18n.translations = {
   'admin.stackUpgrade.doThisLater': "Do This Later",
   'admin.stackUpgrade.pauseUpgrade': "Pause Upgrade",
   'admin.stackUpgrade.downgrade.proceed': "Proceed with Downgrade",
-  'admin.stackUpgrade.downgrade.title': "Downgrade to {0}",
   'admin.stackUpgrade.downgrade.body': "Are you sure you wish to abort the upgrade process and downgrade to {0}",
+  'admin.stackUpgrade.upgrade.confirm.body': "You are about to perform an upgrade to {0}.",
   'admin.stackUpgrade.title': "Stack and Versions",
   'admin.stackUpgrade.state.inProgress': "Upgrade in Progress",
   'admin.stackUpgrade.state.paused': "Upgrade Paused",

+ 1 - 1
ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js

@@ -124,7 +124,7 @@ App.UpgradeVersionBoxView = Em.View.extend({
       if (stringUtils.compareVersions(this.get('content.repositoryVersion'), currentVersion.repository_version) === 1) {
         element.set('isButton', true);
         element.set('text', Em.I18n.t('admin.stackVersions.version.performUpgrade'));
-        element.set('action', 'runPreUpgradeCheck');
+        element.set('action', 'confirmUpgrade');
       } else {
         element.set('iconClass', 'icon-ok');
         element.set('isLink', true);

+ 27 - 2
ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js

@@ -506,18 +506,43 @@ describe('App.MainAdminStackAndUpgradeController', function() {
 
   describe("#confirmDowngrade()", function() {
     before(function () {
-      sinon.stub(App, 'showConfirmationPopup', Em.K);
+      sinon.spy(App, 'showConfirmationPopup');
+      sinon.stub(controller, 'downgrade', Em.K);
     });
     after(function () {
       App.showConfirmationPopup.restore();
+      controller.downgrade.restore();
     });
     it("show confirmation popup", function() {
       controller.set('currentVersion', Em.Object.create({
         repository_version: '2.2',
         repository_name: 'HDP-2.2'
       }));
-      controller.confirmDowngrade();
+      var popup = controller.confirmDowngrade();
       expect(App.showConfirmationPopup.calledOnce).to.be.true;
+      popup.onPrimary();
+      expect(controller.downgrade.calledWith(Em.Object.create({
+        repository_version: '2.2',
+        repository_name: 'HDP-2.2'
+      }))).to.be.true;
+    });
+  });
+
+  describe("#confirmUpgrade()", function() {
+    before(function () {
+      sinon.spy(App, 'showConfirmationPopup');
+      sinon.stub(controller, 'runPreUpgradeCheck', Em.K);
+    });
+    after(function () {
+      App.showConfirmationPopup.restore();
+      controller.runPreUpgradeCheck.restore();
+    });
+    it("show confirmation popup", function() {
+      var version = Em.Object.create({displayName: 'HDP-2.2'});
+      var popup = controller.confirmUpgrade(version);
+      expect(App.showConfirmationPopup.calledOnce).to.be.true;
+      popup.onPrimary();
+      expect(controller.runPreUpgradeCheck.calledWith(version)).to.be.true;
     });
   });