소스 검색

AMBARI-17741 Upgrade is not available if preUpgradeCheck feature is disabled (akovalenko)

Aleksandr Kovalenko 9 년 전
부모
커밋
ca1433180f

+ 10 - 1
ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js

@@ -940,6 +940,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
           return self.get('upgradeMethods');
         }.property().volatile(),
         isInUpgradeWizard: isInUpgradeWizard,
+        showPreUpgradeChecks: App.get('supports.preUpgradeCheck') && !isInUpgradeWizard,
         versionText: isInUpgradeWizard ? '' : Em.I18n.t('admin.stackVersions.version.upgrade.upgradeOptions.bodyMsg.version').format(version.get('displayName')),
         selectMethod: function (event) {
           if (isInUpgradeWizard || !event.context.get('allowed') || event.context.get('isPrecheckFailed')) return;
@@ -1015,7 +1016,15 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
       disablePrimary: function () {
         if (isInUpgradeWizard) return false;
         var selectedMethod = this.get('selectedMethod');
-        return (selectedMethod ? (selectedMethod.get('isPrecheckFailed') || selectedMethod.get('isCheckRequestInProgress')) : true);
+        if (selectedMethod) {
+          if (App.get('supports.preUpgradeCheck')) {
+            return selectedMethod.get('isPrecheckFailed') || selectedMethod.get('isCheckRequestInProgress');
+          } else {
+            return false;
+          }
+        } else {
+          return true;
+        }
       }.property('selectedMethod', 'selectedMethod.isPrecheckFailed', 'selectedMethod.isCheckRequestInProgress'),
       onPrimary: function () {
         this.hide();

+ 2 - 2
ambari-web/app/templates/main/admin/stack_upgrade/upgrade_options.hbs

@@ -29,7 +29,7 @@
             <div {{bindAttr class="method.icon :method-icon"}}></div>
             <div class="method-name">{{method.displayName}}</div>
             <div class="method-description">{{{method.description}}}</div>
-            {{#unless view.isInUpgradeWizard}}
+            {{#if view.showPreUpgradeChecks}}
               {{#if method.isCheckRequestInProgress}}
                 <div class="method-precheck-message checking">
                   {{view App.SpinnerView message="admin.stackVersions.version.upgrade.upgradeOptions.preCheck.msg.checking"}}
@@ -46,7 +46,7 @@
                   {{/if}}
                 </div>
               {{/if}}
-            {{/unless}}
+            {{/if}}
         </div>
       </div>
     {{/each}}

+ 55 - 0
ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js

@@ -1012,6 +1012,61 @@ describe('App.MainAdminStackAndUpgradeController', function() {
 
       });
 
+      describe('#popup.disablePrimary', function () {
+
+        beforeEach(function() {
+          this.mock = sinon.stub(App, 'get');
+        });
+
+        afterEach(function() {
+          App.get.restore();
+        });
+
+        it('should be disabled if no method is selected', function () {
+          expect(this.popup.get('disablePrimary')).to.be.true;
+        });
+
+        it('should be disabled if preupgradecheck is supproted and isPrecheckFailed is true', function () {
+          this.mock.returns(true);
+          this.popup.set('selectedMethod', Em.Object.create({
+            selected: true,
+            isPrecheckFailed: true,
+            isCheckRequestInProgress: false
+          }));
+
+          expect(this.popup.get('disablePrimary')).to.be.true;
+        });
+
+        it('should be disabled if preupgradecheck is supproted and isCheckRequestInProgress is true', function () {
+          this.popup.set('selectedMethod', Em.Object.create({
+            selected: true,
+            isPrecheckFailed: false,
+            isCheckRequestInProgress: true
+          }));
+          this.mock.returns(true);
+          expect(this.popup.get('disablePrimary')).to.be.true;
+        });
+
+        it('should be enabled with preupgrade check', function () {
+          this.popup.set('selectedMethod', Em.Object.create({
+            selected: true,
+            isPrecheckFailed: false,
+            isCheckRequestInProgress: false
+          }));
+          this.mock.returns(true);
+          expect(this.popup.get('disablePrimary')).to.be.false;
+        });
+
+        it('should be enabled without preupgrade check', function () {
+          this.popup.set('selectedMethod', Em.Object.create({
+            selected: true
+          }));
+          this.mock.returns(false);
+          expect(this.popup.get('disablePrimary')).to.be.false;
+        });
+
+      });
+
     });
 
     describe("NOT show confirmation popup on Downgrade", function() {