Kaynağa Gözat

AMBARI-9527 RU: FE must issue an ABORTED to an upgrade before starting a downgrade. (atkach)

Andrii Tkach 10 yıl önce
ebeveyn
işleme
bb28c88d94

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

@@ -282,7 +282,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
    * @param {object} event
    * @param {object} event
    */
    */
   downgrade: function (currentVersion, event) {
   downgrade: function (currentVersion, event) {
-    this.setUpgradeItemStatus(event.context, 'FAILED');
+    this.abortUpgrade();
     App.ajax.send({
     App.ajax.send({
       name: 'admin.downgrade.start',
       name: 'admin.downgrade.start',
       sender: this,
       sender: this,
@@ -295,6 +295,19 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
     });
     });
   },
   },
 
 
+  /**
+   * abort upgrade (in order to start Downgrade)
+   */
+  abortUpgrade: function () {
+    return App.ajax.send({
+      name: 'admin.upgrade.abort',
+      sender: this,
+      data: {
+        upgradeId: this.get('upgradeId')
+      }
+    });
+  },
+
   /**
   /**
    * make call to start upgrade process and show popup with current progress
    * make call to start upgrade process and show popup with current progress
    * @param {object} version
    * @param {object} version

+ 14 - 0
ambari-web/app/utils/ajax/ajax.js

@@ -1383,6 +1383,20 @@ var urls = {
       }
       }
     }
     }
   },
   },
+  'admin.upgrade.abort': {
+    'real': '/clusters/{clusterName}/upgrades/{upgradeId}',
+    'mock': '',
+    'type': 'PUT',
+    'format': function (data) {
+      return {
+        data: JSON.stringify({
+          "Upgrade": {
+            "request_status": "ABORTED"
+          }
+        })
+      }
+    }
+  },
   'admin.upgrade.upgradeItem.setState': {
   'admin.upgrade.upgradeItem.setState': {
     'real': '/clusters/{clusterName}/upgrades/{upgradeId}/upgrade_groups/{groupId}/upgrade_items/{itemId}',
     'real': '/clusters/{clusterName}/upgrades/{upgradeId}/upgrade_groups/{groupId}/upgrade_items/{itemId}',
     'mock': '',
     'mock': '',

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

@@ -524,18 +524,18 @@ describe('App.MainAdminStackAndUpgradeController', function() {
   describe("#downgrade()", function() {
   describe("#downgrade()", function() {
     before(function () {
     before(function () {
       sinon.stub(App.ajax, 'send', Em.K);
       sinon.stub(App.ajax, 'send', Em.K);
-      sinon.stub(controller, 'setUpgradeItemStatus');
+      sinon.stub(controller, 'abortUpgrade');
     });
     });
     after(function () {
     after(function () {
       App.ajax.send.restore();
       App.ajax.send.restore();
-      controller.setUpgradeItemStatus.restore();
+      controller.abortUpgrade.restore();
     });
     });
     it("make ajax call", function() {
     it("make ajax call", function() {
       controller.downgrade(Em.Object.create({
       controller.downgrade(Em.Object.create({
         repository_version: '2.2',
         repository_version: '2.2',
         repository_name: 'HDP-2.2'
         repository_name: 'HDP-2.2'
       }), {context: 'context'});
       }), {context: 'context'});
-      expect(controller.setUpgradeItemStatus.calledWith('context', 'FAILED')).to.be.true;
+      expect(controller.abortUpgrade.calledOnce).to.be.true;
       expect(App.ajax.send.getCall(0).args[0]).to.eql({
       expect(App.ajax.send.getCall(0).args[0]).to.eql({
         name: 'admin.downgrade.start',
         name: 'admin.downgrade.start',
         sender: controller,
         sender: controller,