AMBARI-22133. Repositories With No Components On Them Are Shown as Upgradeable 
(alexantonenko)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/d1ba2298
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/d1ba2298
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/d1ba2298

Branch: refs/heads/branch-feature-AMBARI-14714
Commit: d1ba22989ad81b252f2103f3ae3e674ce56bc2ea
Parents: 158bd65
Author: Alex Antonenko <[email protected]>
Authored: Wed Oct 4 21:19:52 2017 +0300
Committer: Alex Antonenko <[email protected]>
Committed: Wed Oct 4 21:19:52 2017 +0300

----------------------------------------------------------------------
 .../stack_upgrade/upgrade_version_box_view.js   | 42 +++++++----
 .../upgrade_version_box_view_test.js            | 77 +++++++++++---------
 2 files changed, 72 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/d1ba2298/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 81049e9..28f4f32 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
@@ -276,28 +276,44 @@ App.UpgradeVersionBoxView = Em.View.extend({
           break;
         default:
           var isVersionColumnView = this.get('isVersionColumnView');
-          element.set('isButtonGroup', true);
-          element.set('text', isVersionColumnView ? 
Em.I18n.t('common.upgrade') : 
Em.I18n.t('admin.stackVersions.version.performUpgrade'));
-          element.set('action', 'confirmUpgrade');
-          element.get('buttons').pushObject({
-            text: isVersionColumnView ? Em.I18n.t('common.reinstall') : 
Em.I18n.t('admin.stackVersions.version.reinstall'),
-            action: 'installRepoVersionPopup',
-            isDisabled: isDisabled
+          var stackServices = this.get('content.stackServices');
+          var isUpgradable = stackServices && stackServices.some( 
function(stackService){
+              return stackService.get('isUpgradable');
           });
+          var isPatch = this.get('content.isPatch');
+          var isMaint = this.get('content.isMaint');
 
-          element.get('buttons').pushObject({
-            text: Em.I18n.t('admin.stackVersions.version.preUpgradeCheck'),
-            action: 'showUpgradeOptions',
-            isDisabled: isDisabled
-          });
+          element.set('isButtonGroup', true);
+          if (isUpgradable){
+            element.set('text', isVersionColumnView ? 
Em.I18n.t('common.upgrade') : 
Em.I18n.t('admin.stackVersions.version.performUpgrade'));
+            element.set('action', 'confirmUpgrade');
+            element.get('buttons').pushObject({
+              text: isVersionColumnView ? Em.I18n.t('common.reinstall') : 
Em.I18n.t('admin.stackVersions.version.reinstall'),
+              action: 'installRepoVersionPopup',
+              isDisabled: isDisabled
+            });
 
-          if (this.get('content.isPatch') || this.get('content.isMaint')) {
+            element.get('buttons').pushObject({
+              text: Em.I18n.t('admin.stackVersions.version.preUpgradeCheck'),
+              action: 'showUpgradeOptions',
+              isDisabled: isDisabled
+            });
+          }
+          else{
+            element.set('iconClass', 'icon-ok');
+            element.set('text', Em.I18n.t('common.installed'))
+          }
+
+          if ( isPatch || isMaint ) {
             element.get('buttons').pushObject({
               text: Em.I18n.t('common.hide'),
               action: 'confirmDiscardRepoVersion',
               isDisabled: isDisabled
             });
           }
+
+
+
       }
       element.set('isDisabled', isDisabled);
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/d1ba2298/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 5a8f135..506fb81 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
@@ -357,6 +357,8 @@ describe('App.UpgradeVersionBoxView', function () {
 
   describe("#showHosts()", function () {
     beforeEach(function () {
+      view.set('content.stackVersion', Em.Object.create({supportsRevert: 
false}));
+      view.set('content.stackServices', [Em.Object.create({isUpgradable: 
true})])
       sinon.spy(App.ModalPopup, 'show');
       sinon.stub(view, 'filterHostsByStack', Em.K);
     });
@@ -681,6 +683,7 @@ describe('App.UpgradeVersionBoxView', function () {
       {
         inputData: {
           'content.status': 'INSTALLED',
+          'content.stackServices': [Em.Object.create({isUpgradable:true})],
           'controller.requestInProgress': true,
           'content.isPatch': true,
           'parentView.repoVersions': [
@@ -707,15 +710,16 @@ describe('App.UpgradeVersionBoxView', function () {
           isButtonGroup: true,
           buttons: [
             {
-              text: Em.I18n.t('admin.stackVersions.version.reinstall'),
-              action: 'installRepoVersionPopup',
-              isDisabled: true
+              "action": "installRepoVersionPopup",
+              "isDisabled": true,
+              "text": "Reinstall Packages",
             },
             {
-              text: Em.I18n.t('admin.stackVersions.version.preUpgradeCheck'),
-              action: 'showUpgradeOptions',
-              isDisabled: true
+              "action": "showUpgradeOptions",
+              "isDisabled": true,
+              "text": "Pre-Upgrade Check"
             },
+
             {
               "action": "confirmDiscardRepoVersion",
               "isDisabled": true,
@@ -751,18 +755,7 @@ describe('App.UpgradeVersionBoxView', function () {
         expected: {
           status: 'INSTALLED',
           isButtonGroup: true,
-          buttons: [
-            {
-              text: Em.I18n.t('admin.stackVersions.version.reinstall'),
-              action: 'installRepoVersionPopup',
-              isDisabled: true
-            },
-            {
-              text: Em.I18n.t('admin.stackVersions.version.preUpgradeCheck'),
-              action: 'showUpgradeOptions',
-              isDisabled: true
-            }
-          ],
+          buttons: [],
           isDisabled: true
         },
         title: 'installed version, later than current one, admin access, no 
requests in progress, another installation running'
@@ -1397,7 +1390,33 @@ describe('App.UpgradeVersionBoxView', function () {
       })));
     });
 
-    it('version higher than current and in INSTALLED state', function() {
+    it('version higher than current and in INSTALLED state hasnt services 
andis not patch or maint', function() {
+      view.set('controller', Em.Object.create({
+        currentVersion: Em.Object.create({
+          repository_version: '2.0',
+          stack_name: 'HDP'
+        })
+      }));
+      view.set('content', Em.Object.create({
+        status: 'INSTALLED',
+        repositoryVersion: '2.1',
+        stackVersionType: 'HDP',
+        isPatch: false
+      }));
+      var element = Em.Object.create({
+        buttons: []
+      });
+      view.processPreUpgradeState(element);
+      
expect(JSON.stringify(element)).to.be.equal(JSON.stringify(Em.Object.create({
+        "buttons": [],
+        "isButtonGroup": true,
+        'iconClass': 'icon-ok',
+        "text": Em.I18n.t('common.installed'),
+        "isDisabled": false
+      })));
+    });
+
+    it('version higher than current and in INSTALLED state hasnt services ant 
is patch', function() {
       view.set('controller', Em.Object.create({
         currentVersion: Em.Object.create({
           repository_version: '2.0',
@@ -1417,24 +1436,14 @@ describe('App.UpgradeVersionBoxView', function () {
       
expect(JSON.stringify(element)).to.be.equal(JSON.stringify(Em.Object.create({
         "buttons": [
           {
-            "text": Em.I18n.t('admin.stackVersions.version.reinstall'),
-            "action": "installRepoVersionPopup",
-            "isDisabled": false
-          },
-          {
-            text: Em.I18n.t('admin.stackVersions.version.preUpgradeCheck'),
-            action: 'showUpgradeOptions',
-            isDisabled: false
-          },
-          {
-            "text": Em.I18n.t('common.hide'),
-            "action": "confirmDiscardRepoVersion",
-            "isDisabled": false
+           "text":Em.I18n.t('common.hide'),
+           "action":"confirmDiscardRepoVersion",
+           "isDisabled":false
           }
         ],
         "isButtonGroup": true,
-        "text": Em.I18n.t('admin.stackVersions.version.performUpgrade'),
-        "action": 'confirmUpgrade',
+        'iconClass': 'icon-ok',
+        "text": Em.I18n.t('common.installed'),
         "isDisabled": false
       })));
     });

Reply via email to