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 2014/12/19 11:47:15 UTC

ambari git commit: AMBARI-8814 Rolling Upgrade: resume upgrade state after log in/out. (atkach)

Repository: ambari
Updated Branches:
  refs/heads/trunk bab3dbc84 -> f13beb866


AMBARI-8814 Rolling Upgrade: resume upgrade state after log in/out. (atkach)


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

Branch: refs/heads/trunk
Commit: f13beb866d227117d37271dc56e21d21d99f77b2
Parents: bab3dbc
Author: Andrii Tkach <at...@hortonworks.com>
Authored: Fri Dec 19 11:59:12 2014 +0200
Committer: Andrii Tkach <at...@hortonworks.com>
Committed: Fri Dec 19 11:59:12 2014 +0200

----------------------------------------------------------------------
 ambari-web/app/app.js                           |  2 +-
 .../controllers/global/cluster_controller.js    | 20 +++++++++++++----
 .../main/admin/stack_and_upgrade_controller.js  | 23 ++++++++++++--------
 ambari-web/app/router.js                        |  3 +++
 .../main/admin/stack_upgrade/upgrade_task.hbs   |  4 ++--
 ambari-web/app/utils/db.js                      |  1 +
 .../views/main/admin/stack_and_upgrade_view.js  |  4 ++--
 .../admin/stack_and_upgrade_controller_test.js  | 17 +++++++++++++--
 8 files changed, 54 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/f13beb86/ambari-web/app/app.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/app.js b/ambari-web/app/app.js
