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/10/27 12:44:14 UTC

ambari git commit: AMBARI-13577 Rolling upgrade confirmation dialog message displays base version as null. (atkach)

Repository: ambari
Updated Branches:
  refs/heads/branch-2.1 5491d2aeb -> 334b48336


AMBARI-13577 Rolling upgrade confirmation dialog message displays base version as null. (atkach)


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

Branch: refs/heads/branch-2.1
Commit: 334b4833640913a77735c3511df2c0f15784989d
Parents: 5491d2a
Author: Andrii Tkach <at...@hortonworks.com>
Authored: Tue Oct 27 13:26:03 2015 +0200
Committer: Andrii Tkach <at...@hortonworks.com>
Committed: Tue Oct 27 13:44:06 2015 +0200

----------------------------------------------------------------------
 .../main/admin/stack_and_upgrade_controller.js  | 88 +++++++++++---------
 .../admin/stack_and_upgrade_controller_test.js  | 31 +++++++
 2 files changed, 79 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/334b4833/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
index e2deaf5..21f6164 100644
--- a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
+++ b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
@@ -573,34 +573,42 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
   },
 
   /**
+   * run upgrade checks and add results to each method object and set selected method
+   * @param {Em.Object} version
+   */
+  runUpgradeMethodChecks: function(version) {
+    this.get('upgradeMethods').forEach(function (method) {
+      if (method.get('allowed')) {
+        this.runPreUpgradeCheckOnly({
+          value: version.get('repositoryVersion'),
+          label: version.get('displayName'),
+          type: method.get('type')
+        });
+      }
+    }, this);
+  },
+
+  /**
    * Open upgrade options window: upgrade type and failures tolerance
    * @param {boolean} isInUpgradeWizard
    * @param {object} version
    * @return App.ModalPopup
    */
