You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by at...@apache.org on 2016/10/04 14:18:25 UTC

ambari git commit: AMBARI-18506 Ambari should present message if stack upgrade path is not available. (atkach)

Repository: ambari
Updated Branches:
  refs/heads/branch-2.5 21e36a043 -> 1ca575d60


AMBARI-18506 Ambari should present message if stack upgrade path is not available. (atkach)


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

Branch: refs/heads/branch-2.5
Commit: 1ca575d60f66ed872d78defed5be5532815517fc
Parents: 21e36a0
Author: Andrii Tkach <at...@apache.org>
Authored: Fri Sep 30 17:04:30 2016 +0300
Committer: Andrii Tkach <at...@apache.org>
Committed: Tue Oct 4 17:18:04 2016 +0300

----------------------------------------------------------------------
 ambari-web/app/assets/test/tests.js             |  1 +
 .../main/admin/stack_and_upgrade_controller.js  | 45 +++++++++---
 .../app/mappers/repository_version_mapper.js    | 28 +++++++-
 ambari-web/app/messages.js                      |  1 +
 .../models/stack_version/repository_version.js  |  6 ++
 .../admin/stack_upgrade/upgrade_version_box.hbs |  2 +-
 .../stack_upgrade/upgrade_version_column.hbs    |  2 +-
 ambari-web/app/utils/ajax/ajax.js               |  5 ++
 .../stack_upgrade/upgrade_version_box_view.js   |  6 ++
 .../upgrade_version_column_view.js              |  6 +-
 .../admin/stack_and_upgrade_controller_test.js  | 74 +++++++++++++++++++-
 .../mappers/repository_version_mapper_test.js   | 46 ++++++++++++
 .../upgrade_version_box_view_test.js            | 23 ++++--
 13 files changed, 223 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/1ca575d6/ambari-web/app/assets/test/tests.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/test/tests.js b/ambari-web/app/assets/test/tests.js
