Explorar o código

AMBARI-19085 Host Ordered upgrade should not show as an Upgrade option in UI. (atkach)

Andrii Tkach %!s(int64=8) %!d(string=hai) anos
pai
achega
c67a969146

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

@@ -51,6 +51,16 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
    */
   upgradeType: null,
 
+  /**
+   * @type {Em.Object}
+   */
+  upgradeTypeConfig: Em.computed.findByKey('upgradeMethods', 'type', 'upgradeType'),
+
+  /**
+   * @type {boolean}
+   */
+  cantBeStarted: Em.computed.alias('upgradeTypeConfig.cantBeStarted'),
+
   /**
    * @type {boolean}
    * @default true
@@ -160,7 +170,8 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
       precheckResultsMessage: '',
       precheckResultsTitle: '',
       action: '',
-      isWizardRestricted: !App.supports.enabledWizardForHostOrderedUpgrade
+      isWizardRestricted: !App.supports.enabledWizardForHostOrderedUpgrade,
+      cantBeStarted: true
     })
   ],
 

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

@@ -20,36 +20,39 @@
   <div class="text version-text">{{{view.versionText}}}</div>
   <div class="text method-text">{{t admin.stackVersions.version.upgrade.upgradeOptions.bodyMsg.method}}</div>
   <div {{bindAttr class=":row-fluid :method-options view.isInUpgradeWizard:disabled"}}>
-    {{#each method in view.upgradeMethods}}
-      <div class="method-option span5">
-        <div {{bindAttr class="method.allowed::not-allowed method.allowed::not-allowed-by-version
-          method.isPrecheckFailed:not-allowed method.isPrecheckFailed:check-failed
-          method.selected:selected method.type :thumbnail"}}
-          {{action selectMethod method target="view"}}>
-            <div {{bindAttr class="method.icon :method-icon"}}></div>
-            <div class="method-name">{{method.displayName}}</div>
-            <div class="method-description">{{{method.description}}}</div>
-            {{#if view.showPreUpgradeChecks}}
-              {{#if method.isCheckRequestInProgress}}
-                <div class="method-precheck-message checking">
-                  {{view App.SpinnerView message="admin.stackVersions.version.upgrade.upgradeOptions.preCheck.msg.checking"}}
-                </div>
-              {{else}}
-                <div {{bindAttr class=":method-precheck-message method.precheckResultsMessageClass"}}>
-                  <i {{bindAttr class="method.precheckResultsMessageIconClass"}}></i>
-                  <b>{{method.precheckResultsTitle}}</b>&nbsp;
-                  <a {{action runAction method target="view"}}>
-                    {{method.precheckResultsMessage}}
-                  </a>
-                  {{#if method.bypassedFailures}}
-                    <div class="alert-danger">{{t admin.stackVersions.version.upgrade.upgradeOptions.errors_bypassed}}</div>
+      {{#each method in view.upgradeMethods}}
+          {{#unless method.cantBeStarted}}
+            <div class="method-option span5">
+              <div {{bindAttr class="method.allowed::not-allowed method.allowed::not-allowed-by-version
+                    method.isPrecheckFailed:not-allowed method.isPrecheckFailed:check-failed
+                    method.selected:selected method.type :thumbnail"}}
+                  {{action selectMethod method target="view"}}>
+                <div {{bindAttr class="method.icon :method-icon"}}></div>
+                <div class="method-name">{{method.displayName}}</div>
+                <div class="method-description">{{{method.description}}}</div>
+                  {{#if view.showPreUpgradeChecks}}
+                      {{#if method.isCheckRequestInProgress}}
+                        <div class="method-precheck-message checking">
+                            {{view App.SpinnerView message="admin.stackVersions.version.upgrade.upgradeOptions.preCheck.msg.checking"}}
+                        </div>
+                      {{else}}
+                        <div {{bindAttr class=":method-precheck-message method.precheckResultsMessageClass"}}>
+                          <i {{bindAttr class="method.precheckResultsMessageIconClass"}}></i>
+                          <b>{{method.precheckResultsTitle}}</b>&nbsp;
+                          <a {{action runAction method target="view"}}>
+                              {{method.precheckResultsMessage}}
+                          </a>
+                            {{#if method.bypassedFailures}}
+                              <div
+                                class="alert-danger">{{t admin.stackVersions.version.upgrade.upgradeOptions.errors_bypassed}}</div>
+                            {{/if}}
+                        </div>
+                      {{/if}}
                   {{/if}}
-                </div>
-              {{/if}}
-            {{/if}}
-        </div>
-      </div>
-    {{/each}}
+              </div>
+            </div>
+          {{/unless}}
+      {{/each}}
   </div>
 
   <div class="text tolerance-text">{{t admin.stackVersions.version.upgrade.upgradeOptions.bodyMsg.tolerance}}

+ 5 - 1
ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js

@@ -68,7 +68,11 @@ App.upgradeWizardView = Em.View.extend({
    * when downgrade already started
    * @type {boolean}
    */
-  isDowngradeAvailable: Em.computed.and('!controller.isDowngrade', 'controller.downgradeAllowed'),
+  isDowngradeAvailable: Em.computed.and(
+    '!controller.isDowngrade',
+    'controller.downgradeAllowed',
+    '!controller.cantBeStarted'
+  ),
 
   /**
    * progress value is rounded to floor

+ 1 - 1
ambari-web/test/views/main/admin/stack_upgrade/upgrade_wizard_view_test.js

@@ -416,7 +416,7 @@ describe('App.upgradeWizardView', function () {
     });
   });
 
-  App.TestAliases.testAsComputedAnd(getView(), 'isDowngradeAvailable', ['!controller.isDowngrade', 'controller.downgradeAllowed']);
+  App.TestAliases.testAsComputedAnd(getView(), 'isDowngradeAvailable', ['!controller.isDowngrade', 'controller.downgradeAllowed', '!controller.cantBeStarted']);
 
   describe("#taskDetails", function () {
     it("runningItem present", function () {