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/10/18 03:18:55 UTC

svn commit: r1399503 - in /incubator/ambari/branches/AMBARI-666: ./ ambari-web/app/controllers/installer/ ambari-web/app/data/ ambari-web/app/data/mock/ ambari-web/app/templates/installer/ ambari-web/app/views/installer/

Author: yusaku
Date: Thu Oct 18 01:18:54 2012
New Revision: 1399503

URL: http://svn.apache.org/viewvc?rev=1399503&view=rev
Log:
AMBARI-880. Implement Review Page (Step 8) for the Ambari 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/step6_controller.js
    incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/installer/step8_controller.js
    incubator/ambari/branches/AMBARI-666/ambari-web/app/data/mock/services.js
    incubator/ambari/branches/AMBARI-666/ambari-web/app/data/review_configs.js
    incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step3.hbs
    incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step8.hbs
    incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step9.hbs
    incubator/ambari/branches/AMBARI-666/ambari-web/app/views/installer/step8_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=1399503&r1=1399502&r2=1399503&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt (original)
+++ incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt Thu Oct 18 01:18:54 2012
@@ -12,6 +12,9 @@ AMBARI-666 branch (unreleased changes)
 
   NEW FEATURES
 
+  AMBARI-880. Implement Review Page (Step 8) for the Ambari Installer
+  Wizard. (Jaimin Jetly via yusaku)
+
   AMBARI-872. Hookup Nagios alerts section in Ambari UI to backend
   server. (Srimanth Gunturi via yusaku)
 

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/installer/step6_controller.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/installer/step6_controller.js?rev=1399503&r1=1399502&r2=1399503&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/installer/step6_controller.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/installer/step6_controller.js Thu Oct 18 01:18:54 2012
@@ -83,6 +83,12 @@ App.InstallerStep6Controller = Em.Contro
 		return this.get('selectedServiceNames').contains('MAPREDUCE');
 	}.property('selectedServiceNames'),
 
+	clearError: function () {
+		if (this.get('isNoDataNodes') === false && this.get('isNoTaskTrackers') === false && this.get('isNoRegionServers') === false) {
+			this.set('errorMessage', '');
+		}
+	}.observes('isNoDataNodes', 'isNoTaskTrackers', 'isNoRegionServers'),
+
 	selectAllDataNodes: function () {
 		this.get('hosts').setEach('isDataNode', true);
 	},
@@ -111,21 +117,18 @@ App.InstallerStep6Controller = Em.Contro
 	clearStep: function () {
 		this.set('hosts', []);
 		this.set('selectedServiceNames', []);
+		this.clearError();
 	},
 
 	loadStep: function () {
 		console.log("TRACE: Loading step6: Assign Slaves");
 		this.clearStep();
-		this.set('selectedServiceNames',db.getSelectedServiceNames());
+		this.set('selectedServiceNames', db.getSelectedServiceNames());
 		this.set('showHbase', this.isHbaseSelected());
 		this.set('showTaskTracker', this.get('isMrSelected'));
 		this.setSlaveHost(this.getSlaveHosts());
 	},
 
