You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by xi...@apache.org on 2015/10/24 02:32:17 UTC

ambari git commit: AMBARI-13555. Express Upgrade: EX edits v2.(xiwang)

Repository: ambari
Updated Branches:
  refs/heads/trunk 0e321a489 -> 42bd7e468


AMBARI-13555. Express Upgrade: EX edits v2.(xiwang)


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

Branch: refs/heads/trunk
Commit: 42bd7e4688b8a9417a047121e742ff7feee13a80
Parents: 0e321a4
Author: Xi Wang <xi...@apache.org>
Authored: Fri Oct 23 16:46:59 2015 -0700
Committer: Xi Wang <xi...@apache.org>
Committed: Fri Oct 23 17:28:50 2015 -0700

----------------------------------------------------------------------
 .../main/admin/stack_and_upgrade_controller.js  | 23 ++++++++++---
 ambari-web/app/messages.js                      |  3 ++
 ambari-web/app/styles/stack_versions.less       | 30 ++++++++++++++---
 .../modal_popups/cluster_check_dialog.hbs       |  3 ++
 .../stack_upgrade/stack_upgrade_wizard.hbs      |  7 ++--
 .../admin/stack_upgrade/upgrade_options.hbs     | 34 ++++++++++----------
 ambari-web/app/utils/ajax/ajax.js               |  2 +-
 .../common/modal_popups/cluster_check_popup.js  |  3 +-
 .../admin/stack_and_upgrade_controller_test.js  | 13 +++++++-
 9 files changed, 85 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/42bd7e46/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 f751277..40419a3 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
@@ -668,11 +668,22 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
             success: 'updateOptionsSuccessCallback'
           });
         } else {
-          version.upgradeType = self.get('upgradeMethods').findProperty('selected', true).get('type');
+          var upgradeType = self.get('upgradeMethods').findProperty('selected', true).get('type');
+          version.upgradeType = upgradeType;
           version.upgradeTypeDisplayName = self.get('upgradeMethods').findProperty('selected', true).get('displayName');
           version.skipComponentFailures = this.get('skipComponentFailures');
           version.skipSCFailures = this.get('skipSCFailures');
-          self.runPreUpgradeCheck.call(self, version);
+
+          var fromVersion = self.get('upgradeVersion');
+          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)
+          });
+          return App.showConfirmationFeedBackPopup(function (query) {
+            return self.runPreUpgradeCheck.call(self, version);
+          }, bodyMessage);
         }
       },
       onSecondary: function () {
@@ -686,9 +697,9 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
 
   /**
    * open upgrade options from upgrade wizard
-   * @return App.ModalPopup
    */
   openUpgradeOptions: function () {
+    if (this.get('isDowngrade')) return;
     this.upgradeOptions(true, null);
   },
 
@@ -751,10 +762,12 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
     method.set('precheckResultsData', data);
     this.updateSelectedMethod(false);
     Em.run.later(this, function () {
+      // add tooltip for the type with preCheck errors
       App.tooltip($(".thumbnail.check-failed"), {
         placement: "bottom",
         title: Em.I18n.t('admin.stackVersions.version.upgrade.upgradeOptions.preCheck.failed.tooltip')
       });
+      // destroy the tooltip for the type wo preCheck errors
       $(".thumbnail").not(".check-failed").not(".not-allowed-by-version").tooltip("destroy");
     }, 1000);
   },
