You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by al...@apache.org on 2015/07/22 16:02:27 UTC

[1/3] ambari git commit: AMBARI-12495. Upgrade status beyond 'Versions' page not being updated (alexantonenko)

Repository: ambari
Updated Branches:
  refs/heads/trunk 81bfa8c67 -> b3fd502c6


AMBARI-12495. Upgrade status beyond 'Versions' page not being updated (alexantonenko)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/b3fd502c
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/b3fd502c
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/b3fd502c

Branch: refs/heads/trunk
Commit: b3fd502c6c067ffbbb3bc3a14c1399dcaff574cc
Parents: c3017b9
Author: Alex Antonenko <hi...@gmail.com>
Authored: Wed Jul 22 16:03:51 2015 +0300
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Wed Jul 22 17:02:22 2015 +0300

----------------------------------------------------------------------
 .../app/controllers/global/update_controller.js |  12 ++
 .../main/admin/stack_and_upgrade_controller.js  |  12 +-
 .../global/update_controller_test.js            | 144 ++++++++++++++++++-
 .../admin/stack_and_upgrade_controller_test.js  |   3 +-
 4 files changed, 166 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/b3fd502c/ambari-web/app/controllers/global/update_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/global/update_controller.js b/ambari-web/app/controllers/global/update_controller.js
index cc635d9..bbcd4da 100644
--- a/ambari-web/app/controllers/global/update_controller.js
+++ b/ambari-web/app/controllers/global/update_controller.js
@@ -153,6 +153,7 @@ App.UpdateController = Em.Controller.extend({
       if (!App.get('router.mainAlertInstancesController.isUpdating')) {
         App.updater.run(this, 'updateUnhealthyAlertInstances', 'updateAlertInstances', App.alertInstancesUpdateInterval, '\/main\/alerts.*');
       }
+      App.updater.run(this, 'updateUpgradeState', 'isWorking', App.bgOperationsUpdateInterval);
     }
   }.observes('isWorking', 'App.router.mainAlertInstancesController.isUpdating'),
 
@@ -554,6 +555,17 @@ App.UpdateController = Em.Controller.extend({
     App.HttpClient.get(App.get('apiPrefix') + '/alert_targets?fields=*', App.alertNotificationMapper, {
       complete: callback
     });
+  },
+  
+  updateUpgradeState: function (callback) {
+    var currentStateName = App.get('router.currentState.name'),
+      parentStateName = App.get('router.parentState.name'),
+      mainAdminStackAndUpgradeController = App.get('router.mainAdminStackAndUpgradeController');
+    if (!(currentStateName === 'versions' && parentStateName === 'stackAndUpgrade') && currentStateName !== 'stackUpgrade' && App.get('upgradeIsNotFinished') && !mainAdminStackAndUpgradeController.get('isLoadUpgradeDataPending')) {
+      mainAdminStackAndUpgradeController.loadUpgradeData(true).done(callback);
+    } else {
+      callback();
+    }
   }
 
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/b3fd502c/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
index 309ab5e..49a1f85 100644
--- a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
+++ b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
@@ -83,6 +83,8 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
    */
   taskDetailsProperties: ['status', 'stdout', 'stderr', 'error_log', 'host_name', 'output_log'],
 
+  isLoadUpgradeDataPending: false,
+
   /**
    * path to the mock json
    * @type {String}
@@ -181,13 +183,15 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
    * @param {boolean} onlyState
    */
   loadUpgradeData: function (onlyState) {
-    var upgradeId = this.get('upgradeId');
-    var deferred = $.Deferred();
+    var upgradeId = this.get('upgradeId'),
+      deferred = $.Deferred(),
+      self = this;
 
     if (Em.isNone(upgradeId)) {
       deferred.resolve();
       console.log('Upgrade in INIT state');
     } else {
+      this.set('isLoadUpgradeDataPending', true);
       App.ajax.send({
         name: (onlyState) ? 'admin.upgrade.state' : 'admin.upgrade.data',
         sender: this,
@@ -195,7 +199,9 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
           id: upgradeId
         },
         success: 'loadUpgradeDataSuccessCallback'
-      }).then(deferred.resolve);
+      }).then(deferred.resolve).complete(function () {
+          self.set('isLoadUpgradeDataPending', false);
+        });
     }
     return deferred.promise();
   },