-	navigateStep: function () {
-		this.loadStep();
-	},
-
 	getHostNames: function () {
 		var hostInfo = db.getHosts();
 		var hostNames = [];

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/installer/step8_controller.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/installer/step8_controller.js?rev=1399503&r1=1399502&r2=1399503&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/installer/step8_controller.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/installer/step8_controller.js Thu Oct 18 01:18:54 2012
@@ -26,7 +26,7 @@ App.InstallerStep8Controller = Em.ArrayC
 
 	clearStep: function () {
 		this.clear();
-		this.services.clear();
+		this.get('services').clear();
 	},
 
 	loadStep: function () {
@@ -35,8 +35,8 @@ App.InstallerStep8Controller = Em.ArrayC
 		var configObj = new Ember.Set();
 		this.loadClusterName();
 		this.loadHosts();
+		this.loadRepo();
 		this.loadServices();
-		// this.doConfigsUneditable();
 	},
 
 	loadClusterName: function () {
@@ -61,8 +61,289 @@ App.InstallerStep8Controller = Em.ArrayC
 		this.pushObject(Ember.Object.create(totalHostsObj));
 	},
 
+	loadRepo: function () {
+		var repoOption = App.db.getSoftRepo().repoType;
+		var repoObj = this.rawContent.findProperty('config_name', 'Repo');
+		if (repoOption === 'local') {
+			repoObj.config_value = 'Yes';
+		} else {
+			repoObj.config_value = 'No';
+		}
+		this.pushObject(Ember.Object.create(repoObj));
+	},
+
 	loadServices: function () {
 		this.set('services', App.db.getSelectedServiceNames());
+		var services = App.db.getService().filterProperty('isSelected', true);
+		services.forEach(function (_service) {
+			console.log('INFO: step8: Name of the service from getService function: ' + _service.serviceName);
+			var serviceObj = {};
+			//var tempObj = {};
+			var reviewService = this.rawContent.findProperty('config_name', 'services');
+			serviceObj = reviewService.config_value.findProperty('service_name', _service.serviceName);
+			if (serviceObj !== undefined) {
+				switch (serviceObj.service_name) {
+					case 'HDFS':
+						this.loadHDFS(serviceObj);
+						break;
+					case 'MAPREDUCE':
+						this.loadMapReduce(serviceObj);
+						break;
+					case 'HIVE':
+						this.loadHive(serviceObj);
+						break;
+					case 'HBASE':
+						this.loadHbase(serviceObj);
+						break;
+					case 'ZOOKEEPER':
+						this.loadZk(serviceObj);
+						break;
+					case 'OOZIE':
+						this.loadOozie(serviceObj);
+						break;
+					case 'NAGIOS':
+						this.loadNagios(serviceObj);
+						break;
+					case 'GANGLIA':
+						this.loadGanglia(serviceObj);
+					case 'HCATALOG':
+						break;
+					default:
+				}
+			}
+			//serviceObj.displayName = tempObj.service_name;
+			//serviceObj.componentNames =  tempObj.service_components;
+
+		}, this);
+	},
+
+	loadHDFS: function (hdfsObj) {
+		hdfsObj.get('service_components').forEach(function (_component) {
+			switch (_component.get('display_name')) {
+				case 'NameNode':
+					this.loadNnValue(_component);
+					break;
+				case 'SecondaryNameNode':
+					this.loadSnnValue(_component);
+					break;
+				case 'DataNodes':
+					this.loadDnValue(_component);
+					break;
+				default:
+			}
+		}, this);
+		//var
+		this.services.pushObject(hdfsObj);
+	},
+
+	loadNnValue: function (nnComponent) {
+		var nnHostName = App.db.getMasterComponentHosts().findProperty('component', nnComponent.display_name);
+		nnComponent.set('component_value', nnHostName.hostName);
+	},
+
+	loadSnnValue: function (snnComponent) {
+		var snnHostName = App.db.getMasterComponentHosts().findProperty('component', 'SNameNode');
+		snnComponent.set('component_value', snnHostName.hostName);
+	},
+
+	loadDnValue: function (dnComponent) {
+		var dnHosts = App.db.getSlaveComponentHosts().findProperty('displayName', 'DataNode');
+		var totalDnHosts = dnHosts.hosts.length;
+		var dnHostGroups = [];
+		dnHosts.hosts.forEach(function (_dnHost) {
+			dnHostGroups.push(_dnHost.group);
+
+		}, this);
+		var totalGroups = dnHostGroups.uniq().length;
+		var groupLabel;
+		if (totalGroups == 1) {
+			groupLabel = 'group';
+		} else {
+			groupLabel = 'groups';
+		}
+		dnComponent.set('component_value', totalDnHosts + ' hosts ' + '(' + totalGroups + ' ' + groupLabel + ')');
+	},
+
+	loadMapReduce: function (mrObj) {
+		mrObj.get('service_components').forEach(function (_component) {
+			switch (_component.get('display_name')) {
+				case 'JobTracker':
+					this.loadJtValue(_component);
+					break;
+				case 'TaskTrackers':
+					this.loadTtValue(_component);
+					break;
+				default:
+			}
+		}, this);
+		this.get('services').pushObject(mrObj);
+	},
+
+	loadJtValue: function (jtComponent) {
+		var jtHostName = App.db.getMasterComponentHosts().findProperty('component', jtComponent.display_name);
+		jtComponent.set('component_value', jtHostName.hostName);
+	},
+
+	loadTtValue: function (ttComponent) {
+		var ttHosts = App.db.getSlaveComponentHosts().findProperty('displayName', 'TaskTracker');
+		var totalTtHosts = ttHosts.hosts.length;
+		var ttHostGroups = [];
+		ttHosts.hosts.forEach(function (_ttHost) {
+			ttHostGroups.push(_ttHost.group);
+		}, this);
+		var totalGroups = ttHostGroups.uniq().length;
+		var groupLabel;
+		if (totalGroups == 1) {
+			groupLabel = 'group';
+		} else {
+			groupLabel = 'groups';
+		}
+		ttComponent.set('component_value', totalTtHosts + ' hosts ' + '(' + totalGroups + ' ' + groupLabel + ')');
+	},
+
+	loadHive: function (hiveObj) {
+		hiveObj.get('service_components').forEach(function (_component) {
+			switch (_component.get('display_name')) {
+				case 'Hive Metastore Server':
+					this.loadHiveMetaStoreValue(_component);
+					break;
+				case 'Database':
+					this.loadHiveDbValue(_component);
+					break;
+				default:
+			}
+		}, this);
+		this.get('services').pushObject(hiveObj);
+
+	},
+
+	loadHiveMetaStoreValue: function (metaStoreComponent) {
+		var hiveHostName = App.db.getMasterComponentHosts().findProperty('component', 'Hive Metastore');
+		metaStoreComponent.set('component_value', hiveHostName.hostName);
+	},
+
+	loadHiveDbValue: function (dbComponent) {
+		dbComponent.set('component_value', 'MySQL');
+	},
+
+	loadHbase: function (hbaseObj) {
+		hbaseObj.service_components.forEach(function (_component) {
+			switch (_component.display_name) {
+				case 'Master':
+					this.loadMasterValue(_component);
+					break;
+				case 'Region Servers':
+					this.loadRegionServerValue(_component);
+					break;
+				default:
+			}
+		}, this);
+		this.get('services').pushObject(hbaseObj);
+	},
+
+	loadMasterValue: function (hbaseMaster) {
+		var hbaseHostName = App.db.getMasterComponentHosts().findProperty('component', 'HBase Master');
+		hbaseMaster.set('component_value', hbaseHostName.hostName);
+	},
+
+	loadRegionServerValue: function (rsComponent) {
+		var rsHosts = App.db.getSlaveComponentHosts().findProperty('displayName', 'RegionServer');
+		var totalRsHosts = rsHosts.hosts.length;
+		var rsHostGroups = [];
+		rsHosts.hosts.forEach(function (_ttHost) {
+			rsHostGroups.push(_ttHost.group);
+		}, this);
+		var totalGroups = rsHostGroups.uniq().length;
+		var groupLabel;
+		if (totalGroups == 1) {
+			groupLabel = 'group';
+		} else {
+			groupLabel = 'groups';
+		}
+		rsComponent.set('component_value', totalRsHosts + ' hosts '  + '(' + totalGroups + ' ' + groupLabel + ')');
+	},
+
+	loadZk: function (zkObj) {
+		zkObj.get('service_components').forEach(function (_component) {
+			switch (_component.get('display_name')) {
+				case 'Servers':
+					this.loadZkServerValue(_component);
+					break;
+				default:
+			}
+		}, this);
+		this.get('services').pushObject(zkObj);
+	},
+
+	loadZkServerValue: function (serverComponent) {
+		var zkHostNames = App.db.getMasterComponentHosts().filterProperty('component', 'ZooKeeper').length;
+		var hostSuffix;
+		if (zkHostNames === 1) {
+			hostSuffix = 'host';
+		} else {
+			hostSuffix = 'hosts';
+		}
+		serverComponent.set('component_value', zkHostNames + ' ' + hostSuffix);
+	},
+
+	loadOozie: function (oozieObj) {
+		oozieObj.get('service_components').forEach(function (_component) {
+			switch (_component.get('display_name')) {
+				case 'Server':
+					this.loadOozieServerValue(_component);
+					break;
+				default:
+			}
+		}, this);
+		this.get('services').pushObject(oozieObj);
+	},
+
+	loadOozieServerValue: function (oozieServer) {
+		var oozieServerName = App.db.getMasterComponentHosts().findProperty('component', 'Oozie Server');
+		oozieServer.set('component_value', oozieServerName.hostName);
+	},
+
+	loadNagios: function (nagiosObj) {
+		nagiosObj.service_components.forEach(function (_component) {
+			switch (_component.display_name) {
+				case 'Server':
+					this.loadNagiosServerValue(_component);
+					break;
+				case 'Administrator':
+					this.loadNagiosAdminValue(_component);
+					break;
+				default:
+			}
+		}, this);
+		this.get('services').pushObject(nagiosObj);
+	},
+
+	loadNagiosServerValue: function (nagiosServer) {
+		var nagiosServerName = App.db.getMasterComponentHosts().findProperty('component', 'Nagios Server');
+		nagiosServer.set('component_value', nagiosServerName.hostName);
+	},
+
+	loadNagiosAdminValue: function (nagiosAdmin) {
+		var adminLoginName = App.db.getServiceConfigProperties().findProperty('name', 'nagios_web_login');
+		var adminEmail = App.db.getServiceConfigProperties().findProperty('name', 'nagios_contact');
+		nagiosAdmin.set('component_value', adminLoginName.value + ' / (' + adminEmail.value +')');
+	},
+
+	loadGanglia: function (gangliaObj) {
+		gangliaObj.get('service_components').forEach(function (_component) {
+			switch (_component.get('display_name')) {
+				case 'Server':
+					this.loadGangliaServerValue(_component);
+					break;
+				default:
+			}
+		}, this);
+		this.get('services').pushObject(gangliaObj);
+	},
+
+	loadGangliaServerValue: function (gangliaServer) {
+		var gangliaServerName = App.db.getMasterComponentHosts().findProperty('component', 'Ganglia Collector');
+		gangliaServer.set('component_value', gangliaServerName.hostName);
 	},
 
 	submit: function () {
@@ -74,6 +355,9 @@ App.InstallerStep8Controller = Em.ArrayC
 
 	},
 
+
+	/* Following create* functions are called on submitting step8 */
+
 	createCluster: function () {
 		var self = this;
 		var clusterName = this.findProperty('config_name', 'cluster').config_value;
@@ -207,7 +491,6 @@ App.InstallerStep8Controller = Em.ArrayC
 				console.log("TRACE: STep8 -> In success function for the createComponent with new host call");
 				console.log("TRACE: STep8 -> value of the url is: " + url);
 				console.log("TRACE: STep8 -> value of the received data is: " + jsonData);
-
 			},
 
 			error: function (request, ajaxOptions, error) {
@@ -221,22 +504,8 @@ App.InstallerStep8Controller = Em.ArrayC
 })
 
 
