AMBARI-22157. Web Client Should Never List Any Upgrade Actions On Only Stack In System (alexantonenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/fab2aa3c Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/fab2aa3c Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/fab2aa3c Branch: refs/heads/branch-feature-AMBARI-14714 Commit: fab2aa3c62e3dbe5cce795ca50c4b61baee1d19e Parents: 7172655 Author: Alex Antonenko <[email protected]> Authored: Fri Oct 6 16:35:29 2017 +0300 Committer: Alex Antonenko <[email protected]> Committed: Fri Oct 6 16:35:29 2017 +0300 ---------------------------------------------------------------------- .../stack_upgrade/upgrade_version_box_view.js | 13 ++++-- .../upgrade_version_box_view_test.js | 44 ++++++++++++++++++-- 2 files changed, 49 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/fab2aa3c/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 28f4f32..355ad88 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 @@ -199,7 +199,8 @@ App.UpgradeVersionBoxView = Em.View.extend({ 'isUpgrading', 'controller.requestInProgress', 'controller.requestInProgressRepoId', - '[email protected]' + '[email protected]', + 'isCurrentStackPresent' ), /** @@ -208,6 +209,7 @@ App.UpgradeVersionBoxView = Em.View.extend({ */ isDisabledOnInit: function() { return this.get('controller.requestInProgress') || + !this.get('isCurrentStackPresent') || !this.get('content.isCompatible') || (App.get('upgradeIsRunning') && !App.get('upgradeSuspended')) || this.get('parentView.repoVersions').someProperty('status', 'INSTALLING'); @@ -312,8 +314,6 @@ App.UpgradeVersionBoxView = Em.View.extend({ }); } - - } element.set('isDisabled', isDisabled); } @@ -357,7 +357,8 @@ App.UpgradeVersionBoxView = Em.View.extend({ * @returns {boolean} */ isDisabledOnInstalled: function() { - return !App.isAuthorized('CLUSTER.UPGRADE_DOWNGRADE_STACK') || + return !this.get('isCurrentStackPresent') || + !App.isAuthorized('CLUSTER.UPGRADE_DOWNGRADE_STACK') || this.get('controller.requestInProgress') || this.get('parentView.repoVersions').someProperty('status', 'INSTALLING') || (this.get('controller.isDowngrade') && @@ -392,6 +393,10 @@ App.UpgradeVersionBoxView = Em.View.extend({ $('.out-of-sync-badge').tooltip('destroy'); }, + isCurrentStackPresent: Ember.computed('[email protected]', function () { + return this.get('parentView.repoVersions').someProperty('stackVersion.state', 'CURRENT'); + }), + /** * run custom action of controller */ http://git-wip-us.apache.org/repos/asf/ambari/blob/fab2aa3c/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 506fb81..9bee7af 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 @@ -29,6 +29,7 @@ describe('App.UpgradeVersionBoxView', function () { sinon.stub(App.db, 'getFilterConditions', function () {return [];}); view = App.UpgradeVersionBoxView.create({ initFilters: Em.K, + isCurrentStackPresent: true, controller: Em.Object.create({ upgrade: Em.K, getRepoVersionInstallId: Em.K, @@ -1103,6 +1104,7 @@ describe('App.UpgradeVersionBoxView', function () { upgradeSuspended: true, status: 'INSTALLED', isCompatible: true, + isCurrentStackPresent: true, expected: true }, { @@ -1111,6 +1113,7 @@ describe('App.UpgradeVersionBoxView', function () { upgradeSuspended: false, status: 'INSTALLED', isCompatible: true, + isCurrentStackPresent: true, expected: true }, { @@ -1119,6 +1122,7 @@ describe('App.UpgradeVersionBoxView', function () { upgradeSuspended: false, status: 'INSTALLING', isCompatible: true, + isCurrentStackPresent: true, expected: true }, { @@ -1127,6 +1131,7 @@ describe('App.UpgradeVersionBoxView', function () { upgradeSuspended: true, status: 'INSTALLED', isCompatible: false, + isCurrentStackPresent: true, expected: true }, { @@ -1135,6 +1140,7 @@ describe('App.UpgradeVersionBoxView', function () { upgradeSuspended: true, status: 'INSTALLED', isCompatible: true, + isCurrentStackPresent: true, expected: false }, { @@ -1143,7 +1149,17 @@ describe('App.UpgradeVersionBoxView', function () { upgradeSuspended: false, status: 'INSTALLED', isCompatible: true, + isCurrentStackPresent: true, expected: false + }, + { + requestInProgress: false, + upgradeIsRunning: false, + upgradeSuspended: false, + status: 'INSTALLED', + isCompatible: true, + isCurrentStackPresent: false, + expected: true } ]; @@ -1156,16 +1172,18 @@ describe('App.UpgradeVersionBoxView', function () { }); testCases.forEach(function(test) { - it("requestInProgress: " + test.requestInProgress + + it(" requestInProgress: " + test.requestInProgress + " upgradeIsRunning: " + test.upgradeIsRunning + " upgradeSuspended: " + test.upgradeSuspended + - " status" + test.status + - " isCompatible" + test.isCompatible, function() { + " status: " + test.status + + " isCompatible: " + test.isCompatible + + " isCurrentStackPresent: " + test.isCurrentStackPresent, function() { this.mock.withArgs('upgradeSuspended').returns(test.upgradeSuspended); this.mock.withArgs('upgradeIsRunning').returns(test.upgradeIsRunning); view.set('parentView.repoVersions', [Em.Object.create({ status: test.status })]); + view.set('isCurrentStackPresent', test.isCurrentStackPresent) view.set('controller.requestInProgress', test.requestInProgress); view.set('content.isCompatible', test.isCompatible); expect(view.isDisabledOnInit()).to.be.equal(test.expected); @@ -1191,6 +1209,7 @@ describe('App.UpgradeVersionBoxView', function () { isDowngrade: false, repositoryName: 'HDP-2.2', upgradeVersion: 'HDP-2.3', + isCurrentStackPresent: true, expected: true }, { @@ -1200,6 +1219,7 @@ describe('App.UpgradeVersionBoxView', function () { isDowngrade: false, repositoryName: 'HDP-2.2', upgradeVersion: 'HDP-2.3', + isCurrentStackPresent: true, expected: true }, { @@ -1209,6 +1229,7 @@ describe('App.UpgradeVersionBoxView', function () { isDowngrade: false, repositoryName: 'HDP-2.2', upgradeVersion: 'HDP-2.3', + isCurrentStackPresent: true, expected: true }, { @@ -1218,6 +1239,7 @@ describe('App.UpgradeVersionBoxView', function () { isDowngrade: true, repositoryName: 'HDP-2.2', upgradeVersion: 'HDP-2.2', + isCurrentStackPresent: true, expected: true }, { @@ -1227,6 +1249,7 @@ describe('App.UpgradeVersionBoxView', function () { isDowngrade: true, repositoryName: 'HDP-2.2', upgradeVersion: 'HDP-2.3', + isCurrentStackPresent: true, expected: false }, { @@ -1236,7 +1259,18 @@ describe('App.UpgradeVersionBoxView', function () { isDowngrade: false, repositoryName: 'HDP-2.2', upgradeVersion: 'HDP-2.2', + isCurrentStackPresent: true, expected: false + }, + { + isAuthorized: true, + requestInProgress: false, + status: 'INSTALLED', + isDowngrade: false, + repositoryName: 'HDP-2.2', + upgradeVersion: 'HDP-2.2', + isCurrentStackPresent: false, + expected: true } ]; @@ -1246,13 +1280,15 @@ describe('App.UpgradeVersionBoxView', function () { "status: " + test.status + "isDowngrade: " + test.isDowngrade + "repositoryName: " + test.repositoryName + - "upgradeVersion: " + test.upgradeVersion, function() { + "upgradeVersion: " + test.upgradeVersion + + "isCurrentStackPresent: " + test.isCurrentStackPresent, function() { this.authorizedMock.returns(test.isAuthorized); view.set('controller.requestInProgress', test.requestInProgress); view.set('parentView.repoVersions', [Em.Object.create({status: test.status})]); view.set('controller.isDowngrade', test.isDowngrade); view.set('controller.currentVersion.repository_name', test.repositoryName); view.set('controller.upgradeVersion', test.upgradeVersion); + view.set('isCurrentStackPresent', test.isCurrentStackPresent); expect(view.isDisabledOnInstalled()).to.be.equal(test.expected); }); });
