瀏覽代碼

AMBARI-948. Invoke service starts after services are installed in the wizard. (yusaku)

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/branches/AMBARI-666@1406450 13f79535-47bb-0310-9956-ffa450edef68
Yusaku Sako 12 年之前
父節點
當前提交
b9b7401dd0

+ 3 - 0
AMBARI-666-CHANGES.txt

@@ -12,6 +12,9 @@ AMBARI-666 branch (unreleased changes)
 
   NEW FEATURES
 
+  AMBARI-948. Invoke service starts after services are installed in the
+  wizard. (yusaku)
+
   AMBARI-942. Integrate Install and Start APIs with the installer wizard.
   (Jaimin Jetly via yusaku)
 

+ 3 - 1
ambari-web/app/controllers/installer.js

@@ -252,7 +252,9 @@ App.InstallerController = Em.Controller.extend({
    * @param clusterStatus object with status, isCompleted, requestId, isInstallError and isStartError field.
    */
   saveClusterStatus: function (clusterStatus) {
+    clusterStatus.name = this.get('content.cluster.name');
     this.set('content.cluster', clusterStatus);
+    console.log('called saveClusterStatus ' + JSON.stringify(clusterStatus));
     App.db.setClusterStatus(clusterStatus);
   },
 
@@ -754,4 +756,4 @@ App.InstallerController = Em.Controller.extend({
 
 
 
-});
+});

+ 12 - 4
ambari-web/app/controllers/wizard/step8_controller.js

@@ -725,7 +725,7 @@ App.WizardStep8Controller = Em.Controller.extend({
   applyCreatedConfToServices: function () {
     var services = this.get('selectedServices').mapProperty('serviceName');
     services.forEach(function (_service) {
-      var data = this.getDataForHdfs();
+      var data = this.getConfigForService(_service);
       this.applyCreatedConfToService(_service, 'PUT', data);
     }, this);
   },
@@ -733,13 +733,16 @@ App.WizardStep8Controller = Em.Controller.extend({
   applyCreatedConfToService: function (service, httpMethod, data) {
     console.log("Inside applyCreatedConfToService");
     var clusterName = this.get('clusterInfo').findProperty('config_name', 'cluster').config_value;
-    var data = data;
     var url = '/api/clusters/' + clusterName + '/services/' + service;
+
+    debugger;
+
     $.ajax({
       type: httpMethod,
       url: url,
       async: false,
       dataType: 'text',
+      data: JSON.stringify(data),
       timeout: 5000,
       success: function (data) {
         var jsonData = jQuery.parseJSON(data);
@@ -759,8 +762,13 @@ App.WizardStep8Controller = Em.Controller.extend({
     console.log("Exiting applyCreatedConfToService");
   },
 
-  getDataForHdfs: function () {
-    return {config: {'core-site': 'version1', 'hdfs-site': 'version1'}};
+  getConfigForService: function (serviceName) {
+    switch (serviceName) {
+      case 'HDFS':
+        return {config: {'core-site': 'version1', 'hdfs-site': 'version1'}};
+      case 'MAPREDUCE':
+        return {config: {'core-site': 'version1', 'mapred-site': 'version1'}};
+    }
   }
 
 })

+ 7 - 7
ambari-web/app/controllers/wizard/step9_controller.js

@@ -227,6 +227,7 @@ App.WizardStep9Controller = Em.Controller.extend({
         var requestId = jsonData.href.match(/.*\/(.*)$/)[1];
         console.log('requestId is: ' + requestId);
         var clusterStatus = {
+          name: clusterName,
           status: 'INSTALLED',
           requestId: requestId,
           isStartError: false,
@@ -239,6 +240,7 @@ App.WizardStep9Controller = Em.Controller.extend({
       error: function () {
         console.log("ERROR");
         var clusterStatus = {
+          name: clusterName,
           status: 'PENDING',
           isStartError: true,
           isCompleted: false
@@ -354,7 +356,6 @@ App.WizardStep9Controller = Em.Controller.extend({
   // polling from ui stops only when no action has 'PENDING', 'QUEUED' or 'IN_PROGRESS' status
   finishState: function (polledData) {
     var clusterStatus = {};
-    var retVal = false;
     var requestId = this.get('content.cluster.requestId');
     if (this.get('content.cluster.status') === 'INSTALLED') {
       if (!polledData.someProperty('Tasks.status', 'PENDING') && !polledData.someProperty('Tasks.status', 'QUEUED') && !polledData.someProperty('Tasks.status', 'IN_PROGRESS')) {
@@ -376,7 +377,7 @@ App.WizardStep9Controller = Em.Controller.extend({
         }
         App.router.get('installerController').saveClusterStatus(clusterStatus);
         this.set('isStepCompleted', true);
-        retVal = true;
+        return true;
       }
     } else if (this.get('content.cluster.status') === 'PENDING') {
       if (!polledData.someProperty('Tasks.status', 'PENDING') && !polledData.someProperty('Tasks.status', 'QUEUED') && !polledData.someProperty('Tasks.status', 'IN_PROGRESS')) {
@@ -390,19 +391,18 @@ App.WizardStep9Controller = Em.Controller.extend({
           this.set('progress', '100');
           this.set('status', 'failed');
           this.setHostsStatus(this.getFailedHostsForFailedRoles(polledData), 'failed');
+	  App.router.get('installerController').saveClusterStatus(clusterStatus);
           this.set('isStepCompleted', true);
         } else {
           clusterStatus.status = 'INSTALLED';
           this.set('progress', '34');
           App.router.get('installerController').saveInstalledHosts(this);
           this.launchStartServices();  //TODO: uncomment after the actual hookup
-
         }
-        App.router.get('installerController').saveClusterStatus(clusterStatus);
-        retVal = true;
+        return true;
       }
     }
-    return retVal;
+    return false;
   },
 
   getCompletedTasksForHost: function (host) {
@@ -601,4 +601,4 @@ App.WizardStep9Controller = Em.Controller.extend({
     }
   }
 
-});
+});

+ 4 - 3
ambari-web/app/utils/db.js

@@ -189,7 +189,7 @@ App.db.setSoftRepo = function (softRepo) {
 }
 
 App.db.setBootStatus = function (status) {
-  console.log('TRACE: Entering db:setService function');
+  console.log('TRACE: Entering db:setBootStatus function');
   App.db.data = localStorage.getObject('ambari');
   var user = App.db.data.app.loginName;
   App.db.data[user].Installer.bootStatus = status;
@@ -274,6 +274,7 @@ App.db.setClusterStatus = function (status) {
   App.db.data = localStorage.getObject('ambari');
   var user = App.db.data.app.loginName;
   App.db.data[user].Installer.clusterStatus = status;
+  console.log('db.setClusterStatus called: ' + JSON.stringify(status));
   localStorage.setObject('ambari', App.db.data);
 }
 
@@ -403,7 +404,7 @@ App.db.getHosts = function () {
 }
 
 App.db.getBootStatus = function () {
-  console.log('TRACE: Entering db:setService function');
+  console.log('TRACE: Entering db:getBootStatus function');
   App.db.data = localStorage.getObject('ambari');
   var user = App.db.data.app.loginName;
   return App.db.data[user].Installer.bootStatus;
@@ -465,7 +466,7 @@ App.db.getServiceConfigProperties = function () {
 }
 
 App.db.getClusterStatus = function () {
-  console.log('TRACE: Entering db:setService function');
+  console.log('TRACE: Entering db:getClusterStatus function');
   App.db.data = localStorage.getObject('ambari');
   var user = App.db.data.app.loginName;
   return App.db.data[user].Installer.clusterStatus;