Browse Source

AMBARI-9210 Rolling Upgrade dialog should not have 'Cancel Upgrade' button. (atkach)

Andrii Tkach 10 years ago
parent
commit
d9836e314b

+ 27 - 4
ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js

@@ -254,13 +254,14 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
 
   /**
    * downgrade confirmation popup
+   * @param {object} event
    */
-  confirmDowngrade: function () {
+  confirmDowngrade: function (event) {
     var self = this;
     var currentVersion = this.get('currentVersion');
     return App.showConfirmationPopup(
       function() {
-        self.downgrade.call(self, currentVersion);
+        self.downgrade.call(self, currentVersion, event);
       },
       Em.I18n.t('admin.stackUpgrade.downgrade.body').format(currentVersion.repository_name),
       null,
@@ -271,9 +272,11 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
 
   /**
    * make call to start downgrade process
-   * @params {object} currentVersion
+   * @param {object} currentVersion
+   * @param {object} event
    */
-  downgrade: function (currentVersion) {
+  downgrade: function (currentVersion, event) {
+    this.setUpgradeItemStatus(event.context, 'FAILED');
     App.ajax.send({
       name: 'admin.downgrade.start',
       sender: this,
@@ -497,5 +500,25 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
       }
     });
     return dfd.promise();
+  },
+
+  /**
+   * set status to Upgrade item
+   * @param item
+   * @param status
+   */
+  setUpgradeItemStatus: function(item, status) {
+    return App.ajax.send({
+      name: 'admin.upgrade.upgradeItem.setState',
+      sender: this,
+      data: {
+        upgradeId: item.get('request_id'),
+        itemId: item.get('stage_id'),
+        groupId: item.get('group_id'),
+        status: status
+      }
+    }).done(function () {
+      item.set('status', status);
+    });
   }
 });

+ 1 - 3
ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs

@@ -65,12 +65,10 @@
             {{#if view.isHoldingState}}
               <div class="button-row">
                 {{#if view.isDowngradeAvailable}}
-                  <button class="btn btn-danger" {{action confirmDowngrade target="controller"}}>{{t common.downgrade}}</button>
+                  <button class="btn btn-danger" {{action confirmDowngrade view.failedItem target="controller"}}>{{t common.downgrade}}</button>
                 {{/if}}
                 {{#if view.failedItem.skippable}}
                   <button class="btn btn-warning" {{action continue view.failedItem target="view"}}>{{t admin.stackUpgrade.dialog.continue}}</button>
-                {{else}}
-                  <button class="btn btn-danger" {{action cancel view.failedItem target="view"}}>{{t admin.stackUpgrade.dialog.cancel}}</button>
                 {{/if}}
                 <button class="btn" {{action retry view.failedItem target="view"}}>{{t common.retry}}</button>
               </div>

+ 3 - 31
ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js

@@ -235,33 +235,13 @@ App.upgradeWizardView = Em.View.extend({
     }, App.bgOperationsUpdateInterval));
   },
 
-  /**
-   * set status to Upgrade item
-   * @param item
-   * @param status
-   */
-  setUpgradeItemStatus: function(item, status) {
-    return App.ajax.send({
-      name: 'admin.upgrade.upgradeItem.setState',
-      sender: this,
-      data: {
-        upgradeId: item.get('request_id'),
-        itemId: item.get('stage_id'),
-        groupId: item.get('group_id'),
-        status: status
-      }
-    }).done(function () {
-        item.set('status', status);
-      });
-  },
-
   /**
    * set current upgrade item state to FAILED (for HOLDING_FAILED) or TIMED_OUT (for HOLDING_TIMED_OUT)
    * in order to ignore fail and continue Upgrade
    * @param {object} event
    */
   continue: function (event) {
-    this.setUpgradeItemStatus(event.context, event.context.get('status').slice(8));
+    this.get('controller').setUpgradeItemStatus(event.context, event.context.get('status').slice(8));
   },
 
   /**
@@ -269,7 +249,7 @@ App.upgradeWizardView = Em.View.extend({
    * @param {object} event
    */
   retry: function (event) {
-    this.setUpgradeItemStatus(event.context, 'PENDING');
+    this.get('controller').setUpgradeItemStatus(event.context, 'PENDING');
   },
 
   /**
@@ -277,14 +257,6 @@ App.upgradeWizardView = Em.View.extend({
    * @param {object} event
    */
   complete: function (event) {
-    this.setUpgradeItemStatus(event.context, 'COMPLETED');
-  },
-
-  /**
-   * set current upgrade item state to FAILED in order to cancel upgrade
-   * @param {object} event
-   */
-  cancel: function (event) {
-    this.setUpgradeItemStatus(event.context, 'FAILED');
+    this.get('controller').setUpgradeItemStatus(event.context, 'COMPLETED');
   }
 });

+ 38 - 1
ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js

@@ -418,15 +418,18 @@ describe('App.MainAdminStackAndUpgradeController', function() {
   describe("#downgrade()", function() {
     before(function () {
       sinon.stub(App.ajax, 'send', Em.K);
+      sinon.stub(controller, 'setUpgradeItemStatus');
     });
     after(function () {
       App.ajax.send.restore();
+      controller.setUpgradeItemStatus.restore();
     });
     it("make ajax call", function() {
       controller.downgrade(Em.Object.create({
         repository_version: '2.2',
         repository_name: 'HDP-2.2'
-      }));
+      }), {context: 'context'});
+      expect(controller.setUpgradeItemStatus.calledWith('context', 'FAILED')).to.be.true;
       expect(App.ajax.send.getCall(0).args[0]).to.eql({
         name: 'admin.downgrade.start',
         sender: controller,
@@ -472,4 +475,38 @@ describe('App.MainAdminStackAndUpgradeController', function() {
       expect(App.ajax.send.calledOnce).to.be.true;
     });
   });
+
+  describe("#setUpgradeItemStatus()", function () {
+    before(function () {
+      sinon.stub(App.ajax, 'send', function () {
+        return {
+          done: function (callback) {
+            callback();
+          }
+        }
+      });
+    });
+    after(function () {
+      App.ajax.send.restore();
+    });
+    it("", function () {
+      var item = Em.Object.create({
+        request_id: 1,
+        stage_id: 1,
+        group_id: 1
+      });
+      controller.setUpgradeItemStatus(item, 'PENDING');
+      expect(App.ajax.send.getCall(0).args[0]).to.eql({
+        name: 'admin.upgrade.upgradeItem.setState',
+        sender: controller,
+        data: {
+          upgradeId: 1,
+          itemId: 1,
+          groupId: 1,
+          status: 'PENDING'
+        }
+      });
+      expect(item.get('status')).to.equal('PENDING');
+    });
+  });
 });

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

@@ -26,7 +26,8 @@ describe('App.upgradeWizardView', function () {
   });
   view.reopen({
     controller: Em.Object.create({
-      loadUpgradeData: Em.K
+      loadUpgradeData: Em.K,
+      setUpgradeItemStatus: Em.K
     }),
     activeGroup: Em.Object.create()
   });
@@ -124,87 +125,40 @@ describe('App.upgradeWizardView', function () {
 
   describe("#continue()", function () {
     before(function () {
-      sinon.stub(view, 'setUpgradeItemStatus', Em.K);
+      sinon.stub(view.get('controller'), 'setUpgradeItemStatus', Em.K);
     });
     after(function () {
-      view.setUpgradeItemStatus.restore();
+      view.get('controller').setUpgradeItemStatus.restore();
     });
     it("", function () {
       view.continue({context: Em.Object.create({'status': 'HOLDING_FAILED'})});
-      expect(view.setUpgradeItemStatus.calledWith(Em.Object.create({'status': 'HOLDING_FAILED'}), 'FAILED')).to.be.true;
+      expect(view.get('controller').setUpgradeItemStatus.calledWith(Em.Object.create({'status': 'HOLDING_FAILED'}), 'FAILED')).to.be.true;
     });
   });
 
   describe("#complete()", function () {
     before(function () {
-      sinon.stub(view, 'setUpgradeItemStatus', Em.K);
+      sinon.stub(view.get('controller'), 'setUpgradeItemStatus', Em.K);
     });
     after(function () {
-      view.setUpgradeItemStatus.restore();
+      view.get('controller').setUpgradeItemStatus.restore();
     });
     it("", function () {
       view.complete({context: Em.Object.create({'status': 'FAILED'})});
-      expect(view.setUpgradeItemStatus.calledWith(Em.Object.create({'status': 'FAILED'}), 'COMPLETED')).to.be.true;
+      expect(view.get('controller').setUpgradeItemStatus.calledWith(Em.Object.create({'status': 'FAILED'}), 'COMPLETED')).to.be.true;
     });
   });
 
   describe("#retry()", function () {
     before(function () {
-      sinon.stub(view, 'setUpgradeItemStatus', Em.K);
+      sinon.stub(view.get('controller'), 'setUpgradeItemStatus', Em.K);
     });
     after(function () {
-      view.setUpgradeItemStatus.restore();
+      view.get('controller').setUpgradeItemStatus.restore();
     });
     it("", function () {
       view.retry({context: Em.Object.create({'status': 'FAILED'})});
-      expect(view.setUpgradeItemStatus.calledWith(Em.Object.create({'status': 'FAILED'}), 'PENDING')).to.be.true;
-    });
-  });
-
-  describe("#cancel()", function () {
-    before(function () {
-      sinon.stub(view, 'setUpgradeItemStatus', Em.K);
-    });
-    after(function () {
-      view.setUpgradeItemStatus.restore();
-    });
-    it("cabcel request", function () {
-      view.cancel({context: Em.Object.create({'status': 'HOLDING_FAILED'})});
-      expect(view.setUpgradeItemStatus.calledWith(Em.Object.create({'status': 'HOLDING_FAILED'}), 'FAILED')).to.be.true;
-    });
-  });
-
-  describe("#setUpgradeItemStatus()", function () {
-    before(function () {
-      sinon.stub(App.ajax, 'send', function () {
-        return {
-          done: function (callback) {
-            callback();
-          }
-        }
-      });
-    });
-    after(function () {
-      App.ajax.send.restore();
-    });
-    it("", function () {
-      var item = Em.Object.create({
-        request_id: 1,
-        stage_id: 1,
-        group_id: 1
-      })
-      view.setUpgradeItemStatus(item, 'PENDING');
-      expect(App.ajax.send.getCall(0).args[0]).to.eql({
-        name: 'admin.upgrade.upgradeItem.setState',
-        sender: view,
-        data: {
-          upgradeId: 1,
-          itemId: 1,
-          groupId: 1,
-          status: 'PENDING'
-        }
-      });
-      expect(item.get('status')).to.equal('PENDING');
+      expect(view.get('controller').setUpgradeItemStatus.calledWith(Em.Object.create({'status': 'FAILED'}), 'PENDING')).to.be.true;
     });
   });