index 3e52d35..8571fc4 100644
--- a/ambari-web/app/assets/test/tests.js
+++ b/ambari-web/app/assets/test/tests.js
@@ -145,6 +145,7 @@ var files = [
   'test/mappers/users_mapper_test',
   'test/mappers/stack_mapper_test',
   'test/mappers/stack_service_mapper_test',
+  'test/mappers/repository_version_mapper_test',
   'test/mappers/configs/config_groups_mapper_test',
   'test/mappers/configs/service_config_version_mapper_test',
   'test/mappers/configs/themes_mapper_test',

http://git-wip-us.apache.org/repos/asf/ambari/blob/1ca575d6/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 bbf7523..56a7a61 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
@@ -241,8 +241,8 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
    * @type {String}
    */
   realRepoUrl: function () {
-    return App.get('apiPrefix') + App.get('stackVersionURL') +
-      '/compatible_repository_versions?fields=*,operating_systems/*,operating_systems/repositories/*';
+    return App.get('apiPrefix') + '/stacks?fields=versions/repository_versions/RepositoryVersions,' +
+      'versions/repository_versions/operating_systems/*,versions/repository_versions/operating_systems/repositories/*';
   }.property('App.stackVersionURL'),
 
   /**
@@ -329,14 +329,16 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
     this.loadUpgradeData(true).done(function() {
       self.loadStackVersionsToModel(true).done(function () {
         self.loadRepoVersionsToModel().done(function() {
-          var currentVersion = App.StackVersion.find().findProperty('state', 'CURRENT');
-          if (currentVersion) {
-            self.set('currentVersion', {
-              repository_version: currentVersion.get('repositoryVersion.repositoryVersion'),
-              repository_name: currentVersion.get('repositoryVersion.displayName')
-            });
-          }
-          dfd.resolve();
+          self.loadCompatibleVersions().done(function() {
+            var currentVersion = App.StackVersion.find().findProperty('state', 'CURRENT');
+            if (currentVersion) {
+              self.set('currentVersion', {
+                repository_version: currentVersion.get('repositoryVersion.repositoryVersion'),
+                repository_name: currentVersion.get('repositoryVersion.displayName')
+              });
+            }
+            dfd.resolve();
+          });
         });
       });
     });
@@ -395,6 +397,29 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
     }
   },
 
+  loadCompatibleVersions: function() {
+    return App.ajax.send({
+      name: 'admin.upgrade.get_compatible_versions',
+      sender: this,
+      data: {
+        stackName: App.get('currentStackName'),
+        stackVersion: App.get('currentStackVersionNumber')
+      },
+      success: 'loadCompatibleVersionsSuccessCallback'
+    });
+  },
+
+  /**
+   *
+   * @param {object} data
+   */
+  loadCompatibleVersionsSuccessCallback: function(data) {
+    App.RepositoryVersion.find().forEach(function(repo) {
+      var version = repo.get('repositoryVersion');
+      repo.set('isCompatible', data.items.someProperty('CompatibleRepositoryVersions.repository_version', version));
+    });
+  },
+
   /**
    * update data of Upgrade
    * @param {object} newData

http://git-wip-us.apache.org/repos/asf/ambari/blob/1ca575d6/ambari-web/app/mappers/repository_version_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/repository_version_mapper.js b/ambari-web/app/mappers/repository_version_mapper.js
index 19ff672..48e460b 100644
--- a/ambari-web/app/mappers/repository_version_mapper.js
+++ b/ambari-web/app/mappers/repository_version_mapper.js
@@ -24,7 +24,7 @@ App.repoVersionMapper = App.QuickDataMapper.create({
   modelServices: App.ServiceSimple,
 
   modelRepoVersion: function (isCurrentStackOnly) {
-    var repoVersionsKey = isCurrentStackOnly ? 'RepositoryVersions' : 'CompatibleRepositoryVersions';
+    var repoVersionsKey = 'RepositoryVersions';
     return {
       id: repoVersionsKey + '.id',
       stack_version_id: repoVersionsKey + '.stackVersionId',
@@ -92,7 +92,11 @@ App.repoVersionMapper = App.QuickDataMapper.create({
     var resultOS = [];
     var resultRepo = [];
     var resultService = [];
-    var repoVersionsKey = isCurrentStackOnly ? 'RepositoryVersions' : 'CompatibleRepositoryVersions';
+    var repoVersionsKey = 'RepositoryVersions';
+
+    if (!isCurrentStackOnly) {
+      json = this.convertToRepoScheme(json);
+    }
 
     if (json && json.items) {
       json.items.forEach(function (item) {
@@ -153,5 +157,25 @@ App.repoVersionMapper = App.QuickDataMapper.create({
     App.store.loadMany(modelOperatingSystems, resultOS);
     App.store.loadMany(modelServices, resultService);
     App.store.loadMany(modelRepoVersions, resultRepoVersion);
+  },
+
+  /**
+   *
+   * @param {?object} json
+   * @returns {{items: Array}}
+   */
+  convertToRepoScheme: function(json) {
+    var extractedJson = {items: []};
+
+    if (json && json.items) {
+      json.items.forEach(function(stack) {
+        stack.versions.forEach(function(version) {
+          version.repository_versions.forEach(function(repoVersion) {
+            extractedJson.items.push(repoVersion);
+          }, this);
+        }, this);
+      }, this);
+    }
+    return extractedJson;
   }
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/1ca575d6/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 751f64f..aa7fb81 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -1638,6 +1638,7 @@ Em.I18n.translations = {
 
   'admin.stackVersions.version.column.showDetails': "Show Details",
   'admin.stackVersions.version.column.showDetails.title': "Version Details",
+  'admin.stackVersions.version.noCompatible.tooltip': 'Directly upgrading to this version is not supported.',
 
   'admin.stackVersions.hosts.popup.header.current': "Current",
   'admin.stackVersions.hosts.popup.header.installed': "Installed",

http://git-wip-us.apache.org/repos/asf/ambari/blob/1ca575d6/ambari-web/app/models/stack_version/repository_version.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/stack_version/repository_version.js b/ambari-web/app/models/stack_version/repository_version.js
index 759470d..d5bc64d 100644
--- a/ambari-web/app/models/stack_version/repository_version.js
+++ b/ambari-web/app/models/stack_version/repository_version.js
@@ -41,6 +41,12 @@ App.RepositoryVersion = DS.Model.extend({
   defaultStatus: 'INIT',
 
   /**
+   * @type {boolean}
+   * @default false
+   */
+  isCompatible: false,
+
+  /**
    * @type {string}
    */
   status: Em.computed.firstNotBlank('stackVersion.state', 'defaultStatus'),

http://git-wip-us.apache.org/repos/asf/ambari/blob/1ca575d6/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 dcc6944..72bce5c 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
@@ -35,7 +35,7 @@
 </p>
 
 
-<div {{bindAttr class="view.stateElement.isInstalling:installing :align-center :state"}}>
+<div {{bindAttr class="view.stateElement.isInstalling:installing :align-center :state :repo-version-tooltip"}}>
   {{#if view.stateElement.isButton}}
     <button class="btn btn-primary"
       {{action runAction target="view"}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/1ca575d6/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 0878733..52a42fc 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
@@ -27,7 +27,7 @@
 <p class="version-column-show-details">
   <a {{action openVersionBoxPopup target="view"}}>{{t admin.stackVersions.version.column.showDetails}}</a>
 </p>
-<div {{bindAttr class="view.stateElement.isInstalling:installing :align-center :state"}}>
+<div {{bindAttr class="view.stateElement.isInstalling:installing :align-center :state :repo-version-tooltip"}}>
   {{#if view.stateElement.isButton}}
     <button class="btn btn-primary"
       {{action runAction target="view"}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/1ca575d6/ambari-web/app/utils/ajax/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax/ajax.js b/ambari-web/app/utils/ajax/ajax.js
index 38a75e4..8aad1fe 100644
--- a/ambari-web/app/utils/ajax/ajax.js
+++ b/ambari-web/app/utils/ajax/ajax.js
@@ -1841,6 +1841,11 @@ var urls = {
     'mock': '/data/stack_versions/supported_upgrade_types.json'
   },
 
+  'admin.upgrade.get_compatible_versions': {
+    'real': '/stacks/{stackName}/versions/{stackVersion}/compatible_repository_versions?fields=CompatibleRepositoryVersions/repository_version&minimal_response=true',
+    'mock': '/data/stack_versions/supported_upgrade_types.json'
+  },
+
   'admin.kerberos_security.checks': {
     //TODO when api will be known
     'real': '',

http://git-wip-us.apache.org/repos/asf/ambari/blob/1ca575d6/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 1e549cd..bf15f33 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
@@ -242,6 +242,7 @@ App.UpgradeVersionBoxView = Em.View.extend({
    */
   isDisabledOnInit: function() {
     return  this.get('controller.requestInProgress') ||
+            !this.get('content.isCompatible') ||
             (App.get('upgradeIsRunning') && !App.get('upgradeSuspended')) ||
             this.get('parentView.repoVersions').someProperty('status', 'INSTALLING');
   },
@@ -263,6 +264,11 @@ App.UpgradeVersionBoxView = Em.View.extend({
     App.tooltip($('.link-tooltip'), {title: Em.I18n.t('admin.stackVersions.version.linkTooltip')});
     App.tooltip($('.hosts-tooltip'));
     App.tooltip($('.out-of-sync-badge'), {title: Em.I18n.t('hosts.host.stackVersions.status.out_of_sync')});
+    if (!this.get('content.isCompatible')) {
+      App.tooltip(this.$(".repo-version-tooltip"), {
+        title: Em.I18n.t('admin.stackVersions.version.noCompatible.tooltip')
+      });
+    }
     Em.run.later(this, function () {
       if (this.get('state') !== 'inDOM') {
         return;

http://git-wip-us.apache.org/repos/asf/ambari/blob/1ca575d6/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 6290a5e..f6f86db 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
@@ -26,7 +26,11 @@ App.UpgradeVersionColumnView = App.UpgradeVersionBoxView.extend({
 
   didInsertElement: function () {
     App.tooltip($('.out-of-sync-badge'), {title: Em.I18n.t('hosts.host.stackVersions.status.out_of_sync')});
-
+    if (!this.get('content.isCompatible')) {
+      App.tooltip(this.$(".repo-version-tooltip"), {
+        title: Em.I18n.t('admin.stackVersions.version.noCompatible.tooltip')
+      });
+    }
     //set the width, height of each version colum dynamically
     var widthFactor = App.RepositoryVersion.find().get('length') > 3 ? 0.18: 0.31;
     $('.version-column').width($('.versions-slides').width() * widthFactor);

http://git-wip-us.apache.org/repos/asf/ambari/blob/1ca575d6/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 feaeafc..12d0da3 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
@@ -37,15 +37,16 @@ describe('App.MainAdminStackAndUpgradeController', function() {
   describe("#realRepoUrl", function() {
     before(function () {
       this.mock = sinon.stub(App, 'get');
-      this.mock.withArgs('apiPrefix').returns('apiPrefix')
-        .withArgs('stackVersionURL').returns('stackVersionURL');
+      this.mock.withArgs('apiPrefix').returns('apiPrefix');
     });
     after(function () {
       this.mock.restore();
     });
     it("should be valid", function() {
+      var expected = 'apiPrefix/stacks?fields=versions/repository_versions/RepositoryVersions,' +
+        'versions/repository_versions/operating_systems/*,versions/repository_versions/operating_systems/repositories/*';
       controller.propertyDidChange('realRepoUrl');
-      expect(controller.get('realRepoUrl')).to.equal('apiPrefixstackVersionURL/compatible_repository_versions?fields=*,operating_systems/*,operating_systems/repositories/*');
+      expect(controller.get('realRepoUrl')).to.equal(expected);
     });
   });
 
@@ -121,6 +122,9 @@ describe('App.MainAdminStackAndUpgradeController', function() {
       sinon.stub(controller, 'loadRepoVersionsToModel').returns({
         done: Em.clb
       });
+      sinon.stub(controller, 'loadCompatibleVersions').returns({
+        done: Em.clb
+      });
       sinon.stub(App.StackVersion, 'find').returns([Em.Object.create({
         state: 'CURRENT',
         repositoryVersion: {
@@ -134,6 +138,7 @@ describe('App.MainAdminStackAndUpgradeController', function() {
       controller.loadUpgradeData.restore();
       controller.loadStackVersionsToModel.restore();
       controller.loadRepoVersionsToModel.restore();
+      controller.loadCompatibleVersions.restore();
       App.StackVersion.find.restore();
     });
     it("loadUpgradeData called with valid arguments", function() {
@@ -145,6 +150,9 @@ describe('App.MainAdminStackAndUpgradeController', function() {
     it('loadRepoVersionsToModel called once', function () {
       expect(controller.loadRepoVersionsToModel.calledOnce).to.be.true;
     });
+    it('loadCompatibleVersions called once', function () {
+      expect(controller.loadCompatibleVersions.calledOnce).to.be.true;
+    });
     it('currentVersion is corrent', function () {
       expect(controller.get('currentVersion')).to.eql({
         "repository_version": "2.2",
@@ -3120,4 +3128,64 @@ describe('App.MainAdminStackAndUpgradeController', function() {
     });
   });
 
+  describe("#loadCompatibleVersions()", function () {
+
+    beforeEach(function() {
+      sinon.stub(App, 'get').returns('stack');
+    });
+
+    afterEach(function() {
+      App.get.restore();
+    });
+
+    it("App.ajax.send should be called", function() {
+      controller.loadCompatibleVersions();
+      var args = testHelpers.findAjaxRequest('name', 'admin.upgrade.get_compatible_versions');
+      expect(args[0]).to.be.eql({
+        name: 'admin.upgrade.get_compatible_versions',
+        sender: controller,
+        data: {
+          stackName: 'stack',
+          stackVersion: 'stack'
+        },
+        success: 'loadCompatibleVersionsSuccessCallback'
+      });
+    });
+  });
+
+  describe("#loadCompatibleVersionsSuccessCallback()", function () {
+    var mock = [
+      Em.Object.create({
+        repositoryVersion: 'HDP-1',
+        isCompatible: false
+      }),
+      Em.Object.create({
+        repositoryVersion: 'HDP-2',
+        isCompatible: false
+      })
+    ];
+
+    beforeEach(function() {
+      sinon.stub(App.RepositoryVersion, 'find').returns(mock);
+    });
+
+    afterEach(function() {
+      App.RepositoryVersion.find.restore();
+    });
+
+    it("should set isCompatible property", function() {
+      var data = {
+        items: [
+          {
+            CompatibleRepositoryVersions: {
+              repository_version: 'HDP-2'
+            }
+          }
+        ]
+      };
+      controller.loadCompatibleVersionsSuccessCallback(data);
+      expect(mock.mapProperty('isCompatible')).to.be.eql([false, true])
+    });
+  });
+
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/1ca575d6/ambari-web/test/mappers/repository_version_mapper_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/mappers/repository_version_mapper_test.js b/ambari-web/test/mappers/repository_version_mapper_test.js
new file mode 100644
index 0000000..63fbb43
--- /dev/null
+++ b/ambari-web/test/mappers/repository_version_mapper_test.js
@@ -0,0 +1,46 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var App = require('app');
+
+require('utils/helper');
+require('mappers/repository_version_mapper');
+
+describe('App.repoVersionMapper', function () {
+
+  describe("#convertToRepoScheme()", function () {
+
+    it("json is null", function() {
+      expect(App.repoVersionMapper.convertToRepoScheme(null)).to.be.eql({items: []});
+    });
+
+    it("json is correct", function() {
+      var json = {
+        items: [{
+          versions: [{
+            repository_versions: [{
+              id: 1
+            }]
+          }]
+        }]
+      };
+      expect(App.repoVersionMapper.convertToRepoScheme(json)).to.be.eql({items: [{id: 1}]});
+    });
+  });
+
+});

http://git-wip-us.apache.org/repos/asf/ambari/blob/1ca575d6/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 d4114ed..4506d3a 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
@@ -141,7 +141,7 @@ describe('App.UpgradeVersionBoxView', function () {
     });
     it("init tooltips", function () {
       view.didInsertElement();
-      expect(App.tooltip.callCount).to.equal(3);
+      expect(App.tooltip.callCount).to.equal(4);
     });
   });
 
@@ -959,6 +959,7 @@ describe('App.UpgradeVersionBoxView', function () {
         upgradeIsRunning: true,
         upgradeSuspended: true,
         status: 'INSTALLED',
+        isCompatible: true,
         expected: true
       },
       {
@@ -966,6 +967,7 @@ describe('App.UpgradeVersionBoxView', function () {
         upgradeIsRunning: true,
         upgradeSuspended: false,
         status: 'INSTALLED',
+        isCompatible: true,
         expected: true
       },
       {
@@ -973,6 +975,7 @@ describe('App.UpgradeVersionBoxView', function () {
         upgradeIsRunning: false,
         upgradeSuspended: false,
         status: 'INSTALLING',
+        isCompatible: true,
         expected: true
       },
       {
@@ -980,6 +983,15 @@ describe('App.UpgradeVersionBoxView', function () {
         upgradeIsRunning: true,
         upgradeSuspended: true,
         status: 'INSTALLED',
+        isCompatible: false,
+        expected: true
+      },
+      {
+        requestInProgress: false,
+        upgradeIsRunning: true,
+        upgradeSuspended: true,
+        status: 'INSTALLED',
+        isCompatible: true,
         expected: false
       },
       {
@@ -987,6 +999,7 @@ describe('App.UpgradeVersionBoxView', function () {
         upgradeIsRunning: false,
         upgradeSuspended: false,
         status: 'INSTALLED',
+        isCompatible: true,
         expected: false
       }
     ];
@@ -1001,15 +1014,17 @@ describe('App.UpgradeVersionBoxView', function () {
 
     testCases.forEach(function(test) {
       it("requestInProgress: " + test.requestInProgress +
-         "upgradeIsRunning: " + test.upgradeIsRunning +
-         "upgradeSuspended: " + test.upgradeSuspended +
-         "status" + test.status, function() {
+         " upgradeIsRunning: " + test.upgradeIsRunning +
+         " upgradeSuspended: " + test.upgradeSuspended +
+         " status" + test.status +
+         " isCompatible" + test.isCompatible, 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('controller.requestInProgress', test.requestInProgress);
+        view.set('content.isCompatible', test.isCompatible);
         expect(view.isDisabledOnInit()).to.be.equal(test.expected);
       });
     });