@@ -777,8 +790,8 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
     } else {
       var ruMethod = this.get('upgradeMethods').findProperty('type', 'ROLLING');
       var euMethod = this.get('upgradeMethods').findProperty('type', 'NON_ROLLING');
-      if (ruMethod.get('isPrecheckFailed')) ruMethod.set('selected', false);
-      if (euMethod.get('isPrecheckFailed')) euMethod.set('selected', false);
+      if (ruMethod && ruMethod.get('isPrecheckFailed')) ruMethod.set('selected', false);
+      if (euMethod && euMethod.get('isPrecheckFailed')) euMethod.set('selected', false);
     }
   },
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/42bd7e46/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 1f62a7e..7056141 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -1471,8 +1471,11 @@ Em.I18n.translations = {
   'admin.stackVersions.version.upgrade.upgradeOptions.preCheck.rerun':'Rerun Checks',
   'admin.stackVersions.version.upgrade.upgradeOptions.preCheck.msg.title':'Checks:',
   'admin.stackVersions.version.upgrade.upgradeOptions.preCheck.allPassed':'Passed',
+  'admin.stackVersions.version.upgrade.upgradeOptions.preCheck.allPassed.msg':'All checks passed',
   'admin.stackVersions.version.upgrade.upgradeOptions.preCheck.failed.tooltip':'Option not available',
   'admin.stackVersions.version.upgrade.upgradeOptions.notAllowed':'Not allowed by the current version',
+  'admin.stackVersions.version.upgrade.upgradeOptions.EU.confirm.msg': 'You are about to perform an <b>Express Upgrade</b> from <b>{0}</b> to <b>{1}</b>. This will incur cluster downtime. Are you sure you want to proceed?',
+  'admin.stackVersions.version.upgrade.upgradeOptions.RU.confirm.msg': 'You are about to perform a <b>Rolling Upgrade</b> from <b>{0}</b> to <b>{1}</b>. Are you sure you want to proceed?',
 
   'admin.stackVersions.hosts.popup.header.current': "Current",
   'admin.stackVersions.hosts.popup.header.installed': "Installed",

http://git-wip-us.apache.org/repos/asf/ambari/blob/42bd7e46/ambari-web/app/styles/stack_versions.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/stack_versions.less b/ambari-web/app/styles/stack_versions.less
index 048e3dd..6c5ed0b 100644
--- a/ambari-web/app/styles/stack_versions.less
+++ b/ambari-web/app/styles/stack_versions.less
@@ -267,11 +267,28 @@
   .task-list-main-warp i {
     font-size: 16px;
   }
-  .upgrade-options-button {
+  .upgrade-options-link {
     position: absolute;
+    cursor: pointer;
     right: 10%;
-    top: 10px;
+    top: 13px;
     width: 100px;
+    a {
+      font-size: 13px;
+    }
+    .icon-cogs {
+      color: #0088cc;
+      margin-right: 3px;
+    }
+  }
+  .upgrade-options-link.disabled {
+    cursor: not-allowed;
+    a, .icon-cogs {
+      color: #808080;
+    }
+    a:hover {
+      text-decoration: none;
+    }
   }
 }
 
@@ -292,7 +309,7 @@
       width: 43.5%;
     }
     .thumbnail {
-      height: 140px;
+      height: 165px;
       cursor: pointer;
       border: none;
       width: 99%;
@@ -328,11 +345,11 @@
       }
     }
     .selected.ROLLING, .selected.NON_ROLLING {
-      background-color: #cbe3c2;
+      background-color: #d3e7ca;
       box-shadow: 0 8px 6px -6px #b3b3b3;
     }
     .ROLLING:hover, .NON_ROLLING:hover {
-      background-color: #d3e7ca;
+      background-color: #cbe3c2;
     }
 
     .thumbnail.not-allowed:hover {
@@ -389,6 +406,9 @@
   }
   .tolerance-text .tolerance-option {
     margin: 5px 15px;
+    .ember-checkbox {
+      margin-top: 0px;
+    }
   }
   .text {
     margin-left: 10px;

http://git-wip-us.apache.org/repos/asf/ambari/blob/42bd7e46/ambari-web/app/templates/common/modal_popups/cluster_check_dialog.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/common/modal_popups/cluster_check_dialog.hbs b/ambari-web/app/templates/common/modal_popups/cluster_check_dialog.hbs
index 38160ac..8767d70 100644
--- a/ambari-web/app/templates/common/modal_popups/cluster_check_dialog.hbs
+++ b/ambari-web/app/templates/common/modal_popups/cluster_check_dialog.hbs
@@ -16,6 +16,9 @@
 * limitations under the License.
 }}
 <div id="pre-upgrade-check">