-  upgradeOptions: function(isInUpgradeWizard, version) {
+  upgradeOptions: function (isInUpgradeWizard, version) {
     var self = this;
+    if (!isInUpgradeWizard) {
+      this.runUpgradeMethodChecks(version);
+    }
+
     return App.ModalPopup.show({
       encodeBody: false,
-      primary: isInUpgradeWizard? Em.I18n.t('ok') : Em.I18n.t('common.proceed'),
+      primary: isInUpgradeWizard ? Em.I18n.t('ok') : Em.I18n.t('common.proceed'),
       primaryClass: 'btn-success',
       classNames: ['upgrade-options-popup'],
       header: Em.I18n.t('admin.stackVersions.version.upgrade.upgradeOptions.header'),
       bodyClass: Em.View.extend({
         templateName: require('templates/main/admin/stack_upgrade/upgrade_options'),
-        didInsertElement: function() {
-          //add pre-upgrade check results to each method object and set selected method
-          var view = this;
-          self.get('upgradeMethods').forEach(function(method){
-            if (!isInUpgradeWizard && method.get('allowed')) {
-              self.runPreUpgradeCheckOnly.call(self, {
-                value: version.get('repositoryVersion'),
-                label: version.get('displayName'),
-                type: method.get('type')
-              });
-            }
-          });
-
+        didInsertElement: function () {
           App.tooltip($(".failure-tolerance-tooltip"), {
             placement: "top",
             title: Em.I18n.t('admin.stackVersions.version.upgrade.upgradeOptions.tolerance.tooltip')
@@ -616,23 +624,23 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
             });
           }, 1000);
         },
-        parentView: this.get('parentView'),
-        isInUpgradeWizard: isInUpgradeWizard,
-        versionText: isInUpgradeWizard? '' : Em.I18n.t('admin.stackVersions.version.upgrade.upgradeOptions.bodyMsg.version').format(version.get('displayName')),
         upgradeMethods: function () {
           self.updateSelectedMethod(isInUpgradeWizard);
           return self.get('upgradeMethods');
-        }.property('self.upgradeMethods'),
-        selectMethod: function(event) {
+        }.property().volatile(),
+        isInUpgradeWizard: isInUpgradeWizard,
+        versionText: isInUpgradeWizard ? '' : Em.I18n.t('admin.stackVersions.version.upgrade.upgradeOptions.bodyMsg.version').format(version.get('displayName')),
+        selectMethod: function (event) {
           if (isInUpgradeWizard || !event.context.get('allowed') || event.context.get('isPrecheckFailed')) return;
           var selectedMethod = event.context;
-          this.get('upgradeMethods').forEach(function(method){
+          self.updateSelectedMethod(isInUpgradeWizard);
+          self.get('upgradeMethods').forEach(function (method) {
             method.set('selected', false);
           });
           selectedMethod.set('selected', true);
           this.set('parentView.selectedMethod', selectedMethod);
         },
-        openMessage: function(event) {
+        openMessage: function (event) {
           if (isInUpgradeWizard || !event.context.get('allowed')) return;
           var data = event.context.get('precheckResultsData');
           var header = Em.I18n.t('popup.clusterCheck.Upgrade.header').format(version.get('displayName')),
@@ -670,14 +678,19 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
           }, configs, version.get('displayName'));
         }
       }),
-      selectedMethod: '',
+
+      /**
+       * @type {Em.Object}
+       * @default null
+       */
+      selectedMethod: null,
       skipComponentFailures: self.get('failuresTolerance.skipComponentFailures'),
       skipSCFailures: self.get('failuresTolerance.skipSCFailures'),
-      disablePrimary: function() {
+      disablePrimary: function () {
         if (isInUpgradeWizard) return false;
-        var selectedMethod = self.get('upgradeMethods').findProperty('selected', true);
+        var selectedMethod = self.get('upgradeMethods').findProperty('selected');
         return selectedMethod ? selectedMethod.get('isPrecheckFailed') : true;
-      }.property('selectedMethod', 'selectedMethod.isPrecheckFailed'),
+      }.property('selectedMethod'),
       onPrimary: function () {
         this.hide();
         if (isInUpgradeWizard) {
@@ -686,35 +699,30 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
             sender: self,
             data: {
               upgradeId: self.get('upgradeId'),
-              skipComponentFailures: this.get('skipComponentFailures')? 'true': 'false',
-              skipSCFailures: this.get('skipSCFailures')? 'true': 'false'
+              skipComponentFailures: Boolean(this.get('skipComponentFailures')).toString(),
+              skipSCFailures: Boolean(this.get('skipSCFailures')).toString()
             },
             success: 'updateOptionsSuccessCallback'
           });
         } else {
-          var upgradeType = self.get('upgradeMethods').findProperty('selected', true).get('type');
-          version.upgradeType = upgradeType;
-          version.upgradeTypeDisplayName = self.get('upgradeMethods').findProperty('selected', true).get('displayName');
+          var upgradeMethod = self.get('upgradeMethods').findProperty('selected');
+          version.upgradeType = upgradeMethod.get('type');
+          version.upgradeTypeDisplayName = upgradeMethod.get('displayName');
           version.skipComponentFailures = this.get('skipComponentFailures');
           version.skipSCFailures = this.get('skipSCFailures');
 
-          var fromVersion = self.get('upgradeVersion');
+          var fromVersion = self.get('upgradeVersion') || App.RepositoryVersion.find().findProperty('status', 'CURRENT').get('displayName');
           var toVersion = version.get('displayName');
           var bodyMessage = Em.Object.create({
             confirmButton: Em.I18n.t('yes'),
-            confirmMsg: upgradeType == 'ROLLING'? Em.I18n.t('admin.stackVersions.version.upgrade.upgradeOptions.RU.confirm.msg').format(fromVersion, toVersion):
-             Em.I18n.t('admin.stackVersions.version.upgrade.upgradeOptions.EU.confirm.msg').format(fromVersion, toVersion)
+            confirmMsg: upgradeMethod.get('type') === 'ROLLING' ?
+              Em.I18n.t('admin.stackVersions.version.upgrade.upgradeOptions.RU.confirm.msg').format(fromVersion, toVersion) :
+              Em.I18n.t('admin.stackVersions.version.upgrade.upgradeOptions.EU.confirm.msg').format(fromVersion, toVersion)
           });
           return App.showConfirmationFeedBackPopup(function (query) {
             return self.runPreUpgradeCheck.call(self, version);
           }, bodyMessage);
         }
-      },
-      onSecondary: function () {
-        this.hide();
-      },
-      onClose:  function () {
-        this.hide();
       }
     });
   },

http://git-wip-us.apache.org/repos/asf/ambari/blob/334b4833/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
index efdf059..56bf0f7 100644
--- a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
+++ b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
@@ -1340,4 +1340,35 @@ describe('App.MainAdminStackAndUpgradeController', function() {
       expect(App.clusterStatus.setClusterStatus.calledOnce).to.be.true;
     });
   });
+
+  describe("#runUpgradeMethodChecks()", function() {
+    beforeEach(function () {
+      sinon.stub(controller, 'runPreUpgradeCheckOnly');
+    });
+    afterEach(function () {
+      controller.runPreUpgradeCheckOnly.restore();
+    });
+    it("no allowed upgrade methods", function () {
+      controller.set('upgradeMethods', [Em.Object.create({
+        allowed: false
+      })]);
+      controller.runUpgradeMethodChecks();
+      expect(controller.runPreUpgradeCheckOnly.called).to.be.false;
+    });
+    it("Rolling method allowed", function () {
+      controller.set('upgradeMethods', [Em.Object.create({
+        allowed: true,
+        type: 'ROLLING'
+      })]);
+      controller.runUpgradeMethodChecks(Em.Object.create({
+        repositoryVersion: 'v1',
+        displayName: 'V1'
+      }));
+      expect(controller.runPreUpgradeCheckOnly.calledWith({
+        value: 'v1',
+        label: 'V1',
+        type: 'ROLLING'
+      })).to.be.true;
+    });
+  });
 });