AMBARI-21923. Web Client Should Only Show Revert Action On Revertable Repositories (alexantonenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/4bbbe1f6 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/4bbbe1f6 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/4bbbe1f6 Branch: refs/heads/feature-branch-AMBARI-21307 Commit: 4bbbe1f66075e1898ab814c27676439123ba0288 Parents: 285cbaf Author: Alex Antonenko <aantone...@hortonworks.com> Authored: Mon Sep 11 13:49:25 2017 +0300 Committer: Alex Antonenko <aantone...@hortonworks.com> Committed: Mon Sep 11 13:49:25 2017 +0300 ---------------------------------------------------------------------- .../main/admin/stack_and_upgrade_controller.js | 3 +- ambari-web/app/mappers/stack_version_mapper.js | 4 ++- ambari-web/app/models/stack_version/version.js | 2 ++ ambari-web/app/styles/stack_versions.less | 24 +++++++++++-- .../stack_upgrade/upgrade_version_column.hbs | 14 ++++++++ .../stack_upgrade/upgrade_version_box_view.js | 9 +++-- .../upgrade_version_column_view.js | 37 -------------------- .../admin/stack_and_upgrade_controller_test.js | 17 +++------ .../mixins/common/configs/configs_saver_test.js | 4 ++- .../service/configs/config_overridable_test.js | 2 ++ .../upgrade_version_box_view_test.js | 27 +++++++++++--- 11 files changed, 80 insertions(+), 63 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/4bbbe1f6/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 b0df4a4..f968afa 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 @@ -2064,7 +2064,6 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, */ revertPatchUpgrade: function (version) { this.set('requestInProgress', true); - var upgrade = App.StackUpgradeHistory.find().findProperty('associatedVersion', version.get('repositoryVersion')); return App.ajax.send({ name: 'admin.upgrade.revert', sender: this, @@ -2074,7 +2073,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, this.sender.set('requestInProgress', false); }, data: { - upgradeId: upgrade && upgrade.get('upgradeId'), + upgradeId: version.get('stackVersion').get('revertUpgradeId'), id: version.get('id'), value: version.get('repositoryVersion'), label: version.get('displayName'), http://git-wip-us.apache.org/repos/asf/ambari/blob/4bbbe1f6/ambari-web/app/mappers/stack_version_mapper.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mappers/stack_version_mapper.js b/ambari-web/app/mappers/stack_version_mapper.js index 2b091a0..9fa0b78 100644 --- a/ambari-web/app/mappers/stack_version_mapper.js +++ b/ambari-web/app/mappers/stack_version_mapper.js @@ -36,7 +36,9 @@ App.stackVersionMapper = App.QuickDataMapper.create({ "upgrading_hosts": "host_states.UPGRADING", "upgraded_hosts": "host_states.UPGRADED", "upgrade_failed_hosts": "host_states.UPGRADE_FAILED", - "current_hosts": "host_states.CURRENT" + "current_hosts": "host_states.CURRENT", + "supports_revert": "supports_revert", + "revert_upgrade_id": "revert_upgrade_id" }, map: function (json) { http://git-wip-us.apache.org/repos/asf/ambari/blob/4bbbe1f6/ambari-web/app/models/stack_version/version.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/stack_version/version.js b/ambari-web/app/models/stack_version/version.js index 4e18ca4..45e09e6 100644 --- a/ambari-web/app/models/stack_version/version.js +++ b/ambari-web/app/models/stack_version/version.js @@ -34,6 +34,8 @@ App.StackVersion = DS.Model.extend({ upgradedHosts: DS.attr('array'), upgradeFailedHosts: DS.attr('array'), currentHosts: DS.attr('array'), + supportsRevert: DS.attr('boolean'), + revertUpgradeId: DS.attr('number'), noInstalledHosts: Em.computed.empty('installedHosts'), http://git-wip-us.apache.org/repos/asf/ambari/blob/4bbbe1f6/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 b854933..61cb177 100644 --- a/ambari-web/app/styles/stack_versions.less +++ b/ambari-web/app/styles/stack_versions.less @@ -304,8 +304,28 @@ margin: 5px 0 15px 0; line-height: 20px; height: 35px; - .label-success { - line-height: 30px; + .label-wrapper{ + display: inline-block; + position: relative; + .label-success { + line-height: 30px; + } + .dropdown-toggle{ + background: none; + height: auto; + padding: 8px 8px; + background: none; + border:none; + outline:none; + box-shadow: none; + position: absolute; + right: 0; + top: 0; + color: #fff; + &:hover, &:active, &:focus{ + color: #fff; + } + } } .btn.btn-primary:not(.dropdown-toggle) { padding: 4px 5px; http://git-wip-us.apache.org/repos/asf/ambari/blob/4bbbe1f6/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 b6a30fc..41c8cdb 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,7 +61,21 @@ </div> {{/if}} {{#if view.stateElement.isLabel}} + <div class="label-wrapper"> <span {{bindAttr class="view.stateElement.class"}}>{{view.stateElement.text}}</span> + {{#if view.stateElement.canBeReverted}} + <button class="btn dropdown-toggle" data-toggle="dropdown"> + <span class="caret"></span> + </button> + <ul class="dropdown-menu"> + <li> + <a {{action runAction view.stateElement.action target="view"}}> + {{view.stateElement.actionText}} + </a> + </li> + </ul> + {{/if}} + </div> {{/if}} {{#if view.stateElement.isLink}} {{#if view.stateElement.iconClass}} http://git-wip-us.apache.org/repos/asf/ambari/blob/4bbbe1f6/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 1a2cc60..7c647fb 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 @@ -145,9 +145,9 @@ App.UpgradeVersionBoxView = Em.View.extend({ action: 'resumeUpgrade' }, 'CURRENT_PATCH': { - isButton: true, - text: Em.I18n.t('common.revert'), - action: 'confirmRevertPatchUpgrade' + isLabel: true, + text: Em.I18n.t('common.current'), + class: 'label label-success' } }, @@ -169,6 +169,9 @@ App.UpgradeVersionBoxView = Em.View.extend({ if (status === 'CURRENT' && this.get('content.isPatch') && !this.get('isUpgrading')) { element.setProperties(statePropertiesMap['CURRENT_PATCH']); + element.set('canBeReverted', this.get('content.stackVersion').get('supportsRevert')); + element.set('action', 'confirmRevertPatchUpgrade'); + element.set('actionText', Em.I18n.t('common.revert')); } else if (['INSTALLING', 'CURRENT'].contains(status) && !this.get('content.isPatch')) { element.setProperties(statePropertiesMap[status]); http://git-wip-us.apache.org/repos/asf/ambari/blob/4bbbe1f6/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_column_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_column_view.js b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_column_view.js index 4039497..b5933b9 100644 --- a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_column_view.js +++ b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_column_view.js @@ -63,43 +63,6 @@ App.UpgradeVersionColumnView = App.UpgradeVersionBoxView.extend({ }, this); }.property(), - /** - * map of properties which correspond to particular state of Upgrade version - * @type {object} - */ - statePropertiesMap: { - 'CURRENT': { - isLabel: true, - text: Em.I18n.t('common.current'), - class: 'label label-success' - }, - 'NOT_REQUIRED': { - isButton: true, - text: Em.I18n.t('common.install'), - action: 'installRepoVersionConfirmation' - }, - 'LOADING': { - isSpinner: true, - class: 'spinner' - }, - 'INSTALLING': { - iconClass: 'glyphicon glyphicon-cog', - isLink: true, - text: Em.I18n.t('hosts.host.stackVersions.status.installing'), - action: 'showProgressPopup' - }, - 'INSTALLED': { - iconClass: 'glyphicon glyphicon-ok', - isLink: true, - text: Em.I18n.t('common.installed'), - action: null - }, - 'SUSPENDED': { - isButton: true, - text: Em.I18n.t('admin.stackUpgrade.dialog.resume'), - action: 'resumeUpgrade' - } - }, /** * @param {Em.Object} stackService http://git-wip-us.apache.org/repos/asf/ambari/blob/4bbbe1f6/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 94b9091..e2f07fc 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 @@ -3476,24 +3476,15 @@ describe('App.MainAdminStackAndUpgradeController', function() { }); describe('#revertPatchUpgrade', function() { - beforeEach(function() { - sinon.stub(App.StackUpgradeHistory, 'find').returns([ - Em.Object.create({ - associatedVersion: '1.1', - upgradeId: 1 - }) - ]); - }); - afterEach(function() { - App.StackUpgradeHistory.find.restore(); - }); - it('App.ajax.send should be called', function() { var version = Em.Object.create({ repositoryVersion: '1.1', id: 2, displayName: '1.2', - upgradeType: 'EXPRESS' + upgradeType: 'EXPRESS', + stackVersion: Em.Object.create({ + revertUpgradeId: 1 + }) }); controller.revertPatchUpgrade(version); expect(controller.get('requestInProgress')).to.be.true; http://git-wip-us.apache.org/repos/asf/ambari/blob/4bbbe1f6/ambari-web/test/mixins/common/configs/configs_saver_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/mixins/common/configs/configs_saver_test.js b/ambari-web/test/mixins/common/configs/configs_saver_test.js index 9099e54..855823c 100644 --- a/ambari-web/test/mixins/common/configs/configs_saver_test.js +++ b/ambari-web/test/mixins/common/configs/configs_saver_test.js @@ -914,7 +914,8 @@ describe('App.ConfigsSaverMixin', function() { host_name: 'host1' }], "service_config_version_note": "note", - "desired_configs": "{}" + "desired_configs": "{}", + "service_name": "S1", } }); }); @@ -939,6 +940,7 @@ describe('App.ConfigsSaverMixin', function() { host_name: 'host1' }], "service_config_version_note": "", + "service_name": "S1", "desired_configs": "{}", id: 'g1' } http://git-wip-us.apache.org/repos/asf/ambari/blob/4bbbe1f6/ambari-web/test/mixins/main/service/configs/config_overridable_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/mixins/main/service/configs/config_overridable_test.js b/ambari-web/test/mixins/main/service/configs/config_overridable_test.js index b562ffb..198d854 100644 --- a/ambari-web/test/mixins/main/service/configs/config_overridable_test.js +++ b/ambari-web/test/mixins/main/service/configs/config_overridable_test.js @@ -179,6 +179,7 @@ describe('App.ConfigOverridable', function () { "ConfigGroup": { "group_name": 'cg1', "tag": 'S1', + "service_name": "S1", "description": '', "desired_configs": [], "hosts": [{host_name: 'host1'}] @@ -264,6 +265,7 @@ describe('App.ConfigOverridable', function () { group_name: 'cg1', description: 'dsc', tag: 'S1', + service_name: "S1", hosts: [{ host_name: 'host1' }], http://git-wip-us.apache.org/repos/asf/ambari/blob/4bbbe1f6/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 5b0ce86..46dd62f 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 @@ -452,15 +452,34 @@ describe('App.UpgradeVersionBoxView', function () { inputData: { 'content.status': 'CURRENT', 'content.isPatch': true, - 'isUpgrading': false + 'isUpgrading': false, + 'content.stackVersion': Em.Object.create({ + 'supportsRevert': false + }) + }, + expected: { + isLabel: true, + text: Em.I18n.t('common.current'), + class: 'label label-success', + canBeReverted: false + }, + title: 'current no-revertable patch version' + }, + { + inputData: { + 'content.status': 'CURRENT', + 'content.isPatch': true, + 'isUpgrading': false, + 'content.stackVersion': Em.Object.create({ + 'supportsRevert': true + }) }, expected: { status: 'CURRENT', - isButton: true, - text: Em.I18n.t('common.revert'), + text: Em.I18n.t('common.current'), action: 'confirmRevertPatchUpgrade' }, - title: 'current patch version' + title: 'current revertable patch version' }, { inputData: {