http://git-wip-us.apache.org/repos/asf/ambari/blob/b3fd502c/ambari-web/test/controllers/global/update_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/global/update_controller_test.js b/ambari-web/test/controllers/global/update_controller_test.js
index 7237bf6..06edcf3 100644
--- a/ambari-web/test/controllers/global/update_controller_test.js
+++ b/ambari-web/test/controllers/global/update_controller_test.js
@@ -62,7 +62,7 @@ describe('App.UpdateController', function () {
 
     it('isWorking = true', function () {
       controller.set('isWorking', true);
-      expect(App.updater.run.callCount).to.equal(10);
+      expect(App.updater.run.callCount).to.equal(11);
     });
   });
 
@@ -263,4 +263,146 @@ describe('App.UpdateController', function () {
       expect(App.hostsMapper.setMetrics.calledWith({})).to.be.true;
     });
   });
+
+  describe('#updateUpgradeState()', function () {
+
+    var cases = [
+        {
+          currentStateName: 'versions',
+          parentStateName: 'stackAndUpgrade',
+          upgradeIsNotFinished: true,
+          isLoadUpgradeDataPending: true,
+          loadUpgradeDataCallCount: 0,
+          callbackCallCount: 1,
+          title: 'stack versions page'
+        },
+        {
+          currentStateName: 'stackUpgrade',
+          parentStateName: null,
+          upgradeIsNotFinished: true,
+          isLoadUpgradeDataPending: true,
+          loadUpgradeDataCallCount: 0,
+          callbackCallCount: 1,
+          title: 'upgrade popup open'
+        },
+        {
+          currentStateName: 'versions',
+          parentStateName: null,
+          upgradeIsNotFinished: true,
+          isLoadUpgradeDataPending: false,
+          loadUpgradeDataCallCount: 1,
+          callbackCallCount: 0,
+          title: 'another page with \'versions\' name'
+        },
+        {
+          currentStateName: 'versions',
+          parentStateName: null,
+          upgradeIsNotFinished: false,
+          isLoadUpgradeDataPending: false,
+          loadUpgradeDataCallCount: 0,
+          callbackCallCount: 1,
+          title: 'another page with \'versions\' name, upgrade finished'
+        },
+        {
+          currentStateName: 'versions',
+          parentStateName: null,
+          upgradeIsNotFinished: true,
+          isLoadUpgradeDataPending: true,
+          loadUpgradeDataCallCount: 0,
+          callbackCallCount: 1,
+          title: 'another page with \'versions\' name, another update upgrade request not completed'
+        },
+        {
+          currentStateName: 'services',
+          parentStateName: 'stackAndUpgrade',
+          upgradeIsNotFinished: true,
+          isLoadUpgradeDataPending: false,
+          loadUpgradeDataCallCount: 1,
+          callbackCallCount: 0,
+          title: 'another page from \'Stack and Versions\' section'
+        },
+        {
+          currentStateName: 'services',
+          parentStateName: 'stackAndUpgrade',
+          upgradeIsNotFinished: false,
+          isLoadUpgradeDataPending: false,
+          loadUpgradeDataCallCount: 0,
+          callbackCallCount: 1,
+          title: 'another page from \'Stack and Versions\' section, upgrade finished'
+        },
+        {
+          currentStateName: 'services',
+          parentStateName: 'stackAndUpgrade',
+          upgradeIsNotFinished: true,
+          isLoadUpgradeDataPending: true,
+          loadUpgradeDataCallCount: 0,
+          callbackCallCount: 1,
+          title: 'another page from \'Stack and Versions\' section, another update upgrade request not completed'
+        },
+        {
+          currentStateName: 'widgets',
+          parentStateName: 'dashboard',
+          upgradeIsNotFinished: true,
+          isLoadUpgradeDataPending: false,
+          loadUpgradeDataCallCount: 1,
+          callbackCallCount: 0,
+          title: 'not \'Stack and Versions\' section'
+        },
+        {
+          currentStateName: 'widgets',
+          parentStateName: 'dashboard',
+          upgradeIsNotFinished: false,
+          isLoadUpgradeDataPending: false,
+          loadUpgradeDataCallCount: 0,
+          callbackCallCount: 1,
+          title: 'not \'Stack and Versions\' section, upgrade finished'
+        },
+        {
+          currentStateName: 'widgets',
+          parentStateName: 'dashboard',
+          upgradeIsNotFinished: true,
+          isLoadUpgradeDataPending: true,
+          loadUpgradeDataCallCount: 0,
+          callbackCallCount: 1,
+          title: 'not \'Stack and Versions\' section, another update upgrade request not completed'
+        }
+      ],
+      mock = {
+        callback: Em.K,
+        loadUpgradeData: function () {
+          return {
+            done: Em.K
+          };
+        }
+      },
+      mainAdminStackAndUpgradeController = App.get('router.mainAdminStackAndUpgradeController'),
+      appGetMock;
+
+    beforeEach(function () {
+      sinon.spy(mock, 'callback');
+      sinon.spy(mock, 'loadUpgradeData');
+      appGetMock = sinon.stub(App, 'get');
+    });
+
+    afterEach(function () {
+      mock.callback.restore();
+      mock.loadUpgradeData.restore();
+      App.get.restore();
+      appGetMock.restore();
+    });
+
+    cases.forEach(function (item) {
+      it(item.title, function () {
+        appGetMock.withArgs('router.mainAdminStackAndUpgradeController').returns(Em.Object.create({
+          loadUpgradeData: mock.loadUpgradeData,
+          isLoadUpgradeDataPending: item.isLoadUpgradeDataPending
+        })).withArgs('upgradeIsNotFinished').returns(item.upgradeIsNotFinished);
+        controller.updateUpgradeState(mock.callback);
+        expect(mock.loadUpgradeData.callCount).to.equal(item.loadUpgradeDataCallCount);
+        expect(mock.callback.callCount).to.equal(item.callbackCallCount);
+      });
+    });
+
+  });
+
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/b3fd502c/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
index a37e115..8fe8364 100644
--- a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
+++ b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
@@ -113,7 +113,8 @@ describe('App.MainAdminStackAndUpgradeController', function() {
   describe("#loadUpgradeData()", function() {
     beforeEach(function () {
       sinon.stub(App.ajax, 'send').returns({
-        then: Em.K
+        then: Em.K,
+        complete: Em.K
       });
     });
     afterEach(function () {


[3/3] ambari git commit: AMBARI-12494. Editing repo versions URLs is enabled regardless of version status (alexantonenko)

Posted by al...@apache.org.
AMBARI-12494. Editing repo versions URLs is enabled regardless of version status (alexantonenko)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2605a845
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2605a845
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2605a845

Branch: refs/heads/trunk
Commit: 2605a8450aef54a387cd651432db944c96dd8b8f
Parents: 81bfa8c
Author: Alex Antonenko <hi...@gmail.com>
Authored: Wed Jul 22 14:30:36 2015 +0300
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Wed Jul 22 17:02:22 2015 +0300

----------------------------------------------------------------------
 .../admin/stack_upgrade/upgrade_version_box.hbs |  2 +-
 .../stack_upgrade/upgrade_version_box_view.js   |  6 +-
 .../upgrade_version_box_view_test.js            | 85 +++++++++++++++++---
 3 files changed, 80 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/2605a845/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_box.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_box.hbs b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_box.hbs
index 2e037d1..be5df49 100644
--- a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_box.hbs
+++ b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_version_box.hbs
@@ -20,7 +20,7 @@
   <i class="icon-exclamation-sign out-of-sync-badge"></i>
 {{/if}}
 
-<p class="version">
+<p {{bindAttr class=":version view.isRepoUrlsEditDisabled:not-active-link"}}>
   <span>{{view.content.displayName}}</span>
   <a class="pull-right not-active link-tooltip" {{action editRepositories target="view"}}>
     <i class="icon-edit"></i>

http://git-wip-us.apache.org/repos/asf/ambari/blob/2605a845/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js
index 25be6e2..6ea53ac 100644
--- a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js
+++ b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js
@@ -49,6 +49,10 @@ App.UpgradeVersionBoxView = Em.View.extend({
     return (this.get('controller.upgradeVersion') === this.get('content.displayName') && App.get('upgradeState') !== 'INIT');
   }.property('App.upgradeState', 'content.displayName', 'controller.upgradeVersion'),
 
+  isRepoUrlsEditDisabled: function () {
+    return ['INSTALLING', 'UPGRADING'].contains(this.get('content.status')) || this.get('isUpgrading');
+  }.property('content.status', 'isUpgrading'),
+
   /**
    * @type {string}
    */
@@ -239,7 +243,7 @@ App.UpgradeVersionBoxView = Em.View.extend({
       })
     });
 
-    return App.ModalPopup.show({
+    return this.get('isRepoUrlsEditDisabled') ? null : App.ModalPopup.show({
       classNames: ['repository-list', 'sixty-percent-width-modal'],
       skipValidation: false,
       autoHeight: false,

http://git-wip-us.apache.org/repos/asf/ambari/blob/2605a845/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js b/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js
index 080bf39..7654411 100644
--- a/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js
+++ b/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js
@@ -21,14 +21,19 @@ var App = require('app');
 require('views/main/admin/stack_upgrade/upgrade_version_box_view');
 
 describe('App.UpgradeVersionBoxView', function () {
-  var view = App.UpgradeVersionBoxView.create({
-    controller: Em.Object.create({
-      upgrade: Em.K
-    }),
-    content: Em.Object.create(),
-    parentView: Em.Object.create({
-      repoVersions: []
-    })
+
+  var view;
+
+  beforeEach(function () {
+    view = App.UpgradeVersionBoxView.create({
+      controller: Em.Object.create({
+        upgrade: Em.K
+      }),
+      content: Em.Object.create(),
+      parentView: Em.Object.create({
+        repoVersions: []
+      })
+    });
   });
 
   describe("#isUpgrading", function () {
@@ -212,6 +217,18 @@ describe('App.UpgradeVersionBoxView', function () {
   });
   
   describe("#editRepositories()", function () {
+    var cases = [
+      {
+        isRepoUrlsEditDisabled: true,
+        popupShowCallCount: 0,
+        title: 'edit repo URLS disabled, popup shouldn\'t be shown'
+      },
+      {
+        isRepoUrlsEditDisabled: false,
+        popupShowCallCount: 1,
+        title: 'edit repo URLS enabled, popup should be shown'
+      }
+    ];
     beforeEach(function () {
       sinon.stub(App.RepositoryVersion, 'find').returns(Em.Object.create({
         operatingSystems: []
@@ -222,9 +239,14 @@ describe('App.UpgradeVersionBoxView', function () {
       App.RepositoryVersion.find.restore();
       App.ModalPopup.show.restore();
     });
-    it("show popup", function () {
-      view.editRepositories();
-      expect(App.ModalPopup.show.calledOnce).to.be.true;
+    cases.forEach(function (item) {
+      it(item.title, function () {
+        view.reopen({
+          isRepoUrlsEditDisabled: item.isRepoUrlsEditDisabled
+        });
+        view.editRepositories();
+        expect(App.ModalPopup.show.callCount).to.equal(item.popupShowCallCount);
+      });
     });
   });
 
@@ -767,4 +789,45 @@ describe('App.UpgradeVersionBoxView', function () {
 
   });
 
+  describe('#isRepoUrlsEditDisabled', function () {
+
+    var cases = [
+      {
+        status: 'INSTALLING',
+        isUpgrading: false,
+        isRepoUrlsEditDisabled: true,
+        title: 'installing packages'
+      },
+      {
+        status: 'UPGRADING',
+        isUpgrading: true,
+        isRepoUrlsEditDisabled: true,
+        title: 'upgrading'
+      },
+      {
+        status: 'INSTALLED',
+        isUpgrading: true,
+        isRepoUrlsEditDisabled: true,
+        title: 'upgrading just started'
+      },
+      {
+        status: 'INIT',
+        isUpgrading: false,
+        isRepoUrlsEditDisabled: false,
+        title: 'neither upgrading nor installing packages'
+      }
+    ];
+
+    cases.forEach(function (item) {
+      it(item.title, function () {
+        view.reopen({
+          isUpgrading: item.isUpgrading
+        });
+        view.set('content.status', item.status);
+        expect(view.get('isRepoUrlsEditDisabled')).to.equal(item.isRepoUrlsEditDisabled);
+      });
+    });
+
+  });
+
 });


[2/3] ambari git commit: AMBARI-12496. Invalid Metrics Monitor issue message after page refresh on step 3 of Add Service Wizard (alexantonenko)

Posted by al...@apache.org.
AMBARI-12496. Invalid Metrics Monitor issue message after page refresh on step 3 of Add Service Wizard (alexantonenko)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c3017b90
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c3017b90
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c3017b90

Branch: refs/heads/trunk
Commit: c3017b90f12894916128b31ffdce6516d3be8beb
Parents: 2605a84
Author: Alex Antonenko <hi...@gmail.com>
Authored: Wed Jul 22 14:39:51 2015 +0300
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Wed Jul 22 17:02:22 2015 +0300

----------------------------------------------------------------------
 ambari-web/app/controllers/installer.js            |  4 ----
 .../app/controllers/main/service/add_controller.js |  1 +
 ambari-web/app/controllers/wizard.js               |  4 ++++
 ambari-web/app/routes/add_service_routes.js        |  2 ++
 ambari-web/test/controllers/wizard_test.js         | 17 +++++++++++++++++
 5 files changed, 24 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/c3017b90/ambari-web/app/controllers/installer.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/installer.js b/ambari-web/app/controllers/installer.js
index a311e99..932da04 100644
--- a/ambari-web/app/controllers/installer.js
+++ b/ambari-web/app/controllers/installer.js
@@ -441,10 +441,6 @@ App.InstallerController = App.WizardController.extend({
     this.set("content.masterComponentHosts", masterComponentHosts);
   },
 
-  loadRecommendations: function () {
-    this.set("content.recommendations", this.getDBProperty('recommendations'));
-  },
-
   loadCurrentHostGroups: function () {
     this.set("content.recommendationsHostGroups", this.getDBProperty('recommendationsHostGroups'));
   },

http://git-wip-us.apache.org/repos/asf/ambari/blob/c3017b90/ambari-web/app/controllers/main/service/add_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/add_controller.js b/ambari-web/app/controllers/main/service/add_controller.js
index 777775d..79d3e87 100644
--- a/ambari-web/app/controllers/main/service/add_controller.js
+++ b/ambari-web/app/controllers/main/service/add_controller.js
@@ -88,6 +88,7 @@ App.AddServiceController = App.WizardController.extend(App.AddSecurityConfigs, {
           this.loadHosts().done(function () {
             self.loadMasterComponentHosts();
             self.load('hosts');
+            self.loadRecommendations();
             dfd.resolve();
           });
           return dfd.promise();

http://git-wip-us.apache.org/repos/asf/ambari/blob/c3017b90/ambari-web/app/controllers/wizard.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard.js b/ambari-web/app/controllers/wizard.js
index 4cc0c1e..33982f3 100644
--- a/ambari-web/app/controllers/wizard.js
+++ b/ambari-web/app/controllers/wizard.js
@@ -1317,5 +1317,9 @@ App.WizardController = Em.Controller.extend(App.LocalStorage, App.ThemesMappingM
   loadRequestIds: function() {
     var requestIds = this.getDBProperty('requestIds');
     this.set('content.requestIds', requestIds);
+  },
+
+  loadRecommendations: function () {
+    this.set("content.recommendations", this.getDBProperty('recommendations'));
   }
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/c3017b90/ambari-web/app/routes/add_service_routes.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/add_service_routes.js b/ambari-web/app/routes/add_service_routes.js
index b908288..6f9a6a7 100644
--- a/ambari-web/app/routes/add_service_routes.js
+++ b/ambari-web/app/routes/add_service_routes.js
@@ -131,6 +131,7 @@ module.exports = App.WizardRoute.extend({
 
       var wizardStep5Controller = router.get('wizardStep5Controller');
       wizardStep5Controller.clearRecommendations(); // Force reload recommendation between steps 1 and 2
+      addServiceController.setDBProperty('recommendations', undefined);
       router.transitionTo('step2');
     }
   }),
@@ -158,6 +159,7 @@ module.exports = App.WizardRoute.extend({
       var wizardStep6Controller = router.get('wizardStep6Controller');
       addServiceController.saveMasterComponentHosts(wizardStep5Controller);
       addServiceController.setDBProperty('slaveComponentHosts', undefined);
+      addServiceController.setDBProperty('recommendations', wizardStep5Controller.get('content.recommendations'));
       wizardStep6Controller.set('isClientsSet', false);
       router.transitionTo('step3');
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/c3017b90/ambari-web/test/controllers/wizard_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/wizard_test.js b/ambari-web/test/controllers/wizard_test.js
index a3ce6f2..9ac1005 100644
--- a/ambari-web/test/controllers/wizard_test.js
+++ b/ambari-web/test/controllers/wizard_test.js
@@ -1481,5 +1481,22 @@ describe('App.WizardController', function () {
 
   });
 
+  describe('#loadRecommendations', function () {
+
+    beforeEach(function () {
+      sinon.stub(c, 'getDBProperty').returns({});
+    });
+
+    afterEach(function () {
+      c.getDBProperty.restore();
+    });
+
+    it('should set recommendations', function () {
+      c.set('content', {});
+      c.loadRecommendations();
+      expect(c.get('content.recommendations')).to.eql({});
+    });
+
+  });
 
 });