Repository: ambari Updated Branches: refs/heads/trunk 9ff6b22e9 -> d7ccc4c99
AMBARI-19174 Version in process of downgrade isn't displayed by selecting any filter. (atkach) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/d7ccc4c9 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/d7ccc4c9 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/d7ccc4c9 Branch: refs/heads/trunk Commit: d7ccc4c990291750cda968a8b65ee25a64f1220a Parents: 9ff6b22 Author: Andrii Tkach <[email protected]> Authored: Mon Dec 12 19:04:12 2016 +0200 Committer: Andrii Tkach <[email protected]> Committed: Tue Dec 13 13:17:57 2016 +0200 ---------------------------------------------------------------------- .../main/admin/stack_and_upgrade_controller.js | 13 +++++ .../stack_upgrade/upgrade_version_box_view.js | 6 ++- .../main/admin/stack_upgrade/versions_view.js | 12 ++++- .../admin/stack_and_upgrade_controller_test.js | 36 ++++--------- .../upgrade_version_box_view_test.js | 11 ++++ .../admin/stack_upgrade/version_view_test.js | 53 +++++++++++++++++++- 6 files changed, 100 insertions(+), 31 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/d7ccc4c9/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 6d97205..59f2a90 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 @@ -40,6 +40,13 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, upgradeId: null, /** + * Start version of upgrade + * @type {string} + * @default null + */ + fromVersion: null, + + /** * @type {string} * @default null */ @@ -233,6 +240,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, * properties that stored to localStorage to resume wizard progress */ wizardStorageProperties: [ + 'fromVersion', 'upgradeId', 'upgradeVersion', 'currentVersion', @@ -860,6 +868,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, upgradeSuccessCallback: function (data, opt, params) { this.set('upgradeData', null); this.set('upgradeId', data.resources[0].Upgrade.request_id); + this.set('fromVersion', data.resources[0].Upgrade.from_version); this.set('upgradeVersion', params.label); this.set('isDowngrade', !!params.isDowngrade); var upgradeMethod = this.get('upgradeMethods').findProperty('type', params.type), @@ -883,6 +892,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, this.setDBProperties({ upgradeVersion: params.label, upgradeId: data.resources[0].Upgrade.request_id, + fromVersion: data.resources[0].Upgrade.from_version, upgradeState: 'PENDING', isDowngrade: !!params.isDowngrade, upgradeType: upgradeType, @@ -1672,6 +1682,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, finish: function () { var upgradeVersion = this.get('upgradeVersion') && this.get('upgradeVersion').match(/[a-zA-Z]+\-\d+\.\d+/); this.setDBProperties({ + fromVersion: undefined, upgradeId: undefined, upgradeState: 'INIT', upgradeVersion: undefined, @@ -1683,6 +1694,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, isDowngrade: undefined, downgradeAllowed: undefined }); + this.initDBProperties(); App.clusterStatus.setClusterStatus({ localdb: App.db.data }); @@ -1913,6 +1925,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, var upgradeType = this.get('upgradeMethods').findProperty('type', lastUpgradeData.Upgrade.upgrade_type); this.setDBProperties({ + fromVersion: lastUpgradeData.Upgrade.from_version, upgradeId: lastUpgradeData.Upgrade.request_id, isDowngrade: lastUpgradeData.Upgrade.direction === 'DOWNGRADE', upgradeState: lastUpgradeData.Upgrade.request_status, http://git-wip-us.apache.org/repos/asf/ambari/blob/d7ccc4c9/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js index 3508feb..a714149 100644 --- a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js +++ b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js @@ -51,11 +51,13 @@ App.UpgradeVersionBoxView = Em.View.extend({ }.property('App.router.backgroundOperationsController.serviceTimestamp'), /** - * version is upgrading + * version is upgrading or downgrading * @type {boolean} */ isUpgrading: function () { - return (this.get('controller.upgradeVersion') === this.get('content.displayName') && App.get('upgradeState') !== 'INIT'); + return (this.get('controller.upgradeVersion') === this.get('content.displayName') || + this.get('controller.fromVersion') === this.get('content.repositoryVersion')) + && App.get('upgradeState') !== 'INIT'; }.property('App.upgradeState', 'content.displayName', 'controller.upgradeVersion'), isRepoUrlsEditDisabled: function () { http://git-wip-us.apache.org/repos/asf/ambari/blob/d7ccc4c9/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js b/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js index 8fccbd9..c317465 100644 --- a/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js +++ b/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js @@ -149,7 +149,7 @@ App.MainAdminStackVersionsView = Em.View.extend({ if (filter && filter.get('value')) { versions = versions.filter(function (version) { var status = version.get('status'); - var isUpgrading = App.router.get('mainAdminStackAndUpgradeController.upgradeVersion') === version.get('displayName'); + var isUpgrading = this.isVersionUpgrading(version); if (status === 'INSTALLED' && ['UPGRADE_READY', 'INSTALLED', 'UPGRADING'].contains(filter.get('value'))) { if (filter.get('value') === 'UPGRADING') { return isUpgrading; @@ -176,6 +176,16 @@ App.MainAdminStackVersionsView = Em.View.extend({ }, /** + * is version in upgrading or downgrading state + * @param version + */ + isVersionUpgrading: function(version) { + var upgradeController = App.router.get('mainAdminStackAndUpgradeController'); + return upgradeController.get('upgradeVersion') === version.get('displayName') || + upgradeController.get('fromVersion') === version.get('repositoryVersion'); + }, + + /** * route to versions in Admin View * @return {App.ModalPopup} */ http://git-wip-us.apache.org/repos/asf/ambari/blob/d7ccc4c9/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 e83ae2c..de2bf3b 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 @@ -900,32 +900,6 @@ describe('App.MainAdminStackAndUpgradeController', function() { }); }); - describe.skip("#finish()", function() { - before(function () { - sinon.stub(App.clusterStatus, 'setClusterStatus', Em.K); - sinon.stub(controller, 'setDBProperty', Em.K); - }); - after(function () { - App.clusterStatus.setClusterStatus.restore(); - controller.setDBProperty.restore(); - }); - it("upgradeState is not COMPLETED", function() { - App.set('upgradeState', 'UPGRADING'); - controller.finish(); - expect(App.clusterStatus.setClusterStatus.called).to.be.false; - }); - it("upgradeState is COMPLETED", function() { - App.set('upgradeState', 'COMPLETED'); - controller.finish(); - expect(controller.setDBProperty.calledWith('upgradeId', undefined)).to.be.true; - expect(controller.setDBProperty.calledWith('upgradeVersion', undefined)).to.be.true; - expect(controller.setDBProperty.calledWith('upgradeState', 'INIT')).to.be.true; - expect(controller.setDBProperty.calledWith('currentVersion', undefined)).to.be.true; - expect(App.get('upgradeState')).to.equal('INIT'); - expect(App.clusterStatus.setClusterStatus.calledOnce).to.be.true; - }); - }); - describe("#confirmDowngrade()", function() { before(function () { @@ -1762,6 +1736,7 @@ describe('App.MainAdminStackAndUpgradeController', function() { var data = { Upgrade: { + from_version: '1.1', request_id: 1, direction: 'UPGRADE', request_status: 'PENDING', @@ -1801,6 +1776,7 @@ describe('App.MainAdminStackAndUpgradeController', function() { }); it('proper data is saved to the localDB', function () { expect(controller.setDBProperties.getCall(0).args[0]).to.eql({ + fromVersion: '1.1', upgradeId: 1, isDowngrade: false, upgradeState: 'PENDING', @@ -3059,18 +3035,21 @@ describe('App.MainAdminStackAndUpgradeController', function() { beforeEach(function() { sinon.stub(controller, 'setDBProperties', Em.K); sinon.stub(App.clusterStatus, 'setClusterStatus'); + sinon.stub(controller, 'initDBProperties'); App.set('upgradeState', 'COMPLETED'); controller.set('upgradeVersion', ''); }); afterEach(function() { controller.setDBProperties.restore(); + controller.initDBProperties.restore(); App.clusterStatus.setClusterStatus.restore(); }); it("setDBProperties should be called", function() { controller.finish(); expect(controller.setDBProperties.calledWith({ + fromVersion: undefined, upgradeId: undefined, upgradeState: 'INIT', upgradeVersion: undefined, @@ -3084,6 +3063,11 @@ describe('App.MainAdminStackAndUpgradeController', function() { })).to.be.true; }); + it("initDBProperties should be called", function() { + controller.finish(); + expect(controller.initDBProperties).to.be.calledOnce; + }); + it("App.clusterStatus.setClusterStatus should be called", function() { controller.finish(); expect(App.clusterStatus.setClusterStatus.calledOnce).to.be.true; http://git-wip-us.apache.org/repos/asf/ambari/blob/d7ccc4c9/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js b/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js index 8087c67..58067a2 100644 --- a/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js +++ b/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js @@ -46,6 +46,9 @@ describe('App.UpgradeVersionBoxView', function () { }); describe("#isUpgrading", function () { + beforeEach(function() { + view.set('controller.fromVersion', 'HDP-1'); + }); afterEach(function () { App.set('upgradeState', 'INIT'); }); @@ -63,6 +66,14 @@ describe('App.UpgradeVersionBoxView', function () { view.propertyDidChange('isUpgrading'); expect(view.get('isUpgrading')).to.be.true; }); + it("fromVersion correct", function () { + App.set('upgradeState', 'IN_PROGRESS'); + view.set('controller.upgradeVersion', 'HDP-2.2.2'); + view.set('content.displayName', 'HDP-2.2.1'); + view.set('content.repositoryVersion', 'HDP-1'); + view.propertyDidChange('isUpgrading'); + expect(view.get('isUpgrading')).to.be.true; + }); it("upgradeState INIT", function () { App.set('upgradeState', 'INIT'); view.set('controller.upgradeVersion', 'HDP-2.2.2'); http://git-wip-us.apache.org/repos/asf/ambari/blob/d7ccc4c9/ambari-web/test/views/main/admin/stack_upgrade/version_view_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/views/main/admin/stack_upgrade/version_view_test.js b/ambari-web/test/views/main/admin/stack_upgrade/version_view_test.js index b9e8e6d..651c361 100644 --- a/ambari-web/test/views/main/admin/stack_upgrade/version_view_test.js +++ b/ambari-web/test/views/main/admin/stack_upgrade/version_view_test.js @@ -222,12 +222,14 @@ describe('App.mainAdminStackVersionsView', function () { sinon.stub(App, 'get', function (key) { return key === 'supports.displayOlderVersions' ? displayOlderVersions : Em.get(App, key); }); - sinon.stub(App.router, 'get').returns('HDP-2.2') + sinon.stub(view, 'isVersionUpgrading', function(v) { + return v.get('displayName') === 'HDP-2.2'; + }); }); afterEach(function () { App.get.restore(); - App.router.get.restore(); + view.isVersionUpgrading.restore(); }); testCases.forEach(function(t) { @@ -330,6 +332,53 @@ describe('App.mainAdminStackVersionsView', function () { }); }); + describe('#isVersionUpgrading()', function() { + + beforeEach(function() { + this.mock = sinon.stub(App.router, 'get'); + }); + + afterEach(function() { + this.mock.restore(); + }); + + it('should return false, when version not being upgraded', function() { + var version = Em.Object.create({ + displayName: 'HDP', + repositoryVersion: 'HDP' + }); + this.mock.returns(Em.Object.create({ + upgradeVersion: 'HDP-2', + fromVersion: 'HDP-1' + })); + expect(view.isVersionUpgrading(version)).to.be.false; + }); + + it('should return true, when version being upgraded', function() { + var version = Em.Object.create({ + displayName: 'HDP-2', + repositoryVersion: 'HDP' + }); + this.mock.returns(Em.Object.create({ + upgradeVersion: 'HDP-2', + fromVersion: 'HDP-1' + })); + expect(view.isVersionUpgrading(version)).to.be.true; + }); + + it('should return true, when version being downgraded', function() { + var version = Em.Object.create({ + displayName: 'HDP', + repositoryVersion: 'HDP-1' + }); + this.mock.returns(Em.Object.create({ + upgradeVersion: 'HDP-2', + fromVersion: 'HDP-1' + })); + expect(view.isVersionUpgrading(version)).to.be.true; + }); + }); + describe("#goToVersions()", function() { var data = { components: [{
