You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by yu...@apache.org on 2012/11/08 03:53:33 UTC
svn commit: r1406902 - in /incubator/ambari/branches/AMBARI-666: ./
ambari-web/app/ ambari-web/app/controllers/
ambari-web/app/controllers/wizard/ ambari-web/app/models/
ambari-web/app/routes/ ambari-web/app/styles/
ambari-web/app/templates/wizard/ amb...
Author: yusaku
Date: Thu Nov 8 02:53:32 2012
New Revision: 1406902
URL: http://svn.apache.org/viewvc?rev=1406902&view=rev
Log:
AMBARI-964. Implement summary page of the installer wizard. (Jaimin Jetly via yusaku)
Modified:
incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/installer.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/wizard/step10_controller.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/wizard/step9_controller.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/messages.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/models/service_config.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/router.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/routes/installer.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/styles/application.less
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step10.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step9.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step10_view.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step2_view.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step9_view.js
Modified: incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt?rev=1406902&r1=1406901&r2=1406902&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt (original)
+++ incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt Thu Nov 8 02:53:32 2012
@@ -12,6 +12,9 @@ AMBARI-666 branch (unreleased changes)
NEW FEATURES
+ AMBARI-964. Implement summary page of installer wizard. (Jaimin Jetly
+ via yusaku)
+
AMBARI-974. Decommissioning of datanodes. (Jitendra Pandey via mahadev)
AMBARI-975. Fix support for cascading updates to configs. (Hitesh Shah
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/installer.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/installer.js?rev=1406902&r1=1406901&r2=1406902&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/installer.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/installer.js Thu Nov 8 02:53:32 2012
@@ -55,6 +55,13 @@ App.InstallerController = Em.Controller.
}
}.observes('currentStep'),
+ setLowerStepsDisable: function (stepNo) {
+ for (var i = 1; i < stepNo; i++) {
+ var step = this.get('isStepDisabled').findProperty('step', i);
+ step.set('value', true);
+ }
+ },
+
prevInstallStatus: function () {
console.log('Inside the prevInstallStep function: The name is ' + App.router.get('loginController.loginName'));
var result = App.db.isCompleted()
@@ -204,7 +211,7 @@ App.InstallerController = Em.Controller.
cluster: null,
hosts: null,
services: null,
- hostsInfo: null,
+ hostsInfo: [],
slaveComponentHosts: null,
hostSlaveComponents: null,
masterComponentHosts: null,
@@ -227,7 +234,6 @@ App.InstallerController = Em.Controller.
console.log("InstallerController:loadClusterInfo: loaded data ", cluster);
},
-
/**
* Save all info about cluster to model
* @param stepController Step1WizardController
@@ -266,6 +272,7 @@ App.InstallerController = Em.Controller.
for (var index in hostInfo) {
hostInfo[index].status = "pending";
hostInfo[index].message = 'Waiting';
+ hostInfo[index].logTasks = [];
hostInfo[index].tasks = [];
hostInfo[index].progress = '0';
}
@@ -410,13 +417,14 @@ App.InstallerController = Em.Controller.
var host = hosts.findProperty('name', hostInfo[index].name);
if (host) {
hostInfo[index].status = host.status;
+ hostInfo[index].logTasks = host.logTasks;
hostInfo[index].tasks = host.tasks;
hostInfo[index].message = host.message;
hostInfo[index].progress = host.progress;
}
}
App.db.setHosts(hostInfo);
- console.log('installerController:saveInstalledHosts: save hosts ', hostInfo);
+ this.set('content.hostsInfo', hostInfo);
},
/**
@@ -677,7 +685,7 @@ App.InstallerController = Em.Controller.
loadHostToMasterComponent: function () {
var list = App.db.getHostToMasterComponent();
this.set('content.hostToMasterComponent', list);
- console.log("AddHostController.loadHostToMasterComponent: loaded list ", list);
+ console.log("InstallerController.loadHostToMasterComponent: loaded list ", list);
},
/**
@@ -686,6 +694,7 @@ App.InstallerController = Em.Controller.
loadAllPriorSteps: function () {
var step = this.get('currentStep');
switch (step) {
+ case '10':
case '9':
case '8':
case '7':
@@ -727,16 +736,19 @@ App.InstallerController = Em.Controller.
timeout: 5000,
success: function (data) {
var jsonData = jQuery.parseJSON(data);
+ var installSartTime = new Date().getTime();
console.log("TRACE: STep8 -> In success function for the installService call");
console.log("TRACE: STep8 -> value of the url is: " + url);
if (jsonData) {
var requestId = jsonData.href.match(/.*\/(.*)$/)[1];
+
console.log('requestId is: ' + requestId);
var clusterStatus = {
status: 'PENDING',
requestId: requestId,
isInstallError: false,
- isCompleted: false
+ isCompleted: false,
+ installStartTime: installSartTime
};
self.saveClusterStatus(clusterStatus);
} else {
@@ -762,6 +774,4 @@ App.InstallerController = Em.Controller.
}
-
-
});
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/wizard/step10_controller.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/wizard/step10_controller.js?rev=1406902&r1=1406901&r2=1406902&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/wizard/step10_controller.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/wizard/step10_controller.js Thu Nov 8 02:53:32 2012
@@ -18,22 +18,310 @@
var App = require('app');
-App.WizardStep10Controller = Em.ArrayController.extend({
+App.WizardStep10Controller = Em.Controller.extend({
name: 'wizardStep10Controller',
- content: [],
-
- clearStep: function() {
- this.clear();
+ clusterInfo: [],
+ clearStep: function () {
+ this.get('clusterInfo').clear();
},
- loadStep: function() {
+ loadStep: function () {
console.log("TRACE: Loading step10: Summary Page");
this.clearStep();
+ this.loadInstalledHosts(this.loadRegisteredHosts());
+ var installFlag = this.loadMasterComponents();
+ var startFlag = this.loadStartedServices();
+ if (installFlag && startFlag) {
+ this.loadInstallTime();
+ }
+ },
+
+ loadRegisteredHosts: function () {
+ var masterHosts = this.get('content.masterComponentHosts').mapProperty('hostName').uniq();
+ var slaveHosts = this.get('content.slaveComponentHosts');
+ var hostObj = [];
+ slaveHosts.forEach(function (_hosts) {
+ hostObj = hostObj.concat(_hosts.hosts);
+ }, this);
+ slaveHosts = hostObj.mapProperty('hostname').uniq();
+ var registeredHosts = masterHosts.concat(slaveHosts).uniq();
+ var registerHostsStatement = registeredHosts.length + ' hosts registered to the cluster.';
+ var registerHostsObj = Ember.Object.create({
+ id: 1,
+ displayStatement: registerHostsStatement,
+ status: []
+ });
+ this.get('clusterInfo').pushObject(registerHostsObj);
+
+ return registerHostsObj;
+ },
+
+ loadInstalledHosts: function (host) {
+ var hosts = this.get('content.hostsInfo');
+ var hostsInfo = [];
+ for (var index in hosts) {
+ hostsInfo.pushObject(hosts[index]);
+ console.log('Step10 SUMMARY: value of hosts is: ' + hosts[index].status);
+ }
+ var succededHosts = hostsInfo.filterProperty('status', 'success');
+ var warnedHosts = hostsInfo.filterProperty('status', 'warning').concat(hostsInfo.filterProperty('status', 'failed'));
+ if (succededHosts.length) {
+ var successStatement = succededHosts.length + ' nodes succeded completely to install and start all service components assigned to them.';
+ this.get('clusterInfo').findProperty('id', 1).get('status').pushObject(Ember.Object.create({
+ id: 1,
+ displayStatement: successStatement
+ }));
+ }
+
+ if (warnedHosts.length) {
+ var warnStatement = warnedHosts.length + ' warnings';
+ this.get('clusterInfo').findProperty('id', 1).get('status').pushObject(Ember.Object.create({
+ id: 2,
+ displayStatement: warnStatement,
+ statements: []
+ }));
+
+ warnedHosts.forEach(function (_host) {
+ var clusterState;
+ console.log("Content.cluster.staus is: " + this.get('content.cluster.status'));
+ if (this.get('content.cluster.status') === 'INSTALL FAILED') {
+ clusterState = 'Installing ';
+ } else if (this.get('content.cluster.status') === 'START FAILED') {
+ clusterState = 'Starting ';
+ }
+ console.log('host value is: ' + JSON.stringify(_host));
+ var failedTasks = _host.tasks.filterProperty('Tasks.status', 'FAILED');
+ failedTasks.forEach(function (_task) {
+ var taskStatement = clusterState + _task.Tasks.role + ' failed on ' + _host.name;
+ console.log('Over here in SUMMARY page...');
+ this.get('clusterInfo').findProperty('id', 1).get('status').findProperty('id', 2).get('statements').pushObject(Ember.Object.create({
+ status: 'failed',
+ displayStatement: taskStatement
+ }));
+ }, this);
+
+ var abortedTasks = _host.tasks.filterProperty('Tasks.status', 'ABORTED');
+ abortedTasks.forEach(function (_task) {
+ var abortStatement = clusterState + _task.Tasks.role + ' aborted on ' + _host.name;
+ this.get('clusterInfo').findProperty('id', 1).get('status').findProperty('id', 2).get('statements').pushObject(Ember.Object.create({
+ status: 'aborted',
+ displayStatement: abortStatement
+ }));
+ }, this);
+
+ var timedOutTasks = _host.tasks.filterProperty('Tasks.status', 'TIMEDOUT');
+ timedOutTasks.forEach(function (_task) {
+ var abortStatement = clusterState + _task.Tasks.role + ' timed out on ' + _host.name;
+ this.get('clusterInfo').findProperty('id', 1).get('status').findProperty('id', 2).get('statements').pushObject(Ember.Object.create({
+ status: 'timedout',
+ displayStatement: timedOutTasks
+ }));
+ }, this);
+ }, this);
+ }
+ },
+
+ loadMasterComponents: function () {
+ var components = this.get('content.masterComponentHosts');
+ var statement;
+ if (this.get('content.cluster.status') === 'INSTALL FAILED') {
+ this.get('clusterInfo').pushObject(Ember.Object.create({
+ id: 2,
+ displayStatement: 'Installing master services failed',
+ status: []
+ }));
+ return false;
+ } else {
+ this.get('clusterInfo').pushObject(Ember.Object.create({
+ id: 2,
+ displayStatement: 'Master services installed',
+ status: []
+ }));
+ }
+
+ console.log('STEP10 master components: ' + JSON.stringify(components));
+ components.forEach(function (_component) {
+ switch (_component.component) {
+ case 'NAMENODE':
+ this.loadNn(_component);
+ break;
+ case 'SECONDARY_NAMENODE':
+ this.loadSnn(_component);
+ break;
+ case 'JOBTRACKER' :
+ this.loadJt(_component);
+ break;
+ case 'ZOOKEEPER_SERVER' :
+ this.loadZk(_component);
+ break;
+ case 'HBASE_MASTER':
+ this.loadHb(_component);
+ break;
+ case 'HIVE_SERVER':
+ this.loadHiveServer(_component);
+ break;
+ case 'OOZIE_SERVER':
+ this.loadOozieServer(_component);
+ break;
+ case 'GANGLIA_SERVER':
+ this.loadGanglia(_component)
+ break;
+ case 'NAGIOS_SERVER':
+ this.loadNagios(_component);
+ break;
+ }
+ }, this);
+ return true;
+ },
+
+ loadNn: function (component) {
+ if (component.get('hostName')) {
+ var statement = 'NameNode installed on ' + component.get('hostName');
+ this.get('clusterInfo').findProperty('id', 2).get('status').pushObject(Ember.Object.create({
+ id: 1,
+ displayStatement: statement
+ }));
+ } else {
+ console.log('ERROR: no host name assigned to NameNode component');
+ }
+ },
+
+ loadSnn: function (component) {
+ if (component.get('hostName')) {
+ var statement = 'SecondaryNameNode installed on ' + component.get('hostName');
+ this.get('clusterInfo').findProperty('id', 2).get('status').pushObject(Ember.Object.create({
+ id: 1,
+ displayStatement: statement
+ }));
+ } else {
+ console.log('ERROR: no host name assigned to SecondaryNameNode component');
+ }
+ },
+
+ loadJt: function (component) {
+ if (component.get('hostName')) {
+ var statement = 'JobTracker installed on ' + component.get('hostName');
+ this.get('clusterInfo').findProperty('id', 2).get('status').pushObject(Ember.Object.create({
+ id: 1,
+ displayStatement: statement
+ }));
+ } else {
+ console.log('ERROR: no host name assigned to JobTracker component');
+ }
+ },
+
+ loadZk: function (component) {
+ var hostLength = component.get('hostName').length;
+ if (hostLength) {
+ var hostVal;
+ if (hostLength === 1) {
+ hostVal = 'host';
+ } else {
+ hostVal = 'hosts';
+ }
+ var statement = 'ZooKeeper installed on ' + component.get('hostName').length + ' ' + hostVal;
+ this.get('clusterInfo').findProperty('id', 2).get('status').pushObject(Ember.Object.create({
+ id: 1,
+ displayStatement: statement
+ }));
+ } else {
+ console.log('ERROR: no host name assigned to Zookeeper component');
+ }
+ },
+
+ loadHb: function (component) {
+ if (component.get('hostName')) {
+ var statement = 'HBase Master installed on ' + component.get('hostName');
+ this.get('clusterInfo').findProperty('id', 2).get('status').pushObject(Ember.Object.create({
+ id: 1,
+ displayStatement: statement
+ }));
+ } else {
+ console.log('ERROR: no host name assigned to HBase Master component');
+ }
+ },
+
+ loadHiveServer: function (component) {
+ if (component.get('hostName')) {
+ var statement = 'Hive Metastore installed on ' + component.get('hostName');
+ this.get('clusterInfo').findProperty('id', 2).get('status').pushObject(Ember.Object.create({
+ id: 1,
+ displayStatement: statement
+ }));
+ } else {
+ console.log('ERROR: no host name assigned to Hive server component');
+ }
+ },
+ loadOozieServer: function (component) {
+ if (component.get('hostName')) {
+ var statement = 'Hive Metastore installed on ' + component.get('hostName');
+ this.get('clusterInfo').findProperty('id', 2).get('status').pushObject(Ember.Object.create({
+ id: 1,
+ displayStatement: statement
+ }));
+ } else {
+ console.log('ERROR: no host name assigned to Oozie server component');
+ }
},
- navigateStep: function() {
- this.loadStep();
+ loadGanglia: function (component) {
+ if (component.get('hostName')) {
+ var statement = 'Ganglia Server installed on ' + component.get('hostName');
+ this.get('clusterInfo').findProperty('id', 2).get('status').pushObject(Ember.Object.create({
+ id: 1,
+ displayStatement: statement
+ }));
+ } else {
+ console.log('ERROR: no host name assigned to Ganglia server component');
+ }
+ },
+
+ loadNagios: function (component) {
+ if (component.get('hostName')) {
+ var statement = 'Ganglia Server installed on ' + component.get('hostName');
+ this.get('clusterInfo').findProperty('id', 2).get('status').pushObject(Ember.Object.create({
+ id: 1,
+ displayStatement: statement
+ }));
+ } else {
+ console.log('ERROR: no host name assigned to Nagios server component');
+ }
+ },
+
+ loadStartedServices: function (component) {
+ if (this.get('content.cluster.status') === 'STARTED') {
+ var statement = 'All services started'
+ this.get('clusterInfo').pushObject(Ember.Object.create({
+ id: 3,
+ displayStatement: 'All services started',
+ status: []
+ }));
+ this.get('clusterInfo').pushObject(Ember.Object.create({
+ id: 4,
+ displayStatement: 'All tests passed',
+ status: []
+ }));
+ return true;
+ } else {
+ this.get('clusterInfo').pushObject(Ember.Object.create({
+ id: 3,
+ displayStatement: 'Starting services failed',
+ status: []
+ }));
+ return false;
+ }
+ },
+
+ loadInstallTime: function() {
+ var statement = 'Install and start of all services completed in ' + this.get('content.cluster.serviceStartTime') + ' minutes';
+ this.get('clusterInfo').pushObject(Ember.Object.create({
+ id: 5,
+ displayStatement: 'All services started',
+ status: []
+ }));
}
+
+
});
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/wizard/step9_controller.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/wizard/step9_controller.js?rev=1406902&r1=1406901&r2=1406902&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/wizard/step9_controller.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/wizard/step9_controller.js Thu Nov 8 02:53:32 2012
@@ -32,7 +32,7 @@ App.WizardStep9Controller = Em.Controlle
polledData: [],
status: function () {
- if (this.hosts.everyProperty('status', 'success')) {
+ if (this.hosts.length && this.hosts.everyProperty('status', 'success')) {
return 'success';
} else if (this.hosts.someProperty('status', 'failed')) {
return 'failed';
@@ -48,11 +48,11 @@ App.WizardStep9Controller = Em.Controlle
//TODO: uncomment following line after the hook up with the API call
if (this.get('content.cluster.isCompleted') === false) {
this.loadStep();
- if (App.db.getClusterStatus().isInstallError === true) {
+ if (this.get('content.cluster.status') === 'INSTALL FAILED') {
this.set('isStepCompleted', true);
this.set('status', 'failed');
this.set('progress', '100');
- } else if (App.db.getClusterStatus().isStartError === true) {
+ } else if (this.get('content.cluster.status') === 'START FAILED') {
this.launchStartServices();
} else {
this.startPolling();
@@ -94,6 +94,7 @@ App.WizardStep9Controller = Em.Controlle
name: _hostInfo.name,
status: _hostInfo.status,
tasks: _hostInfo.tasks,
+ logTasks: _hostInfo.logTasks,
message: _hostInfo.message,
progress: _hostInfo.progress
});
@@ -234,7 +235,7 @@ App.WizardStep9Controller = Em.Controlle
console.log("ERROR");
var clusterStatus = {
name: clusterName,
- status: 'PENDING',
+ status: 'START FAILED',
isStartError: true,
isCompleted: false
};
@@ -356,20 +357,26 @@ App.WizardStep9Controller = Em.Controlle
clusterStatus = {
status: 'INSTALLED',
requestId: requestId,
- isCompleted: true
+ isCompleted: true,
+ installStartTime: this.get('content.cluster.installStartTime')
}
if (this.isSuccess(polledData)) {
clusterStatus.status = 'STARTED';
+ var serviceSartTime = new Date().getTime();
+ var timeToStart = Math.floor((serviceSartTime - this.get('content.cluster.installStartTime')) / 60000);
+ clusterStatus.installTime = timeToStart;
this.set('status', 'success');
} else {
if (this.isStepFailed(polledData)) {
- clusterStatus.status = 'FAILED';
+ clusterStatus.status = 'START FAILED'; // 'START FAILED' implies to step10 that installation was successful but start failed
this.set('status', 'failed');
this.setHostsStatus(this.getFailedHostsForFailedRoles(polledData));
}
}
App.router.get('installerController').saveClusterStatus(clusterStatus);
this.set('isStepCompleted', true);
+ this.setTasksPerHost();
+ App.router.get('installerController').saveInstalledHosts(this);
return true;
}
} else if (this.get('content.cluster.status') === 'PENDING') {
@@ -377,10 +384,15 @@ App.WizardStep9Controller = Em.Controlle
clusterStatus = {
status: 'PENDING',
requestId: requestId,
- isCompleted: true
+ isCompleted: true,
+ installStartTime: this.get('content.cluster.installStartTime')
}
+ var serviceSartTime = new Date().getTime();
+ var timeToStart = serviceSartTime - this.get('content.cluster.installStartTime');
+ console.log("STEP9: ********The time difference is = " + serviceSartTime / 60000);
if (this.isStepFailed(polledData)) {
- clusterStatus.status = 'FAILED';
+ console.log("In installation failure");
+ clusterStatus.status = 'INSTALL FAILED';
this.set('progress', '100');
this.set('status', 'failed');
this.setHostsStatus(this.getFailedHostsForFailedRoles(polledData), 'failed');
@@ -389,9 +401,10 @@ App.WizardStep9Controller = Em.Controlle
} else {
clusterStatus.status = 'INSTALLED';
this.set('progress', '34');
- App.router.get('installerController').saveInstalledHosts(this);
this.launchStartServices(); //TODO: uncomment after the actual hookup
}
+ this.setTasksPerHost();
+ App.router.get('installerController').saveInstalledHosts(this);
return true;
}
}
@@ -400,21 +413,43 @@ App.WizardStep9Controller = Em.Controlle
getCompletedTasksForHost: function (host) {
var hostname = host.get('name');
- var tasksPerHost = host.tasks.filterProperty('Tasks.host_name', hostname);
+ var tasksPerHost = host.logTasks.filterProperty('Tasks.host_name', hostname);
var succededTasks = tasksPerHost.filterProperty('Tasks.status', 'COMPLETED');
var inProgressTasks = tasksPerHost.filterProperty('Tasks.status', 'IN_PROGRESS');
var listedTasksPerHost = succededTasks.concat(inProgressTasks).uniq();
return listedTasksPerHost;
},
+ setTasksPerHost: function () {
+ console.log("In setTasksPerHost fo step9*****************");
+ var tasksData = this.get('polledData');
+ this.get('hosts').forEach(function (_host) {
+ var tasksPerHost = tasksData.filterProperty('Tasks.host_name', _host.name); // retrieved from polled Data
+ if (tasksPerHost.length === 0) {
+ //alert('For testing with mockData follow the sequence: hit referesh,"mockData btn", "pollData btn", again "pollData btn"');
+ //exit();
+ }
+ if (tasksPerHost !== null && tasksPerHost !== undefined && tasksPerHost.length !== 0) {
+ tasksPerHost.forEach(function (_taskPerHost) {
+ console.log('In step9 _taskPerHost function.');
+ //if (_taskPerHost.Tasks.status !== 'PENDING' && _taskPerHost.Tasks.status !== 'QUEUED' && _taskPerHost.Tasks.status !== 'IN_PROGRESS') {
+ _host.tasks.pushObject(_taskPerHost);
+ //}
+ }, this);
+ }
+ }, this);
+ },
+
// This is done at HostRole level.
- setTasksStatePerHost: function (tasksPerHost, host) {
+ setLogTasksStatePerHost: function (tasksPerHost, host) {
var tasks = [];
+ console.log('In step9 setTasksStatePerHost function.');
tasksPerHost.forEach(function (_taskPerHost) {
+ console.log('In step9 _taskPerHost function.');
if (_taskPerHost.Tasks.status !== 'PENDING' && _taskPerHost.Tasks.status !== 'QUEUED') {
- var task = host.tasks.findProperty('Tasks.id', _taskPerHost.Tasks.id);
+ var task = host.logTasks.findProperty('Tasks.id', _taskPerHost.Tasks.id);
if (!(task && (task.Tasks.command === _taskPerHost.Tasks.command))) {
- host.tasks.pushObject(_taskPerHost);
+ host.logTasks.pushObject(_taskPerHost);
}
}
}, this);
@@ -442,10 +477,10 @@ App.WizardStep9Controller = Em.Controlle
//exit();
}
if (actionsPerHost !== null && actionsPerHost !== undefined && actionsPerHost.length !== 0) {
- this.onSuccessPerHost(actionsPerHost, _host); // every action should be a success
- this.onWarningPerHost(actionsPerHost, _host); // any action should be a faliure
- this.onInProgressPerHost(actionsPerHost, _host); // current running action for a host
- this.setTasksStatePerHost(actionsPerHost, _host);
+ this.setLogTasksStatePerHost(actionsPerHost, _host);
+ this.onSuccessPerHost(actionsPerHost, _host); // every action should be a success
+ this.onWarningPerHost(actionsPerHost, _host); // any action should be a faliure
+ this.onInProgressPerHost(actionsPerHost, _host); // current running action for a host
totalProgress = self.progressPerHost(actionsPerHost, _host);
}
}, this);
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/messages.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/messages.js?rev=1406902&r1=1406901&r2=1406902&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/messages.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/messages.js Thu Nov 8 02:53:32 2012
@@ -126,7 +126,10 @@ Em.I18n.translations = {
'installer.step9.host.status.failed': 'failures encountered',
'installer.step9.hostLog.popup.header': 'Tasks executed on ',
-'installer.step10.header': 'Summary',
+ 'installer.step10.header': 'Summary',
+ 'installer.step10.body': 'Here is the summary of the cluster install process.',
+
+
'form.create': 'Create',
'form.save': 'Save',
'form.cancel': 'Cancel',
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/models/service_config.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/models/service_config.js?rev=1406902&r1=1406901&r2=1406902&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/models/service_config.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/models/service_config.js Thu Nov 8 02:53:32 2012
@@ -110,7 +110,6 @@ App.ServiceConfigProperty = Ember.Object
switch (this.get('name')) {
case 'namenode.host':
var temp = masterComponentHostsInDB.findProperty('component','NAMENODE');
- console.log("this is temp: " + temp.hostName);
this.set('value', temp.hostName);
break;
case 'snamenode.host':
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/router.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/router.js?rev=1406902&r1=1406901&r2=1406902&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/router.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/router.js Thu Nov 8 02:53:32 2012
@@ -35,6 +35,7 @@ App.Router = Em.Router.extend({
clearAllSteps: function() {
this.get('installerController.content').set('cluster',null);
+ this.get('wizardStep2Controller').set('hasSubmitted',false);
/*this.get('installerController.content').set({
cluster: null,
hosts: null,
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/routes/installer.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/routes/installer.js?rev=1406902&r1=1406901&r2=1406902&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/routes/installer.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/routes/installer.js Thu Nov 8 02:53:32 2012
@@ -243,7 +243,7 @@ module.exports = Em.Route.extend({
next: function (router) {
var installerController = router.get('installerController');
var wizardStep8Controller = router.get('wizardStep8Controller');
- installerController.installServices(); //TODO: Uncomment for the actual hookupq
+ installerController.installServices(); //TODO: Uncomment for the actual hookup
installerController.setInfoForStep9();
router.transitionTo('step9');
}
@@ -256,6 +256,9 @@ module.exports = Em.Route.extend({
var controller = router.get('installerController');
router.setInstallerCurrentStep('9', false);
controller.loadAllPriorSteps();
+ if (!App.testMode) { //if test mode is ON don't disable prior steps link.
+ controller.setLowerStepsDisable(9);
+ }
controller.connectOutlet('wizardStep9', controller.get('content'));
},
back: Em.Router.transitionTo('step8'),
@@ -268,7 +271,7 @@ module.exports = Em.Route.extend({
next: function (router) {
var installerController = router.get('installerController');
var wizardStep9Controller = router.get('wizardStep9Controller');
- installerController.saveClusterInfo(wizardStep9Controller);
+ // installerController.saveClusterInfo(wizardStep9Controller);
installerController.saveInstalledHosts(wizardStep9Controller);
router.transitionTo('step10');
}
@@ -281,7 +284,7 @@ module.exports = Em.Route.extend({
var controller = router.get('installerController');
router.setInstallerCurrentStep('10', false);
controller.loadAllPriorSteps();
- controller.connectOutlet('wizardStep10');
+ controller.connectOutlet('wizardStep10',controller.get('content'));
},
back: Em.Router.transitionTo('step9'),
complete: function (router, context) {
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/styles/application.less
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/styles/application.less?rev=1406902&r1=1406901&r2=1406902&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/styles/application.less (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/styles/application.less Thu Nov 8 02:53:32 2012
@@ -1627,4 +1627,8 @@ ul.inline li {
#step8-content {
max-height: 570px;
-}
\ No newline at end of file
+}
+
+#step10-content {
+ max-height: 440px;
+}
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step10.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step10.hbs?rev=1406902&r1=1406901&r2=1406902&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step10.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step10.hbs Thu Nov 8 02:53:32 2012
@@ -17,10 +17,31 @@
-->
<h2>{{t installer.step10.header}}</h2>
+<div class="alert alert-info">
+ {{t installer.step10.body}}
+</div>
+<div id="step10-content" class="well pre-scrollable">
+ {{#each item in clusterInfo}}
+ <ul>
+ {{item.displayStatement}}
+ {{#each status in item.status}}
+ <ul>
+ {{status.displayStatement}}
+ {{#each statement in status.statements}}
+ <ul>
+ {{statement.displayStatement}}
+ </ul>
+ {{/each}}
+ </ul>
+ {{/each}}
+ </ul>
+ {{/each}}
+</div>
+
<div class="btn-area">
<a
- class="btn pull-left" {{bindAttr disabled="isSubmitDisabled"}} {{action back}}>←
+ class="btn pull-left" {{bindAttr disabled="isSubmitDisabled"}} {{action back}}>←
Back</a>
<a
- class="btn btn-success pull-right" {{bindAttr disabled="isSubmitDisabled"}} {{action complete}}>Complete →</a>
+ class="btn btn-success pull-right" {{bindAttr disabled="isSubmitDisabled"}} {{action complete}}>Complete →</a>
</div>
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step9.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step9.hbs?rev=1406902&r1=1406901&r2=1406902&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step9.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step9.hbs Thu Nov 8 02:53:32 2012
@@ -113,9 +113,6 @@
{{/if}}
<div class="btn-area">
<a
- class="btn pull-left" {{bindAttr disabled="isSubmitDisabled"}} {{action back target="controller"}}>←
- Back</a>
- <a
class="btn btn-success pull-right" {{bindAttr disabled="isSubmitDisabled"}} {{action submit target="controller"}}>Next →</a>
</div>
</div>
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step10_view.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step10_view.js?rev=1406902&r1=1406901&r2=1406902&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step10_view.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step10_view.js Thu Nov 8 02:53:32 2012
@@ -25,7 +25,7 @@ App.WizardStep10View = Em.View.extend({
didInsertElement: function () {
var controller = this.get('controller');
- controller.navigateStep();
+ controller.loadStep();
}
});
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step2_view.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step2_view.js?rev=1406902&r1=1406901&r2=1406902&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step2_view.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step2_view.js Thu Nov 8 02:53:32 2012
@@ -27,7 +27,8 @@ App.WizardStep2View = Em.View.extend({
didInsertElement: function () {
$("[rel=popover]").popover({'placement': 'right', 'trigger': 'hover'});
this.set('hostNameErr', false);
- //this.set('controller.sshKeyNullErr', false);
+ this.set('controller.hostsError',null);
+ this.set('controller.sshKeyError',null);
},
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step9_view.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step9_view.js?rev=1406902&r1=1406901&r2=1406902&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step9_view.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step9_view.js Thu Nov 8 02:53:32 2012
@@ -127,13 +127,14 @@ App.HostStatusView = Em.View.extend({
hostObj: function () {
return this.get('parentView.obj');
}.property('parentView.obj'),
- tasks: [],
+
+ logTasks: [],
roles: function () {
var roleArr = [];
- var tasks = this.get('tasks');
+ var tasks = this.get('logTasks');
if (tasks.length) {
- var role = this.get('tasks').mapProperty('Tasks.role').uniq();
+ var role = this.get('logTasks').mapProperty('Tasks.role').uniq();
role.forEach(function (_role) {
var statusArr = [];
var roleObj = {};
@@ -149,11 +150,11 @@ App.HostStatusView = Em.View.extend({
}, this);
}
return roleArr;
- }.property('tasks.@each'),
+ }.property('logTasks.@each'),
didInsertElement: function () {
console.log('The value of event context is: ' + host.name);
- this.set('tasks', self.get('controller').getCompletedTasksForHost(event.context));
+ this.set('logTasks', self.get('controller').getCompletedTasksForHost(event.context));
}
})
});