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: {

Reply via email to