Procházet zdrojové kódy

AMBARI-10173. RU: Wizard does not show up in UI when triggered by API. (akovalenko)

Aleksandr Kovalenko před 10 roky
rodič
revize
bcc6c36dc9

+ 15 - 0
ambari-web/app/assets/data/stack_versions/upgrades.json

@@ -0,0 +1,15 @@
+{
+  "href": "http://c6401.ambari.apache.org:8080/api/v1/clusters/c/upgrades?fields=Upgrade/request_status,Upgrade/to_version,Upgrade/request_id,Upgrade/direction",
+  "items": [
+    {
+      "href": "http://c6401.ambari.apache.org:8080/api/v1/clusters/c/upgrades/19",
+      "Upgrade": {
+        "cluster_name": "c",
+        "direction": "UPGRADE",
+        "request_id": 19,
+        "request_status": "COMPLETED",
+        "to_version": "2.2.3.0-2610"
+      }
+    }
+  ]
+}

+ 3 - 0
ambari-web/app/controllers/global/background_operations_controller.js

@@ -210,6 +210,9 @@ App.BackgroundOperationsController = Em.Controller.extend({
    
    
     data.items.forEach(function (request) {
     data.items.forEach(function (request) {
       if (this.isUpgradeRequest(request)) {
       if (this.isUpgradeRequest(request)) {
+        if (!App.get('upgradeIsRunning')) {
+          App.router.get('clusterController').restoreUpgradeState();
+        }
         return;
         return;
       }
       }
       var rq = this.get("services").findProperty('id', request.Requests.id);
       var rq = this.get("services").findProperty('id', request.Requests.id);

+ 32 - 9
ambari-web/app/controllers/global/cluster_controller.js

@@ -315,18 +315,30 @@ App.ClusterController = Em.Controller.extend({
   },
   },
 
 
   /**
   /**
-   * restore upgrade status from local storage
+   * restore upgrade status from server
    * and make call to get latest status from server
    * and make call to get latest status from server
    */
    */
   restoreUpgradeState: function () {
   restoreUpgradeState: function () {
-    var dbUpgradeState = App.db.get('MainAdminStackAndUpgrade', 'upgradeState');
-    if (!Em.isNone(dbUpgradeState)) {
-      App.set('upgradeState', dbUpgradeState);
-    }
-    App.router.get('mainAdminStackAndUpgradeController').initDBProperties();
-    App.router.get('mainAdminStackAndUpgradeController').loadUpgradeData(true);
-    App.router.get('mainAdminStackAndUpgradeController').loadStackVersionsToModel(true).done(function () {
-      App.set('stackVersionsAvailable', App.StackVersion.find().content.length > 0);
+    this.getAllUpgrades().done(function (data) {
+      var upgradeController = App.router.get('mainAdminStackAndUpgradeController');
+      var lastUpgradeData = data.items.sortProperty('Upgrade.request_id').pop();
+
+      if (lastUpgradeData) {
+        upgradeController.setDBProperty('upgradeId', lastUpgradeData.Upgrade.request_id);
+        upgradeController.setDBProperty('isDowngrade', lastUpgradeData.Upgrade.direction === 'DOWNGRADE');
+        upgradeController.setDBProperty('upgradeState', lastUpgradeData.Upgrade.request_status);
+        upgradeController.setDBProperty('upgradeVersion', lastUpgradeData.Upgrade.to_version);
+      }
+
+      var dbUpgradeState = App.db.get('MainAdminStackAndUpgrade', 'upgradeState');
+      if (!Em.isNone(dbUpgradeState)) {
+        App.set('upgradeState', dbUpgradeState);
+      }
+      upgradeController.initDBProperties();
+      upgradeController.loadUpgradeData(true);
+      upgradeController.loadStackVersionsToModel(true).done(function () {
+        App.set('stackVersionsAvailable', App.StackVersion.find().content.length > 0);
+      });
     });
     });
   },
   },
 
 
@@ -478,5 +490,16 @@ App.ClusterController = Em.Controller.extend({
   },
   },
   checkDetailedRepoVersionErrorCallback: function () {
   checkDetailedRepoVersionErrorCallback: function () {
     App.set('isStormMetricsSupported', true);
     App.set('isStormMetricsSupported', true);
+  },
+
+  /**
+   * Load required data for all upgrades from API
+   * @returns {$.ajax}
+   */
+  getAllUpgrades: function () {
+    return App.ajax.send({
+      name: 'cluster.load_last_upgrade',
+      sender: this
+    });
   }
   }
 });
 });

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

@@ -1187,6 +1187,10 @@ var urls = {
     'real': '/clusters',
     'real': '/clusters',
     'mock': '/data/clusters/info.json'
     'mock': '/data/clusters/info.json'
   },
   },
+  'cluster.load_last_upgrade': {
+    'real': '/clusters/{clusterName}/upgrades?fields=Upgrade/request_status,Upgrade/request_id,Upgrade/to_version,Upgrade/direction',
+    'mock': '/data/stack_versions/upgrades.json'
+  },
   'cluster.update_upgrade_version': {
   'cluster.update_upgrade_version': {
     'real': '/stacks/{stackName}/versions?fields=services/StackServices,Versions',
     'real': '/stacks/{stackName}/versions?fields=services/StackServices,Versions',
     'mock': '/data/wizard/stack/stacks.json',
     'mock': '/data/wizard/stack/stacks.json',

+ 17 - 0
ambari-web/test/controllers/global/cluster_controller_test.js

@@ -505,4 +505,21 @@ describe('App.clusterController', function () {
     });
     });
   });
   });
 
 
+  describe('#getAllUpgrades()', function () {
+
+    beforeEach(function () {
+      sinon.stub(App.ajax, 'send', Em.K);
+    });
+
+    afterEach(function () {
+      App.ajax.send.restore();
+    });
+
+    it('should send request to get upgrades data', function () {
+      controller.getAllUpgrades();
+      expect(App.ajax.send.calledOnce).to.be.true;
+    });
+
+  });
+
 });
 });