Repository: ambari Updated Branches: refs/heads/branch-2.5 774856b66 -> c5404bdd7
AMBARI-18844 Web Client Should Support HOST_ORDERED Upgrades In Progress. (atkach) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c5404bdd Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c5404bdd Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c5404bdd Branch: refs/heads/branch-2.5 Commit: c5404bdd79f0b3c42ef5f7c98599cbe79cee18e3 Parents: 774856b Author: Andrii Tkach <[email protected]> Authored: Thu Nov 10 14:31:08 2016 +0200 Committer: Andrii Tkach <[email protected]> Committed: Thu Nov 10 14:31:08 2016 +0200 ---------------------------------------------------------------------- ambari-web/app/config.js | 1 + .../main/admin/stack_and_upgrade_controller.js | 47 +++++++++++++++++--- ambari-web/app/messages.js | 1 + ambari-web/app/styles/application.less | 3 ++ ambari-web/app/styles/stack_versions.less | 3 ++ .../admin/stack_upgrade/upgrade_version_box.hbs | 5 ++- .../stack_upgrade/upgrade_version_column.hbs | 5 ++- .../stack_upgrade/upgrade_version_box_view.js | 4 ++ .../admin/stack_and_upgrade_controller_test.js | 31 +++++++++++++ .../test/views/common/quick_link_view_test.js | 4 +- .../upgrade_version_box_view_test.js | 22 +++++++++ 11 files changed, 113 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/c5404bdd/ambari-web/app/config.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/config.js b/ambari-web/app/config.js index 87f3d75..c3c45b1 100644 --- a/ambari-web/app/config.js +++ b/ambari-web/app/config.js @@ -89,6 +89,7 @@ App.supports = { addingNewRepository: false, kerberosStackAdvisor: true, logCountVizualization: false, + enabledWizardForHostOrderedUpgrade: true, manageJournalNode: true }; http://git-wip-us.apache.org/repos/asf/ambari/blob/c5404bdd/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 58de476..ebf6c39 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 @@ -107,6 +107,14 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, serviceCheckFailuresServicenames: [], /** + * Restricted type of upgrade, can't be viewed in wizard. + * It's status visible only in upgrade status label + * @type {boolean} + * @default false + */ + isWizardRestricted: false, + + /** * methods through which cluster could be upgraded, "allowed" indicated if the method is allowed * by stack upgrade path * @type {Array} @@ -123,7 +131,8 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, isCheckRequestInProgress: false, precheckResultsMessage: '', precheckResultsTitle: '', - action: '' + action: '', + isWizardRestricted: false }), Em.Object.create({ displayName: Em.I18n.t('admin.stackVersions.version.upgrade.upgradeOptions.EU.title'), @@ -136,7 +145,22 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, isCheckRequestInProgress: false, precheckResultsMessage: '', precheckResultsTitle: '', - action: '' + action: '', + isWizardRestricted: false + }), + Em.Object.create({ + displayName: Em.I18n.t('admin.stackVersions.version.upgrade.upgradeOptions.HOU.title'), + type: 'HOST_ORDERED', + icon: "glyphicon glyphicon-bolt", + description: '', + selected: false, + allowed: false, + isCheckComplete: false, + isCheckRequestInProgress: false, + precheckResultsMessage: '', + precheckResultsTitle: '', + action: '', + isWizardRestricted: !App.supports.enabledWizardForHostOrderedUpgrade }) ], @@ -195,7 +219,8 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, 'failuresTolerance', 'isDowngrade', 'downgradeAllowed', - 'isSuspended' + 'isSuspended', + 'isWizardRestricted' ], /** @@ -815,15 +840,18 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, this.set('upgradeId', data.resources[0].Upgrade.request_id); this.set('upgradeVersion', params.label); this.set('isDowngrade', !!params.isDowngrade); - var upgradeMethod = this.get('upgradeMethods').findProperty('type', params.type); - var upgradeTypeDisplayName = null; - var upgradeType = null; + var upgradeMethod = this.get('upgradeMethods').findProperty('type', params.type), + upgradeTypeDisplayName = null, + upgradeType = null, + isWizardRestricted = false; if (upgradeMethod) { upgradeTypeDisplayName = upgradeMethod.get('displayName'); upgradeType = upgradeMethod.get('type'); + isWizardRestricted = upgradeMethod.get('isWizardRestricted'); } + this.set('isWizardRestricted', isWizardRestricted); this.set('upgradeType', upgradeType); this.set('upgradeTypeDisplayName', upgradeTypeDisplayName); this.set('failuresTolerance', Em.Object.create({ @@ -836,6 +864,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, upgradeState: 'PENDING', isDowngrade: !!params.isDowngrade, upgradeType: upgradeType, + isWizardRestricted: isWizardRestricted, upgradeTypeDisplayName: upgradeTypeDisplayName, failuresTolerance: Em.Object.create({ skipComponentFailures: params.skipComponentFailures == 'true', @@ -934,6 +963,8 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, }); request.type = 'ALL'; this.get('runningCheckRequests').push(request); + } else { + this.set('isUpgradeTypesLoaded', true); } return App.ModalPopup.show({ @@ -1596,6 +1627,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, currentVersion: undefined, upgradeTypeDisplayName: undefined, upgradeType: undefined, + isWizardRestricted: false, failuresTolerance: undefined, isDowngrade: undefined, downgradeAllowed: undefined @@ -1648,7 +1680,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, * @return {App.ModalPopup} */ openUpgradeDialog: function () { - if (App.isAuthorized('CLUSTER.UPGRADE_DOWNGRADE_STACK')) { + if (App.isAuthorized('CLUSTER.UPGRADE_DOWNGRADE_STACK') && !this.get('isWizardRestricted')) { App.propertyDidChange('upgradeSuspended'); App.router.transitionTo('admin.stackUpgrade'); } @@ -1834,6 +1866,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, isDowngrade: lastUpgradeData.Upgrade.direction === 'DOWNGRADE', upgradeState: lastUpgradeData.Upgrade.request_status, upgradeType: lastUpgradeData.Upgrade.upgrade_type, + isWizardRestricted: upgradeType.get('isWizardRestricted'), downgradeAllowed: lastUpgradeData.Upgrade.downgrade_allowed, upgradeTypeDisplayName: upgradeType.get('displayName'), failuresTolerance: Em.Object.create({ http://git-wip-us.apache.org/repos/asf/ambari/blob/c5404bdd/ambari-web/app/messages.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js index 40bad3e..5bdea8e 100644 --- a/ambari-web/app/messages.js +++ b/ambari-web/app/messages.js @@ -1701,6 +1701,7 @@ Em.I18n.translations = { 'admin.stackVersions.version.upgrade.upgradeOptions.RU.title': "Rolling Upgrade", 'admin.stackVersions.version.upgrade.upgradeOptions.RU.description': "Services remain running while the upgrade is performed. Minimized disruption but slower upgrade.", 'admin.stackVersions.version.upgrade.upgradeOptions.EU.title': "Express Upgrade", + 'admin.stackVersions.version.upgrade.upgradeOptions.HOU.title': "Host Ordered Upgrade", 'admin.stackVersions.version.upgrade.upgradeOptions.EU.description': "Services are stopped while the upgrade is performed. Incurs downtime, but faster upgrade.", 'admin.stackVersions.version.upgrade.upgradeOptions.errors_bypassed': "Bypassed errors,<br/>proceed at your own risk.", 'admin.stackVersions.version.upgrade.upgradeOptions.preCheck.rerun':'Rerun Checks', http://git-wip-us.apache.org/repos/asf/ambari/blob/c5404bdd/ambari-web/app/styles/application.less ---------------------------------------------------------------------- diff --git a/ambari-web/app/styles/application.less b/ambari-web/app/styles/application.less index 26f6991..0288387 100644 --- a/ambari-web/app/styles/application.less +++ b/ambari-web/app/styles/application.less @@ -76,6 +76,9 @@ footer { .ru-badge { text-align: center; + a:hover { + text-decoration: none; + } } #top-nav, .ru-badge { http://git-wip-us.apache.org/repos/asf/ambari/blob/c5404bdd/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 d16dc69..921b418 100644 --- a/ambari-web/app/styles/stack_versions.less +++ b/ambari-web/app/styles/stack_versions.less @@ -192,6 +192,9 @@ color: #0088cc; font-size: 16px; } + i[disabled='disabled'] { + color: inherit; + } .label { padding: 5px 20px; font-size: 14px; http://git-wip-us.apache.org/repos/asf/ambari/blob/c5404bdd/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_box.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_box.hbs b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_box.hbs index 72bce5c..9a5bf0a 100644 --- a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_box.hbs +++ b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_box.hbs @@ -69,9 +69,10 @@ {{/if}} {{#if view.stateElement.isLink}} {{#if view.stateElement.iconClass}} - <i {{bindAttr class="view.stateElement.iconClass"}}></i> + <i {{bindAttr class="view.stateElement.iconClass" disabled="view.stateElement.isDisabled"}}></i> {{/if}} - <a href="#" {{action runAction target="view"}}>{{view.stateElement.text}}</a> + <a href="#" {{action runAction target="view"}} + {{bindAttr disabled="view.stateElement.isDisabled"}}>{{view.stateElement.text}}</a> {{#if view.stateElement.isInstalling}} {{view App.ProgressBarView progressBinding="view.installProgress" http://git-wip-us.apache.org/repos/asf/ambari/blob/c5404bdd/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_column.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_column.hbs b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_column.hbs index 52a42fc..ee9bb93 100644 --- a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_column.hbs +++ b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_column.hbs @@ -61,9 +61,10 @@ {{/if}} {{#if view.stateElement.isLink}} {{#if view.stateElement.iconClass}} - <i {{bindAttr class="view.stateElement.iconClass"}}></i> + <i {{bindAttr class="view.stateElement.iconClass" disabled="view.stateElement.isDisabled"}}></i> {{/if}} - <a href="#" {{action runAction target="view"}}>{{view.stateElement.text}}</a> + <a href="#" {{action runAction target="view"}} + {{bindAttr disabled="view.stateElement.isDisabled"}}>{{view.stateElement.text}}</a> {{#if view.stateElement.isInstalling}} {{view App.ProgressBarView progressBinding="view.installProgress" http://git-wip-us.apache.org/repos/asf/ambari/blob/c5404bdd/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 bf15f33..03d0621 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 @@ -226,6 +226,10 @@ App.UpgradeVersionBoxView = Em.View.extend({ element.set('text', this.get('isVersionColumnView') ? Em.I18n.t('common.resume'): text); element.set('isDisabled', this.get('controller.requestInProgress')); } + //For restricted upgrade wizard should be disabled in any state + if (this.get('controller.isWizardRestricted')) { + element.set('isDisabled', true); + } return element; }.property( 'content.status', http://git-wip-us.apache.org/repos/asf/ambari/blob/c5404bdd/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 ff8bf11..78e81a0 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 @@ -365,11 +365,25 @@ describe('App.MainAdminStackAndUpgradeController', function() { expect(App.router.transitionTo.called).to.be.false; }); + it('should not open dialog, isWizardRestricted=true', function () { + this.mockAuthorized.returns(true); + controller.set('isWizardRestricted', true); + controller.openUpgradeDialog(); + expect(App.router.transitionTo.called).to.be.false; + }); + it('upgradeSuspended should not receive value', function () { this.mockAuthorized.returns(false); controller.openUpgradeDialog(); expect(mock.observer.called).to.be.false; }); + + it('upgradeSuspended should not receive value, isWizardRestricted=true', function () { + this.mockAuthorized.returns(true); + controller.set('isWizardRestricted', true); + controller.openUpgradeDialog(); + expect(mock.observer.called).to.be.false; + }); }); describe("#runPreUpgradeCheck()", function() { @@ -1791,6 +1805,7 @@ describe('App.MainAdminStackAndUpgradeController', function() { isDowngrade: false, upgradeState: 'PENDING', upgradeType: "ROLLING", + isWizardRestricted: false, downgradeAllowed: true, upgradeTypeDisplayName: Em.I18n.t('admin.stackVersions.version.upgrade.upgradeOptions.RU.title'), failuresTolerance: Em.Object.create({ @@ -3023,6 +3038,22 @@ describe('App.MainAdminStackAndUpgradeController', function() { App.clusterStatus.setClusterStatus.restore(); }); + it("setDBProperties should be called", function() { + controller.finish(); + expect(controller.setDBProperties.calledWith({ + upgradeId: undefined, + upgradeState: 'INIT', + upgradeVersion: undefined, + currentVersion: undefined, + upgradeTypeDisplayName: undefined, + upgradeType: undefined, + isWizardRestricted: false, + failuresTolerance: undefined, + isDowngrade: undefined, + downgradeAllowed: undefined + })).to.be.true; + }); + 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/c5404bdd/ambari-web/test/views/common/quick_link_view_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/views/common/quick_link_view_test.js b/ambari-web/test/views/common/quick_link_view_test.js index f9a52b1..7179078 100644 --- a/ambari-web/test/views/common/quick_link_view_test.js +++ b/ambari-web/test/views/common/quick_link_view_test.js @@ -20,9 +20,9 @@ var App = require('app'); require('views/common/quick_view_link_view'); var testHelpers = require('test/helpers'); -describe('App.QuickViewLinks', function () { +describe('App.QuickLinksView', function () { - var quickViewLinks = App.QuickViewLinks.create({ + var quickViewLinks = App.QuickLinksView.create({ content: Em.Object.create() }); http://git-wip-us.apache.org/repos/asf/ambari/blob/c5404bdd/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 4506d3a..4eaaac0 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 @@ -707,6 +707,28 @@ describe('App.UpgradeVersionBoxView', function () { 'isUpgrading': true, 'controller.isDowngrade': false, 'controller.upgradeVersion': 'HDP-2.2.1', + 'controller.isWizardRestricted': true, + 'content.displayName': 'HDP-2.2.1' + }, + setup: function () { + this.getMock.withArgs('upgradeState').returns('HOLDING'); + }, + expected: { + isDisabled: true, + status: 'UPGRADING', + isLink: true, + action: 'openUpgradeDialog', + iconClass: 'glyphicon glyphicon-pause', + text: Em.I18n.t('admin.stackVersions.version.upgrade.pause') + }, + title: 'upgrading, holding, isWizardRestricted=true' + }, + { + inputData: { + 'content.status': 'UPGRADING', + 'isUpgrading': true, + 'controller.isDowngrade': false, + 'controller.upgradeVersion': 'HDP-2.2.1', 'content.displayName': 'HDP-2.2.1' }, setup: function () {