index c45f48b..c9e19a9 100644
--- a/ambari-web/app/app.js
+++ b/ambari-web/app/app.js
@@ -41,7 +41,7 @@ module.exports = Em.Application.create({
    *  - INIT
    *  - PENDING
    *  - IN_PROGRESS
-   *  - STOPPED
+   *  - HOLDING
    *  - COMPLETED
    * @type {String}
    */

http://git-wip-us.apache.org/repos/asf/ambari/blob/f13beb86/ambari-web/app/controllers/global/cluster_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/global/cluster_controller.js b/ambari-web/app/controllers/global/cluster_controller.js
index bbc088c..9e4f82e 100644
--- a/ambari-web/app/controllers/global/cluster_controller.js
+++ b/ambari-web/app/controllers/global/cluster_controller.js
@@ -268,10 +268,6 @@ App.ClusterController = Em.Controller.extend({
       return;
     }
 
-    if (App.get('supports.stackUpgrade')) {
-      App.router.get('mainAdminStackAndUpgradeController').loadUpgradeData(true);
-    }
-
     var clusterUrl = this.getUrl('/data/clusters/cluster.json', '?fields=Clusters');
     var racksUrl = "/data/racks/racks.json";
 
@@ -302,6 +298,9 @@ App.ClusterController = Em.Controller.extend({
     } else {
       App.clusterStatus.updateFromServer().complete(function () {
         self.updateLoadStatus('clusterStatus');
+        if (App.get('supports.stackUpgrade')) {
+          self.restoreUpgradeState();
+        }
       });
     }
 
@@ -367,6 +366,19 @@ App.ClusterController = Em.Controller.extend({
     });
   },
 
+  /**
+   * restore upgrade status from local storage
+   * and make call to get latest status from server
+   */
+  restoreUpgradeState: function () {
+    var dbUpgradeState = App.db.get('MainAdminStackAndUpgrade', 'upgradeState');
+    if (!Em.isNone(dbUpgradeState)) {
+      App.set('upgradeState', dbUpgradeState);
+    }
+    App.router.get('mainAdminStackAndUpgradeController').initDBProperties();
+    App.router.get('mainAdminStackAndUpgradeController').loadUpgradeData(true);
+  },
+
   loadRootService: function () {
     return App.ajax.send({
       name: 'service.ambari',

http://git-wip-us.apache.org/repos/asf/ambari/blob/f13beb86/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 7e6a1cb..6fe806f 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
@@ -62,10 +62,14 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
    */
   wizardStorageProperties: ['upgradeId', 'upgradeVersion'],
 
+  init: function () {
+    this.initDBProperties();
+  },
+
   /**
    * restore data from localStorage
    */
-  init: function () {
+  initDBProperties: function () {
     this.get('wizardStorageProperties').forEach(function (property) {
       if (this.getDBProperty(property)) {
         this.set(property, this.getDBProperty(property));
@@ -168,6 +172,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
    */
   loadUpgradeDataSuccessCallback: function (data) {
     App.set('upgradeState', data.Upgrade.request_status);
+    this.setDBProperty('upgradeState', data.Upgrade.request_status);
     if (data.upgrade_groups) {
       this.updateUpgradeData(data);
     }
@@ -275,9 +280,10 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
   upgradeSuccessCallback: function (data) {
     this.set('upgradeId', data.resources[0].Upgrade.request_id);
     this.setDBProperty('upgradeId', data.resources[0].Upgrade.request_id);
+    this.setDBProperty('upgradeState', 'PENDING');
+    App.set('upgradeState', 'PENDING');
     App.clusterStatus.setClusterStatus({
-      clusterName: App.get('clusterName'),
-      clusterState: 'DEFAULT',
+      wizardControllerName: this.get('name'),
       localdb: App.db.data
     });
     this.openUpgradeDialog();
@@ -306,17 +312,17 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
    * @param data {object}
    * @param opt {object}
    * @param params {object}
-   * @returns {App.ModalPopup|void}
+   * @returns {App.ModalPopup|undefined}
    */
-  runPreUpgradeCheckSuccess: function(data, opt, params) {
-    if (data.items.someProperty('UpgradeChecks.status',"FAIL")) {
+  runPreUpgradeCheckSuccess: function (data, opt, params) {
+    if (data.items.someProperty('UpgradeChecks.status', "FAIL")) {
       return App.ModalPopup.show({
         header: Em.I18n.t('admin.stackUpgrade.preupgradeCheck.header').format(params.label),
         primary: Em.I18n.t('common.dismiss'),
         secondary: false,
         bodyClass: Em.View.extend({
           templateName: require('templates/main/admin/stack_upgrade/pre_upgrade_check_dialog'),
-          checks: data.items.filterProperty('UpgradeChecks.status',"FAIL")
+          checks: data.items.filterProperty('UpgradeChecks.status', "FAIL")
         })
       })
     } else {
@@ -346,12 +352,11 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
   finish: function () {
     this.set('upgradeId', null);
     this.setDBProperty('upgradeId', undefined);
+    this.setDBProperty('upgradeState', 'INIT');
     App.set('upgradeState', 'INIT');
     this.set('upgradeVersion', null);
     this.setDBProperty('upgradeVersion', undefined);
     App.clusterStatus.setClusterStatus({
-      clusterName: App.get('clusterName'),
-      clusterState: 'DEFAULT',
       localdb: App.db.data
     });
   },

http://git-wip-us.apache.org/repos/asf/ambari/blob/f13beb86/ambari-web/app/router.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/router.js b/ambari-web/app/router.js
index ed9d94b..5bef5b7 100644
--- a/ambari-web/app/router.js
+++ b/ambari-web/app/router.js
@@ -367,6 +367,9 @@ App.Router = Em.Router.extend({
           } else if (clusterStatusOnServer && clusterStatusOnServer.wizardControllerName === App.router.get('rollbackHighAvailabilityWizardController.name')) {
             // if wizardControllerName == "highAvailabilityRollbackController", then it means someone closed the browser or the browser was crashed when we were last in NameNode High Availability Rollback wizard
             route = 'main.services.rollbackHighAvailability';
+          } else if (clusterStatusOnServer && clusterStatusOnServer.wizardControllerName === App.router.get('mainAdminStackAndUpgradeController.name')) {
+            // if wizardControllerName == "mainAdminStackAndUpgradeController", then it means someone closed the browser or the browser was crashed when we were last in Rolling Upgrade wizard
+            route = 'main.admin.stackAndUpgrade';
           }
           callback(route);
         });

http://git-wip-us.apache.org/repos/asf/ambari/blob/f13beb86/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_task.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_task.hbs b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_task.hbs
index 5c9781a..4dff7ed 100644
--- a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_task.hbs
+++ b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_task.hbs
@@ -33,7 +33,7 @@
             <a title="Click to Copy" {{action copyOutLog view.content target="view"}} class="task-detail-copy">
               <i class="icon-copy"></i> {{t common.copy}}
             </a>
-            <a title="Open in New Window" {{action openErrorLog target="view"}} class="task-detail-open-dialog">
+            <a title="Open in New Window" {{action openOutLog target="view"}} class="task-detail-open-dialog">
               <i class="icon-external-link"></i> {{t common.open}}
             </a>
           </div>
@@ -49,7 +49,7 @@
             <a title="Click to Copy" {{action copyErrLog view.content target="view"}} class="task-detail-copy">
               <i class="icon-copy"></i> {{t common.copy}}
             </a>
-            <a title="Open in New Window" {{action openOutLog target="view"}} class="task-detail-open-dialog">
+            <a title="Open in New Window" {{action openErrorLog target="view"}} class="task-detail-open-dialog">
               <i class="icon-external-link"></i> {{t common.open}}
             </a>
           </div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/f13beb86/ambari-web/app/utils/db.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/db.js b/ambari-web/app/utils/db.js
index 1cc8fde..075f59f 100644
--- a/ambari-web/app/utils/db.js
+++ b/ambari-web/app/utils/db.js
@@ -44,6 +44,7 @@ var InitialData =  {
   'HighAvailabilityWizard': {},
   'RMHighAvailabilityWizard': {},
   'RollbackHighAvailabilityWizard': {},
+  'MainAdminStackAndUpgrade': {},
   'tmp': {}
 
 };

http://git-wip-us.apache.org/repos/asf/ambari/blob/f13beb86/ambari-web/app/views/main/admin/stack_and_upgrade_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/stack_and_upgrade_view.js b/ambari-web/app/views/main/admin/stack_and_upgrade_view.js
index 51daa6d..0cb17ea 100644
--- a/ambari-web/app/views/main/admin/stack_and_upgrade_view.js
+++ b/ambari-web/app/views/main/admin/stack_and_upgrade_view.js
@@ -152,9 +152,9 @@ App.MainAdminStackAndUpgradeView = Em.View.extend({
     }.property('controller.targetVersions'),
     btnClass: 'btn-success',
     versionName: function () {
-      if (this.get('versions.length') === 0) return Em.I18n.t('admin.stackUpgrade.state.notAvailable');
+      if (this.get('versions.length') === 0 && App.get('upgradeState') === 'INIT') return Em.I18n.t('admin.stackUpgrade.state.notAvailable');
       return this.get('controller.upgradeVersion');
-    }.property('controller.upgradeVersion', 'showSelect'),
+    }.property('controller.upgradeVersion', 'versions.length', 'App.upgradeState'),
     showSelect: function () {
       return this.get('versions.length') > 0 && App.get('upgradeState') === 'INIT';
     }.property('versions.length', 'App.upgradeState'),

http://git-wip-us.apache.org/repos/asf/ambari/blob/f13beb86/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 e7e5392..774d3de 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
@@ -282,7 +282,7 @@ describe('App.MainAdminStackAndUpgradeController', function() {
     });
   });
 
-  describe("#init()", function() {
+  describe("#initDBProperties()", function() {
     before(function () {
       sinon.stub(controller, 'getDBProperty', function (prop) {
         return prop;
@@ -293,11 +293,24 @@ describe('App.MainAdminStackAndUpgradeController', function() {
     });
     it("set properties", function () {
       controller.set('wizardStorageProperties', ['prop1']);
-      controller.init();
+      controller.initDBProperties();
       expect(controller.get('prop1')).to.equal('prop1');
     });
   });
 
+  describe("#init()", function() {
+    before(function () {
+      sinon.stub(controller, 'initDBProperties', Em.K);
+    });
+    after(function () {
+      controller.initDBProperties.restore();
+    });
+    it("call initDBProperties", function () {
+      controller.init();
+      expect(controller.initDBProperties.calledOnce).to.be.true;
+    });
+  });
+
   describe("#parseVersionsData()", function() {
     it("", function() {
       var data = {