AMBARI-7356.When the user completes Install Wizard, mark 
Clusters.provisioning_state as INSTALLED. (akovalenko)


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

Branch: refs/heads/branch-alerts-dev
Commit: f63dd8a6eea79defd93837dbfc3011f42692ae91
Parents: e033815
Author: Aleksandr Kovalenko <akovale...@hortonworks.com>
Authored: Wed Sep 17 14:06:44 2014 +0300
Committer: Aleksandr Kovalenko <akovale...@hortonworks.com>
Committed: Wed Sep 17 14:06:44 2014 +0300

----------------------------------------------------------------------
 ambari-web/app/controllers/installer.js | 15 +++++
 ambari-web/app/models/cluster_states.js |  1 -
 ambari-web/app/router.js                | 84 ++++++++++++++++------------
 ambari-web/app/routes/installer.js      | 12 ++--
 ambari-web/app/utils/ajax/ajax.js       | 17 +++++-
 5 files changed, 84 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/f63dd8a6/ambari-web/app/controllers/installer.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/installer.js 
b/ambari-web/app/controllers/installer.js
index e45eaee..d933e9a 100644
--- a/ambari-web/app/controllers/installer.js
+++ b/ambari-web/app/controllers/installer.js
@@ -745,6 +745,21 @@ App.InstallerController = App.WizardController.extend({
     App.router.get('applicationController').postUserPref(persists, true);
   },
 
+  /**
+   * Save cluster provisioning state to the server
+   * @param state cluster provisioning state
+   * @param callback is called after request completes
+   */
+  setClusterProvisioningState: function (state, callback) {
+    App.ajax.send({
+      name: 'cluster.save_provisioning_state',
+      sender: this,
+      data: {
+        state: state
+      }
+    }).complete(callback());
+  },
+
   setStepsEnable: function () {
     for (var i = 0; i <= this.totalSteps; i++) {
       var step = this.get('isStepDisabled').findProperty('step', i);

http://git-wip-us.apache.org/repos/asf/ambari/blob/f63dd8a6/ambari-web/app/models/cluster_states.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/cluster_states.js 
b/ambari-web/app/models/cluster_states.js
index 49760d6..95c1444 100644
--- a/ambari-web/app/models/cluster_states.js
+++ b/ambari-web/app/models/cluster_states.js
@@ -108,7 +108,6 @@ App.clusterStatus = Em.Object.create(App.UserPref, {
    * @method updateFromServer
    */
   updateFromServer: function (overrideLocaldb) {
-    // if overrideLocaldb is undefined, set it to true
     this.set('additionalData', {
       user: App.db.getUser(),
       login: App.db.getLoginName(),

http://git-wip-us.apache.org/repos/asf/ambari/blob/f63dd8a6/ambari-web/app/router.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/router.js b/ambari-web/app/router.js
index 18203f2..bbc06dd 100644
--- a/ambari-web/app/router.js
+++ b/ambari-web/app/router.js
@@ -29,6 +29,12 @@ App.Router = Em.Router.extend({
   enableLogging: true,
   isFwdNavigation: true,
   backBtnForHigherStep: false,
+
+  /**
+   * Is true, if cluster.provisioning_state is equal to 'INSTALLED'
+   * @type {Boolean}
+   */
+  clusterInstallCompleted: false,
   /**
    * user prefered path to route
    */
@@ -119,6 +125,9 @@ App.Router = Em.Router.extend({
 
   onAuthenticationSuccess: function (data) {
     this.set('loggedIn', true);
+    if (data.items.length) {
+      this.set('clusterInstallCompleted', 
data.items[0].Clusters.provisioning_state === 'INSTALLED');
+    }
   },
 
   onAuthenticationError: function (data) {
@@ -265,7 +274,7 @@ App.Router = Em.Router.extend({
       App.usersMapper.map({"items": [loginData]});
       router.setUserLoggedIn(params.loginName);
       var permissionList = 
privileges.items.mapProperty('PrivilegeInfo.permission_name');
-      var isAdmin = permissionList.indexOf('AMBARI.ADMIN') > -1;
+      var isAdmin = permissionList.contains('AMBARI.ADMIN');
       var transitionToApp = false;
       if (isAdmin) {
         App.set('isAdmin', true);
@@ -277,14 +286,15 @@ App.Router = Em.Router.extend({
         }
       } else {
         if (clustersData.items.length) {
+          this.set('clusterInstallCompleted', 
clustersData.items[0].Clusters.provisioning_state === 'INSTALLED');
           //TODO: Iterate over clusters
           var clusterName = clustersData.items[0].Clusters.cluster_name;
           var clusterPermissions = 
privileges.items.filterProperty('PrivilegeInfo.cluster_name', 
clusterName).mapProperty('PrivilegeInfo.permission_name');
-          if (clusterPermissions.indexOf('CLUSTER.OPERATE') > -1) {
+          if (clusterPermissions.contains('CLUSTER.OPERATE')) {
             App.set('isAdmin', true);
             App.set('isOperator', true);
             transitionToApp = true;
-          } else if (clusterPermissions.indexOf('CLUSTER.READ') > -1) {
+          } else if (clusterPermissions.contains('CLUSTER.READ')) {
             transitionToApp = true;
           }
         }
@@ -317,40 +327,42 @@ App.Router = Em.Router.extend({
       } else {
         callback('main.dashboard.index');
       }
-    }
-    App.clusterStatus.updateFromServer(false).complete(function () {
-      var clusterStatusOnServer = App.clusterStatus.get('value');
-      // if wizardControllerName == "installerController", then it means 
someone closed the browser or the browser was crashed when we were last in 
Installer wizard
-      var route = 'installer';
-      if (!App.get('isAdmin') || clusterStatusOnServer && 
(clusterStatusOnServer.clusterState === 'DEFAULT' || 
clusterStatusOnServer.clusterState === 'CLUSTER_STARTED_5')) {
-        route = 'main.dashboard.index';
-      } else if (clusterStatusOnServer && 
clusterStatusOnServer.wizardControllerName === 
App.router.get('addHostController.name')) {
-        // if wizardControllerName == "addHostController", then it means 
someone closed the browser or the browser was crashed when we were last in Add 
Hosts wizard
-        route = 'main.hostAdd';
-      } else if (clusterStatusOnServer && 
(clusterStatusOnServer.wizardControllerName === 
App.router.get('addSecurityController.name') || 
clusterStatusOnServer.wizardControllerName === 
App.router.get('mainAdminSecurityDisableController.name'))) {
-        // if wizardControllerName == "addSecurityController", then it means 
someone closed the browser or the browser was crashed when we were last in Add 
Security wizard
-        route = 'main.admin.adminSecurity';
-      } else if (clusterStatusOnServer && 
clusterStatusOnServer.wizardControllerName === 
App.router.get('addServiceController.name')) {
-        // if wizardControllerName == "addHostController", then it means 
someone closed the browser or the browser was crashed when we were last in Add 
Hosts wizard
-        route = 'main.serviceAdd';
-      } else if (clusterStatusOnServer && 
clusterStatusOnServer.wizardControllerName === 
App.router.get('stackUpgradeController.name')) {
-        // if wizardControllerName == "stackUpgradeController", then it means 
someone closed the browser or the browser was crashed when we were last in 
Stack Upgrade wizard
-        route = 'main.stackUpgrade';
-      } else if (clusterStatusOnServer && 
clusterStatusOnServer.wizardControllerName === 
App.router.get('reassignMasterController.name')) {
-        // if wizardControllerName == "reassignMasterController", then it 
means someone closed the browser or the browser was crashed when we were last 
in Reassign Master wizard
-        route = 'main.reassign';
-      } else if (clusterStatusOnServer && 
clusterStatusOnServer.wizardControllerName === 
App.router.get('highAvailabilityWizardController.name')) {
-        // if wizardControllerName == "highAvailabilityWizardController", then 
it means someone closed the browser or the browser was crashed when we were 
last in NameNode High Availability wizard
-        route = 'main.services.enableHighAvailability';
-      } else if (clusterStatusOnServer && 
clusterStatusOnServer.wizardControllerName === 
App.router.get('rMHighAvailabilityWizardController.name')) {
-        // if wizardControllerName == "highAvailabilityWizardController", then 
it means someone closed the browser or the browser was crashed when we were 
last in NameNode High Availability wizard
-        route = 'main.services.enableRMHighAvailability';
-      } else if (clusterStatusOnServer && 
clusterStatusOnServer.wizardControllerName === 
App.router.get('rollbackHighAvailabilityWizardController.name')) {
-        // if wizardControllerName == "highAvailabilityRollbackController", 
then it means someone closed the browser or the browser was crashed when we 
were last in NameNode High Availability Rollback wizard
-        route = 'main.services.rollbackHighAvailability';
+    } else {
+      if (this.get('clusterInstallCompleted')) {
+        App.clusterStatus.updateFromServer(false).complete(function () {
+          var clusterStatusOnServer = App.clusterStatus.get('value');
+          var route = 'main.dashboard.index';
+          if (clusterStatusOnServer && 
clusterStatusOnServer.wizardControllerName === 
App.router.get('addHostController.name')) {
+            // if wizardControllerName == "addHostController", then it means 
someone closed the browser or the browser was crashed when we were last in Add 
Hosts wizard
+            route = 'main.hostAdd';
+          } else if (clusterStatusOnServer && 
(clusterStatusOnServer.wizardControllerName === 
App.router.get('addSecurityController.name') || 
clusterStatusOnServer.wizardControllerName === 
App.router.get('mainAdminSecurityDisableController.name'))) {
+            // if wizardControllerName == "addSecurityController", then it 
means someone closed the browser or the browser was crashed when we were last 
in Add Security wizard
+            route = 'main.admin.adminSecurity';
+          } else if (clusterStatusOnServer && 
clusterStatusOnServer.wizardControllerName === 
App.router.get('addServiceController.name')) {
+            // if wizardControllerName == "addHostController", then it means 
someone closed the browser or the browser was crashed when we were last in Add 
Hosts wizard
+            route = 'main.serviceAdd';
+          } else if (clusterStatusOnServer && 
clusterStatusOnServer.wizardControllerName === 
App.router.get('stackUpgradeController.name')) {
+            // if wizardControllerName == "stackUpgradeController", then it 
means someone closed the browser or the browser was crashed when we were last 
in Stack Upgrade wizard
+            route = 'main.stackUpgrade';
+          } else if (clusterStatusOnServer && 
clusterStatusOnServer.wizardControllerName === 
App.router.get('reassignMasterController.name')) {
+            // if wizardControllerName == "reassignMasterController", then it 
means someone closed the browser or the browser was crashed when we were last 
in Reassign Master wizard
+            route = 'main.reassign';
+          } else if (clusterStatusOnServer && 
clusterStatusOnServer.wizardControllerName === 
App.router.get('highAvailabilityWizardController.name')) {
+            // if wizardControllerName == "highAvailabilityWizardController", 
then it means someone closed the browser or the browser was crashed when we 
were last in NameNode High Availability wizard
+            route = 'main.services.enableHighAvailability';
+          } else if (clusterStatusOnServer && 
clusterStatusOnServer.wizardControllerName === 
App.router.get('rMHighAvailabilityWizardController.name')) {
+            // if wizardControllerName == "highAvailabilityWizardController", 
then it means someone closed the browser or the browser was crashed when we 
were last in NameNode High Availability wizard
+            route = 'main.services.enableRMHighAvailability';
+          } else if (clusterStatusOnServer && 
clusterStatusOnServer.wizardControllerName === 
App.router.get('rollbackHighAvailabilityWizardController.name')) {
+            // if wizardControllerName == 
"highAvailabilityRollbackController", then it means someone closed the browser 
or the browser was crashed when we were last in NameNode High Availability 
Rollback wizard
+            route = 'main.services.rollbackHighAvailability';
+          }
+          callback(route);
+        });
+      } else {
+        callback('installer');
       }
-      callback(route);
-    });
+    }
   },
 
   logOff: function (context) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/f63dd8a6/ambari-web/app/routes/installer.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/installer.js 
b/ambari-web/app/routes/installer.js
index 0ca109a..a414ff4 100644
--- a/ambari-web/app/routes/installer.js
+++ b/ambari-web/app/routes/installer.js
@@ -79,7 +79,7 @@ module.exports = Em.Route.extend({
             });
           } else {
             Em.run.next(function () {
-              App.router.transitionTo('main.services');
+              App.router.transitionTo('main.views.index');
             });
           }
 
@@ -436,11 +436,11 @@ module.exports = Em.Route.extend({
     complete: function (router, context) {
       var controller = router.get('installerController');
       controller.finish();
-
-      // We need to do recovery based on whether we are in Add Host or 
Installer wizard
-      controller.saveClusterState('DEFAULT');
-
-      router.transitionTo('main.dashboard.index');
+      controller.setClusterProvisioningState('INSTALLED', function () {
+        // We need to do recovery based on whether we are in Add Host or 
Installer wizard
+        controller.saveClusterState('DEFAULT');
+        router.transitionTo('main.dashboard.index');
+      });
     }
   }),
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/f63dd8a6/ambari-web/app/utils/ajax/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax/ajax.js 
b/ambari-web/app/utils/ajax/ajax.js
index 2dceaa5..4342195 100644
--- a/ambari-web/app/utils/ajax/ajax.js
+++ b/ambari-web/app/utils/ajax/ajax.js
@@ -911,6 +911,19 @@ var urls = {
       };
     }
   },
+  'cluster.save_provisioning_state': {
+    'real': '/clusters/{clusterName}',
+    'type': 'PUT',
+    'format': function (data) {
+      return {
+        data: JSON.stringify({
+          "Clusters": {
+            "provisioning_state": data.state
+          }
+        })
+      };
+    }
+  },
   'admin.high_availability.polling': {
     'real': 
'/clusters/{clusterName}/requests/{requestId}?fields=tasks/*,Requests/*',
     'mock': ''
@@ -1368,7 +1381,7 @@ var urls = {
     mock: '/data/users/privileges_{userName}.json'
   },
   'router.login.clusters': {
-    'real': '/clusters',
+    'real': '/clusters?fields=Clusters/provisioning_state',
     'mock': '/data/clusters/info.json'
   },
   'router.logoff': {
@@ -1376,7 +1389,7 @@ var urls = {
     'mock': ''
   },
   'router.authentication': {
-    'real': '/clusters',
+    'real': '/clusters?fields=Clusters/provisioning_state',
     'mock': '/data/clusters/info.json',
     'format': function() {
       return {

Reply via email to