-/*
- doConfigsUneditable: function () {
- this.content.forEach(function (_service) {
- _service.get('configs').forEach(function (_serviceConfig) {
- console.log('value of isEditable before for: ' + _serviceConfig.name);
- console.log('value of isEditable before: ' + _serviceConfig.isEditable);
- console.log('value of displayType before: ' + _serviceConfig.displayType);
- _serviceConfig.set('isEditable', false);
- _serviceConfig.set('displayType', 'string');
- console.log('value of isEditable after for: ' + _serviceConfig.name);
- console.log('value of isEditable after: ' + _serviceConfig.isEditable);
- console.log('value of displayType after: ' + _serviceConfig.displayType);
- }, this);
- }, this);
- }
- + 
- */
-  
-  
+
+
+
+
+

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/data/mock/services.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/data/mock/services.js?rev=1399503&r1=1399502&r2=1399503&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/data/mock/services.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/data/mock/services.js Thu Oct 18 01:18:54 2012
@@ -82,12 +82,14 @@ module.exports = [
   },
   {
     serviceName: 'ZOOKEEPER',
+	  displayName: 'ZooKeeper',
     isDisabled: false,
     isSelected: true,
     isHidden: true
   },
   {
     serviceName: 'HCATALOG',
+	  displayName: 'HCatalog',
     isDisabled: false,
     isSelected: true,
     isHidden: true

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/data/review_configs.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/data/review_configs.js?rev=1399503&r1=1399502&r2=1399503&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/data/review_configs.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/data/review_configs.js Thu Oct 18 01:18:54 2012
@@ -16,124 +16,141 @@
  * limitations under the License.
  */
 
-module.exports = new Ember.Set([
+module.exports = [
 
-  {
-    config_name: 'cluster',
-    display_name: 'Cluster Name',
-    config_value: ''
-  },
-  {
-    config_name: 'hosts',
-    display_name: 'Total Hosts',
-    config_value: ''
-  },
-  {
-    config_name: 'Repo',
-    display_name: 'Local Repository',
-    config_value: ''
-  },
-  {
-    config_name: 'services',
-    display_name: 'Services',
-    config_value: [
-      {
-        service_name: 'HDFS',
-        service_components:  [
-          {
-            display_name: 'NameNode',
-            component_value: ''
-          },
-          {
-            display_name: 'SecondaryNameNode',
-            component_value: ''
-          },
-          {
-            display_name: 'DataNodes',
-            component_value: ''
-          }
-        ]
-      },
-      {
-        service_name: 'MapReduce',
-        service_components:  [
-          {
-            display_name: 'JobTracker',
-            component_value: ''
-          },
-          {
-            display_name: 'TaskTrackers',
-            component_value: ''
-          }
-        ]
-      },
-      {
-        service_name: 'Hive + HCatalog',
-        service_components:  [
-          {
-            display_name: 'Hive Metastore Server',
-            component_value: ''
-          },
-          {
-            display_name: 'Database',
-            component_value: ''
-          }
-        ]
-      },
-      {
-        service_name: 'HBase',
-        service_components:  [
-          {
-            display_name: 'Master',
-            component_value: ''
-          },
-          {
-            display_name: 'Region Servers',
-            component_value: ''
-          }
-        ]
-      },
-      {
-        service_name: 'ZooKeeper',
-        service_components:  [
-          {
-            display_name: 'Servers',
-            component_value: ''
-          }
-        ]
-      },
-      {
-        service_name: 'Oozie',
-        service_components:  [
-          {
-            display_name: 'Server',
-            component_value: ''
-          }
-        ]
-      },
-      {
-        service_name: 'Nagios',
-        service_components:  [
-          {
-            display_name: 'Server',
-            component_value: ''
-          },
-          {
-            display_name: 'Administrator',
-            component_value: ''
-          }
-        ]
-      },
-      {
-        service_name: 'Ganglia',
-        service_components:  [
-          {
-            display_name: 'Server',
-            component_value: ''
-          }
-        ]
-      }
+	{
+		config_name: 'cluster',
+		display_name: 'Cluster Name',
+		config_value: ''
+	},
+	{
+		config_name: 'hosts',
+		display_name: 'Total Hosts',
+		config_value: ''
+	},
+	{
+		config_name: 'Repo',
+		display_name: 'Local Repository',
+		config_value: ''
+	},
+	{
+		config_name: 'services',
+		display_name: 'Services',
+		config_value: [
+			Ember.Object.create({
+				service_name: 'HDFS',
+				display_name: 'HDFS',
+				service_components: [
+					Ember.Object.create({
+						display_name: 'NameNode',
+						component_value: ''
+					}),
+					Ember.Object.create({
+						display_name: 'SecondaryNameNode',
+						component_value: ''
+					}),
+					Ember.Object.create({
+						display_name: 'DataNodes',
+						component_value: ''
+					})
+				]
+			}),
+			Ember.Object.create({
+				service_name: 'MAPREDUCE',
+				display_name: 'MapReduce',
+				service_components: [
+					Ember.Object.create({
+						display_name: 'JobTracker',
+						component_value: ''
+					}),
+					Ember.Object.create({
+						display_name: 'TaskTrackers',
+						component_value: ''
+					})
+				]
+			}),
+			Ember.Object.create({
+				service_name: 'HIVE',
+				display_name: 'Hive + HCatalog',
+				service_components: [
+					Ember.Object.create({
+						display_name: 'Hive Metastore Server',
+						component_value: ''
+					}),
+					Ember.Object.create({
+						display_name: 'Database',
+						component_value: ''
+					})
+				]
+			}),
+			Ember.Object.create({
+				service_name: 'HBASE',
+				display_name: 'HBase',
+				service_components: [
+					Ember.Object.create({
+						display_name: 'Master',
+						component_value: ''
+					}),
+					Ember.Object.create({
+						display_name: 'Region Servers',
+						component_value: ''
+					})
+				]
+			}),
+			Ember.Object.create({
+				service_name: 'ZOOKEEPER',
+				display_name: 'ZooKeeper',
+				service_components: [
+					Ember.Object.create({
+						display_name: 'Servers',
+						component_value: ''
+					})
+				]
+			}),
+			Ember.Object.create({
+				service_name: 'OOZIE',
+				display_name: 'Oozie',
+				service_components: [
+					Ember.Object.create({
+						display_name: 'Server',
+						component_value: ''
+					})
+				]
+			}),
+			Ember.Object.create({
+				service_name: 'NAGIOS',
+				display_name: 'Nagios',
+				service_components: [
+					Ember.Object.create({
+						display_name: 'Server',
+						component_value: ''
+					}),
+					Ember.Object.create({
+						display_name: 'Administrator',
+						component_value: ''
+					})
+				]
+			}),
+			Ember.Object.create({
+				service_name: 'GANGLIA',
+				display_name: 'Ganglia',
+				service_components: [
+					Ember.Object.create({
+						display_name: 'Server',
+						component_value: ''
+					})
+				]
+			}),
+			Ember.Object.create({
+				service_name: 'HCATALOG',
+				display_name: 'HCatalog',
+				service_components: [
+					Ember.Object.create({
 
-    ]
-  }
-]);
\ No newline at end of file
+					})
+				]
+			})
+
+		]
+	}
+];
\ No newline at end of file

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step3.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step3.hbs?rev=1399503&r1=1399502&r2=1399503&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step3.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step3.hbs Thu Oct 18 01:18:54 2012
@@ -17,92 +17,98 @@
 -->
 
 <div id="confirm-hosts">
-<h2>{{t installer.step3.header}}</h2>
-<p class="alert alert-info">{{t installer.step3.body}}</p>
-<div class="box">
-  <div class="box-header">
-    <div class="button-section">
-      <a class="btn btn-primary decommission" {{bindAttr disabled="noHostsSelected"}}
-         href="#" {{action retrySelectedHosts target="controller"}}><i
-        class="icon-repeat icon-white"></i>
-        Retry
-      </a>
-      <a class="btn btn-primary" {{bindAttr disabled="noHostsSelected"}}
-         href="#" {{action removeSelectedHosts target="controller" }}><i
-        class="icon-trash icon-white"></i>
-        Remove
-      </a>
-      <a class="btn btn-info"
-         href="#" {{action mockBtn target="controller" }}>
-        mockData
-      </a>
-      <a class="btn btn-info"
-         href="#" {{action pollBtn target="controller" }}>
-         pollData
-      </a>
+	<h2>{{t installer.step3.header}}</h2>
 
-      <div id="host-filter" class="dropdown pull-right">
-        {{view Ember.Select class="pull-right"
+	<p class="alert alert-info">{{t installer.step3.body}}</p>
+
+	<div class="box">
+		<div class="box-header">
+			<div class="button-section">
+				<a class="btn btn-primary decommission" {{bindAttr disabled="noHostsSelected"}}
+					 href="#" {{action retrySelectedHosts target="controller"}}><i
+								class="icon-repeat icon-white"></i>
+					Retry
+				</a>
+				<a class="btn btn-primary" {{bindAttr disabled="noHostsSelected"}}
+					 href="#" {{action removeSelectedHosts target="controller" }}><i
+								class="icon-trash icon-white"></i>
+					Remove
+				</a>
+				<a class="btn btn-info"
+					 href="#" {{action mockBtn target="controller" }}>
+					mockData
+				</a>
+				<a class="btn btn-info"
+					 href="#" {{action pollBtn target="controller" }}>
+					pollData
+				</a>
+
+				<div id="host-filter" class="dropdown pull-right">
+					{{view Ember.Select class="pull-right"
        contentBinding="controller.categories"
        selectionBinding="controller.category"
        }}
-        <h5 class="pull-right">Show:</h5>
-      </div>
-
-    </div>
-  </div>
+					<h5 class="pull-right">Show:</h5>
+				</div>
 
+			</div>
+		</div>
 
-  <table class="table table-bordered table-striped">
-    <thead>
-    <tr>
-      <th class="span1">{{view Ember.Checkbox checkedBinding="allChecked"}}</th>
-      <th class="span2">Status</th>
-      <!--  given by the parsing function that parses data from bootstrap call -->
-      <th class="span4">Host</th>
-      <!-- retrieved from local storage initially -->
-      <th class="span2">Message</th>
-      <!-- given by the parsing function that parses data from bootstrap call, dynamically assign the color -->
-      <th class="span3">Action</th>
-      <!-- trash icon -->
-      <!-- retry icon -->
-    </tr>
-    </thead>
-
-    <tbody>
-
-    {{#each host in visibleHosts}}
-    {{#view App.InstallerHostView categoryBinding="controller.category" hostInfoBinding="host"}}
-      <td>
-        {{view Ember.Checkbox checkedBinding="host.isChecked"}}
-      </td>
-      <td>
-        {{host.bootStatus}}
-      </td>
-      <td>
-        {{host.name}}
-      </td>
-      <td>
-        <a  href="javascript:void(null)" data-toggle="modal" {{action hostLogPopup target="controller"}}>{{host.message}}</a>
-      </td>
-      <td>
-        {{#if view.isRemovable}}<a class="btn btn-mini" {{action remove target="view"}}><i class="icon-trash"></i> Remove</a>{{/if}}
-        {{#if view.isRetryable}}<a class="btn btn-mini" {{action retry target="view"}}><i class="icon-repeat"></i> Retry</a>{{/if}}
-      </td>
-    {{/view}}
-    {{/each}}
-
-    </tbody>
-
-  </table>
-  <div class="box-footer">
-    <hr/>
-    <div class="footer-pagination">
-    </div>
-  </div>
-</div>
-<div class="btn-area">
-  <a class="btn pull-left" {{action back}}>&larr; Back</a>
-  <a class="btn btn-success pull-right" {{bindAttr disabled="isSubmitDisabled"}} {{action submit target="controller"}}>Next &rarr;</a>
-</div>
+		<div class="pre-scrollable" style="max-height: 440px;">
+			<table class="table table-bordered table-striped">
+				<thead>
+				<tr>
+					<th class="span1">{{view Ember.Checkbox checkedBinding="allChecked"}}</th>
+					<th class="span2">Status</th>
+					<!--  given by the parsing function that parses data from bootstrap call -->
+					<th class="span4">Host</th>
+					<!-- retrieved from local storage initially -->
+					<th class="span2">Message</th>
+					<!-- given by the parsing function that parses data from bootstrap call, dynamically assign the color -->
+					<th class="span3">Action</th>
+					<!-- trash icon -->
+					<!-- retry icon -->
+				</tr>
+				</thead>
+
+				<tbody>
+
+				{{#each host in visibleHosts}}
+				{{#view App.InstallerHostView categoryBinding="controller.category" hostInfoBinding="host"}}
+				<td>
+					{{view Ember.Checkbox checkedBinding="host.isChecked"}}
+				</td>
+				<td>
+					{{host.bootStatus}}
+				</td>
+				<td>
+					{{host.name}}
+				</td>
+				<td>
+					<a href="javascript:void(null)"
+						 data-toggle="modal" {{action hostLogPopup target="controller"}}>{{host.message}}</a>
+				</td>
+				<td>
+					{{#if view.isRemovable}}<a class="btn btn-mini" {{action remove target="view"}}><i class="icon-trash"></i>
+					Remove</a>{{/if}}
+					{{#if view.isRetryable}}<a class="btn btn-mini" {{action retry target="view"}}><i class="icon-repeat"></i>
+					Retry</a>{{/if}}
+				</td>
+				{{/view}}
+				{{/each}}
+
+				</tbody>
+
+			</table>
+		</div>
+		<div class="box-footer">
+			<hr/>
+			<div class="footer-pagination">
+			</div>
+		</div>
+	</div>
+	<div class="btn-area">
+		<a class="btn pull-left" {{action back}}>&larr; Back</a>
+		<a class="btn btn-success pull-right" {{bindAttr disabled="isSubmitDisabled"}} {{action submit target="controller"}}>Next &rarr;</a>
+	</div>
 </div>
\ No newline at end of file

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step8.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step8.hbs?rev=1399503&r1=1399502&r2=1399503&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step8.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step8.hbs Thu Oct 18 01:18:54 2012
@@ -17,17 +17,34 @@
 -->
 
 <h2>{{t installer.step8.header}}</h2>
+
 <div class="alert alert-info">
-    {{t installer.step8.body}}
+	{{t installer.step8.body}}
 </div>
+<div id="step8-content" class="well pre-scrollable" style="max-height: 570px;">
+	{{#each item in controller}}
+	<p>
+		<b>{{item.display_name}}</b> : {{item.config_value}}
+	</p>
+	{{/each}}
 
-{{#each item in controller}}
-<p>
-    {{item.display_name}} : {{item.config_value}}
-</p>
-{{/each}}
+	<div>
+		<p><b>Services</b></p>
+		{{#each controller.services}}
+		<div>
+			<ul><em><b>{{display_name}}</b></em>
 
+				<div>
+					{{#each component in this.service_components}}
+					<ul><span class="text text-info">{{component.display_name }} : </span>{{component.component_value}}</ul>
+					{{/each}}
+				</div>
+			</ul>
+		</div>
+		{{/each}}
+	</div>
+</div>
 <div class="btn-area">
-    <a class="btn pull-left" {{action back}}>&larr; Back</a>
-    <a class="btn btn-success pull-right" {{action submit target="controller"}}>Next &rarr;</a>
+	<a class="btn pull-left" {{action back}}>&larr; Back</a>
+	<a class="btn btn-success pull-right" {{action submit target="controller"}}>Next &rarr;</a>
 </div>
\ No newline at end of file

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step9.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step9.hbs?rev=1399503&r1=1399502&r2=1399503&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step9.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step9.hbs Thu Oct 18 01:18:54 2012
@@ -18,103 +18,106 @@
 
 <div id="deploy">
 
-<h2>{{t installer.step9.header}}</h2>
-<p class="alert alert-info">{{t installer.step9.body}}</p>
+	<h2>{{t installer.step9.header}}</h2>
 
-<div id="overallProgress">
-  {{view.isStepCompleted}}
-  <div class="row-fluid">
-    <div class="span10">
-      <div {{bindAttr class="isStepCompleted::progress-striped isStepCompleted::active view.barColor :progress"}}>
-        <div class="bar" {{bindAttr style="view.barWidth"}}><!--<strong style="color: #00008b;">Overall Progress</strong>-->
-        </div>
-      </div>
-    </div>
-    <div class="span2">{{progress}}% overall</div>
-  </div>
-</div>
-
-<div class="box">
-  <div class="box-header">
-    <div class="pull-left">
-      <a
-        class="btn btn-primary " {{bindAttr disabled="isSubmitDisabled"}}
-        href="#" {{action retry target="controller"}}><i
-        class="icon-repeat icon-white"></i>
-        Retry
-      </a>
-      <a
-        class="btn btn-info"
-        href="#" {{action mockBtn target="controller"}}>
-        mockData
-      </a>
-      <a
-        class="btn btn-primary "
-        href="#" {{action pollBtn target="controller"}}><i
-        class="icon-repeat icon-white"></i>
-        pollData
-      </a>
-    </div>
-
-  </div>
-  <table id="deploy-status-by-host" class="table table-bordered table-striped">
-    <thead>
-    <tr>
-      <th class="host">
-        Host
-      </th>
-      <th class="status">Status</th>
-      <!--  given by the parsing function that parses data from bootstrap call -->
-      <th class="message">Message</th>
-      <!-- retrieved from local storage initially -->
-    </tr>
-    </thead>
-
-    <tbody>
-
-    {{#each host in controller}}
-    {{#view App.HostStatusView objBinding="host"}}
-    <td>
-      {{host.name}}
-    </td>
-    <td>
-        <div class="progress-bar pull-left">
-          <div {{bindAttr class="isStepCompleted::progress-striped isStepCompleted::active view.barColor :progress"}}>
-            <div class="bar" {{bindAttr style="view.barWidth"}}>
-            </div>
-          </div>
-        </div>
-        <div class="progress-percentage pull-left">{{host.progress}}%</div>
-    </td>
-    <td>
-      <a {{bindAttr class="view.isFailed:text-error view.isSuccess:text-success view.isWarning:text-warning"}}
-        href="javascript:void(null)"
-        data-toggle="modal" {{action "hostLogPopup" target="controller"}}>{{host.message}}</a>
-    </td>
-
-    {{/view}}
-    {{/each}}
-
-    </tbody>
-  </table>
-  <div class="box-footer">
-    <hr/>
-    <div class="footer-pagination">
-    </div>
-  </div>
-</div>
-
-<div>
-  {{#if view.resultMsg}}
-  <p {{bindAttr class="view.resultMsgColor"}}>{{view.resultMsg}}</p>
-  {{/if}}
-  <div class="btn-area">
-    <a
-      class="btn pull-left" {{bindAttr disabled="isSubmitDisabled"}} {{action back target="controller"}}>&larr;
-      Back</a>
-    <a
-      class="btn btn-success pull-right" {{bindAttr disabled="isSubmitDisabled"}} {{action submit target="controller"}}>Next &rarr;</a>
-  </div>
-</div>
+	<p class="alert alert-info">{{t installer.step9.body}}</p>
 
-</div>
\ No newline at end of file
+	<div id="overallProgress">
+		{{view.isStepCompleted}}
+		<div class="row-fluid">
+			<div class="span10">
+				<div {{bindAttr class="isStepCompleted::progress-striped isStepCompleted::active view.barColor :progress"}}>
+					<div class="bar" {{bindAttr style="view.barWidth"}}>
+						<!--<strong style="color: #00008b;">Overall Progress</strong>-->
+					</div>
+				</div>
+			</div>
+			<div class="span2">{{progress}}% overall</div>
+		</div>
+	</div>
+
+	<div class="box">
+		<div class="box-header">
+			<div class="pull-left">
+				<a
+								class="btn btn-primary " {{bindAttr disabled="isSubmitDisabled"}}
+								href="#" {{action retry target="controller"}}><i
+								class="icon-repeat icon-white"></i>
+					Retry
+				</a>
+				<a
+								class="btn btn-info"
+								href="#" {{action mockBtn target="controller"}}>
+					mockData
+				</a>
+				<a
+								class="btn btn-primary "
+								href="#" {{action pollBtn target="controller"}}><i
+								class="icon-repeat icon-white"></i>
+					pollData
+				</a>
+			</div>
+
+		</div>
+		<div class="pre-scrollable" style="max-height: 750px;">
+			<table id="deploy-status-by-host" class="table table-bordered table-striped">
+				<thead>
+				<tr>
+					<th class="host">
+						Host
+					</th>
+					<th class="status">Status</th>
+					<!--  given by the parsing function that parses data from bootstrap call -->
+					<th class="message">Message</th>
+					<!-- retrieved from local storage initially -->
+				</tr>
+				</thead>
+
+				<tbody>
+				{{#each host in controller}}
+				{{#view App.HostStatusView objBinding="host"}}
+				<td>
+					{{host.name}}
+				</td>
+				<td>
+					<div class="progress-bar pull-left">
+						<div {{bindAttr class="isStepCompleted::progress-striped isStepCompleted::active view.barColor :progress"}}>
+							<div class="bar" {{bindAttr style="view.barWidth"}}>
+							</div>
+						</div>
+					</div>
+					<div class="progress-percentage pull-left">{{host.progress}}%</div>
+				</td>
+				<td>
+					<a {{bindAttr class="view.isFailed:text-error view.isSuccess:text-success view.isWarning:text-warning"}}
+									href="javascript:void(null)"
+									data-toggle="modal" {{action "hostLogPopup" target="controller"}}>{{host.message}}</a>
+				</td>
+
+				{{/view}}
+				{{/each}}
+
+				</tbody>
+			</table>
+			</div>
+			<div class="box-footer">
+				<hr/>
+				<div class="footer-pagination">
+				</div>
+			</div>
+		</div>
+
+		<div>
+			{{#if view.resultMsg}}
+			<p {{bindAttr class="view.resultMsgColor"}}>{{view.resultMsg}}</p>
+			{{/if}}
+			<div class="btn-area">
+				<a
+								class="btn pull-left" {{bindAttr disabled="isSubmitDisabled"}} {{action back target="controller"}}>&larr;
+					Back</a>
+				<a
+								class="btn btn-success pull-right" {{bindAttr disabled="isSubmitDisabled"}} {{action submit target="controller"}}>Next &rarr;</a>
+			</div>
+		</div>
+
+	</div>
\ No newline at end of file

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/installer/step8_view.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/installer/step8_view.js?rev=1399503&r1=1399502&r2=1399503&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/installer/step8_view.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/installer/step8_view.js Thu Oct 18 01:18:54 2012
@@ -25,13 +25,6 @@ App.InstallerStep8View = Em.View.extend(
 
   didInsertElement: function () {
     var controller = this.get('controller');
-    console.log('***^^^****2 over here*****^^^^*******');
     controller.loadStep();
-    //this.doConfigsUneditable();
-  },
-
-  doConfigsUneditable: function() {
-
   }
-
 });
\ No newline at end of file