+  {{#if view.isAllPassed}}
+    <i class="icon-ok"></i>&nbsp;<span>{{t admin.stackVersions.version.upgrade.upgradeOptions.preCheck.allPassed.msg}}</span>
+  {{/if}}
   {{#if view.fails.length}}
     <h4>{{view.failTitle}}</h4>
     <div class="alert alert-warning">

http://git-wip-us.apache.org/repos/asf/ambari/blob/42bd7e46/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs b/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs
index ef46994..a45bad1 100644
--- a/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs
+++ b/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs
@@ -17,9 +17,10 @@
 }}
 
 <div id="stack-upgrade-dialog">
-  <button class="btn btn-primary upgrade-options-button" {{bindAttr disabled="controller.isDowngrade"}} {{action openUpgradeOptions target="controller"}}>
-    <i class="icon-cogs"></i>&nbsp;{{t common.options}}
-  </button>
+  <div {{bindAttr class=":upgrade-options-link controller.isDowngrade:disabled"}} {{action openUpgradeOptions target="controller"}}>
+    <i class="icon-cogs"></i><a>{{t common.options}}</a>
+  </div>
+
   <div {{bindAttr class="view.isLoaded::hidden :row-fluid"}}>
     <div class="span3 task-list-main-warp">{{statusIcon controller.requestStatus}}
       &nbsp;{{view.upgradeStatusLabel}}</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/42bd7e46/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_options.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_options.hbs b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_options.hbs
index 7d50785..1be2539 100644
--- a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_options.hbs
+++ b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_options.hbs
@@ -23,33 +23,33 @@
     {{#each method in view.upgradeMethods}}
       <div class="method-option span5">
         <div {{bindAttr class="method.allowed::not-allowed method.allowed::not-allowed-by-version
-        method.isPrecheckFailed:not-allowed method.isPrecheckFailed:check-failed
-        method.selected:selected method.type :thumbnail"}}
+          method.isPrecheckFailed:not-allowed method.isPrecheckFailed:check-failed
+          method.selected:selected method.type :thumbnail"}}
           {{action selectMethod method target="view"}}>
             <div {{bindAttr class="method.icon :method-icon"}}></div>
             <div class="method-name">{{method.displayName}}</div>
             <div class="method-description">{{{method.description}}}</div>
+            {{#unless view.isInUpgradeWizard}}
+              {{#if method.precheckResultsMessage}}
+                <div {{bindAttr class=":method-precheck-message method.precheckResultsMessageClass"}}>
+                  <i {{bindAttr class="method.precheckResultsMessageIconClass"}}></i>
+                  <b>{{t admin.stackVersions.version.upgrade.upgradeOptions.preCheck.msg.title}}</b>&nbsp;
+                  <a {{action openMessage method target="view"}}>
+                    {{method.precheckResultsMessage}}
+                  </a>
+                </div>
+              {{/if}}
+            {{/unless}}
         </div>
-        {{#unless view.isInUpgradeWizard}}
-          {{#if method.precheckResultsMessage}}
-            <div {{bindAttr class=":method-precheck-message method.precheckResultsMessageClass"}}>
-              <i {{bindAttr class="method.precheckResultsMessageIconClass"}}></i>
-              <b>{{t admin.stackVersions.version.upgrade.upgradeOptions.preCheck.msg.title}}</b>&nbsp;
-              <a {{action openMessage method target="view"}}>
-                {{method.precheckResultsMessage}}
-              </a>
-            </div>
-          {{/if}}
-        {{/unless}}
       </div>
     {{/each}}
   </div>
 
   <div class="text tolerance-text">{{t admin.stackVersions.version.upgrade.upgradeOptions.bodyMsg.tolerance}}
     <i class="icon-question-sign failure-tolerance-tooltip" data-toggle="tooltip"></i>
-    <div class="tolerance-option">{{view Ember.Checkbox checkedBinding="view.parentView.skipSCFailures"}}
-      {{t admin.stackVersions.version.upgrade.upgradeOptions.tolerance.option2}}</div>
-    <div class="tolerance-option">{{view Ember.Checkbox checkedBinding="view.parentView.skipComponentFailures"}}
-      {{t admin.stackVersions.version.upgrade.upgradeOptions.tolerance.option1}}</div>
+    <label class="tolerance-option">{{view Ember.Checkbox checkedBinding="view.parentView.skipSCFailures"}}
+      {{t admin.stackVersions.version.upgrade.upgradeOptions.tolerance.option2}}</label>
+    <label class="tolerance-option">{{view Ember.Checkbox checkedBinding="view.parentView.skipComponentFailures"}}
+      {{t admin.stackVersions.version.upgrade.upgradeOptions.tolerance.option1}}</label>
   </div>
 </div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/42bd7e46/ambari-web/app/utils/ajax/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax/ajax.js b/ambari-web/app/utils/ajax/ajax.js
index 3023cfc..7e7bc58 100644
--- a/ambari-web/app/utils/ajax/ajax.js
+++ b/ambari-web/app/utils/ajax/ajax.js
@@ -1613,7 +1613,7 @@ var urls = {
         data: JSON.stringify({
           "Upgrade": {
             "repository_version": data.value,
-            "type": data.type,
+            "upgrade_type": data.type,
             "skip_failures": data.skipComponentFailures,
             "skip_service_check_failures": data.skipSCFailures
           }

http://git-wip-us.apache.org/repos/asf/ambari/blob/42bd7e46/ambari-web/app/views/common/modal_popups/cluster_check_popup.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/modal_popups/cluster_check_popup.js b/ambari-web/app/views/common/modal_popups/cluster_check_popup.js
index 6e901ec..b3f0c4c 100644
--- a/ambari-web/app/views/common/modal_popups/cluster_check_popup.js
+++ b/ambari-web/app/views/common/modal_popups/cluster_check_popup.js
@@ -99,7 +99,8 @@ App.showPreUpgradeCheckPopup = function (data, header, failTitle, failAlert, war
       templateName: require('templates/common/modal_popups/cluster_check_dialog'),
       fails: fails,
       warnings: warnings,
-      hasConfigsMergeConflicts: hasConfigsMergeConflicts
+      hasConfigsMergeConflicts: hasConfigsMergeConflicts,
+      isAllPassed: !fails.length && !warnings.length && !hasConfigsMergeConflicts.length
     };
   if (hasConfigsMergeConflicts) {
     popupBody.configsMergeTable = Em.View.extend({

http://git-wip-us.apache.org/repos/asf/ambari/blob/42bd7e46/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 e0cab41..efdf059 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
@@ -767,10 +767,12 @@ describe('App.MainAdminStackAndUpgradeController', function() {
   describe("#upgradeOptions()", function() {
     before(function () {
       sinon.spy(App, 'ModalPopup');
+      sinon.spy(App, 'showConfirmationFeedBackPopup');
       sinon.stub(controller, 'runPreUpgradeCheck', Em.K);
     });
     after(function () {
       App.ModalPopup.restore();
+      App.showConfirmationFeedBackPopup.restore();
       controller.runPreUpgradeCheck.restore();
     });
     it("show confirmation popup", function() {
@@ -793,11 +795,20 @@ describe('App.MainAdminStackAndUpgradeController', function() {
           allowed: true
         })
       ];
+      controller.set('isDowngrade', false);
       var popup = controller.upgradeOptions(false, version);
       expect(App.ModalPopup.calledOnce).to.be.true;
-      popup.onPrimary();
+      var confirmPopup = popup.onPrimary();
+      expect(App.showConfirmationFeedBackPopup.calledOnce).to.be.true;
+      confirmPopup.onPrimary();
       expect(controller.runPreUpgradeCheck.calledWith(version)).to.be.true;
     });
+    it("NOT show confirmation popup on Downgrade", function() {
+      var version = Em.Object.create({displayName: 'HDP-2.2'});
+      controller.set('isDowngrade', true);
+      var popup = controller.upgradeOptions(false, version);
+      expect(App.ModalPopup.calledOnce).to.be.false;
+    });
   });
 
   describe("#confirmUpgrade()", function() {