Author: yusaku
Date: Tue Jan 22 21:54:09 2013
New Revision: 1437204
URL: http://svn.apache.org/viewvc?rev=1437204&view=rev
Log:
AMBARI-1248. Refactoring of update, services and hosts mapper. (yusaku)
Modified:
incubator/ambari/trunk/CHANGES.txt
incubator/ambari/trunk/ambari-web/app/mappers/hosts_mapper.js
incubator/ambari/trunk/ambari-web/app/mappers/server_data_mapper.js
incubator/ambari/trunk/ambari-web/app/mappers/service_mapper.js
incubator/ambari/trunk/ambari-web/app/mappers/status_mapper.js
incubator/ambari/trunk/ambari-web/app/models/host.js
incubator/ambari/trunk/ambari-web/app/models/service.js
incubator/ambari/trunk/ambari-web/app/utils/http_client.js
Modified: incubator/ambari/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/CHANGES.txt?rev=1437204&r1=1437203&r2=1437204&view=diff
==============================================================================
--- incubator/ambari/trunk/CHANGES.txt (original)
+++ incubator/ambari/trunk/CHANGES.txt Tue Jan 22 21:54:09 2013
@@ -17,6 +17,8 @@ Trunk (unreleased changes):
IMPROVEMENTS
+ AMBARI-1248. Refactoring of update, services and hosts mapper. (yusaku)
+
AMBARI-1247. Disable links for previous steps in left nav on Summary step.
(yusaku)
Modified: incubator/ambari/trunk/ambari-web/app/mappers/hosts_mapper.js
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/mappers/hosts_mapper.js?rev=1437204&r1=1437203&r2=1437204&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/mappers/hosts_mapper.js (original)
+++ incubator/ambari/trunk/ambari-web/app/mappers/hosts_mapper.js Tue Jan 22
21:54:09 2013
@@ -18,8 +18,8 @@
var App = require('app');
App.hostsMapper = App.QuickDataMapper.create({
+
model: App.Host,
- tmp_result:[],
config: {
id: 'Hosts.host_name',
host_name: 'Hosts.host_name',
@@ -42,23 +42,17 @@ App.hostsMapper = App.QuickDataMapper.cr
load_fifteen: 'metrics.load.load_fifteen',
cpu_usage: 'cpu_usage',
memory_usage: 'memory_usage',
- $network_usage: 36,
- $io_usage: 39,
last_heart_beat_time: "Hosts.last_heartbeat_time",
os_arch: 'Hosts.os_arch',
os_type: 'Hosts.os_type',
ip: 'Hosts.ip'
},
map: function (json) {
- var self = this;
- if (!this.get('model')) {
- return;
- }
+
if (json.items) {
+ var result = [];
json.items.forEach(function (item) {
- var result = [];
- self.tmp_result=[];
// Disk Usage
if (item.metrics && item.metrics.disk && item.metrics.disk.disk_total
&& item.metrics.disk.disk_free) {
@@ -78,48 +72,15 @@ App.hostsMapper = App.QuickDataMapper.cr
item.memory_usage = memUsedPercent.toFixed(1);
}
- if(App.Host.find(item.Hosts.host_name).get("hostName") ==
item.Hosts.host_name){ // UPDATE
-
- App.Host.find(item.Hosts.host_name).set("cpuUsage", item.cpu_usage);
- App.Host.find(item.Hosts.host_name).set("diskUsage",
item.disk_usage);
- App.Host.find(item.Hosts.host_name).set("memoryUsage",
item.memory_usage);
-
- self.tmp_result.push(this.parseIt(item, this.config));
-
- $.map(self.tmp_result[0], function (e,a){
- //console.log(a, "------------------", self.tmp_result[0][a])
- if(typeof(e) === "string" || typeof(e) === "number")
- {
- var modelName=self.parseName(a);
-
if(typeof(App.Host.find(self.tmp_result[0].host_name).get(modelName)) !==
"undefined"){
- App.Host.find(self.tmp_result[0].host_name).set(modelName,
self.tmp_result[0][a]);
- // console.log(modelName, "------------------",
self.tmp_result[0][a])
- }
- }
- })
-
- }else{ // ADD
-
- item.host_components.forEach(function (host_component) {
- host_component.id = host_component.HostRoles.component_name + "_"
+ host_component.HostRoles.host_name;
- }, this);
- result.push(this.parseIt(item, this.config));
- App.store.loadMany(this.get('model'), result);
+ item.host_components.forEach(function (host_component) {
+ host_component.id = host_component.HostRoles.component_name + "_" +
host_component.HostRoles.host_name;
+ }, this);
+ result.push(this.parseIt(item, this.config));
- }
}, this);
- //console.log(this.get('model'), result);
-
- }
- },
- parseName:function(name){
- var new_name = name.replace(/_\w/g,replacer);
- function replacer(str, p1, p2, offset, s)
- {
- return str[1].toUpperCase();
+ App.store.loadMany(this.get('model'), result);
}
- return new_name;
}
});
Modified: incubator/ambari/trunk/ambari-web/app/mappers/server_data_mapper.js
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/mappers/server_data_mapper.js?rev=1437204&r1=1437203&r2=1437204&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/mappers/server_data_mapper.js
(original)
+++ incubator/ambari/trunk/ambari-web/app/mappers/server_data_mapper.js Tue Jan
22 21:54:09 2013
@@ -17,7 +17,6 @@
*/
var App = require('app');
-var stringUtils = require('utils/string_utils');
App.ServerDataMapper = Em.Object.extend({
jsonKey: false,
@@ -87,6 +86,9 @@ App.QuickDataMapper = App.ServerDataMapp
result[i].push(this.parseIt(_data[index], config[i]));
}
}
+ if(_type == 'array'){
+ result[i] = result[i].sort();
+ }
}
}
}
@@ -122,35 +124,5 @@ App.QuickDataMapper = App.ServerDataMapp
}
return json;
- },
- /**
- * update fields in record
- * @param record
- * @param json
- * @param fieldsNotUpdate
- */
- updateRecord: function (record, json, fieldsNotUpdate) {
- for (var field in json) {
- if (json[field] !== undefined && !fieldsNotUpdate.contains(field)) {
- if(json[field] instanceof Array){
- this.updateHasMany(record, stringUtils.underScoreToCamelCase(field),
json[field]);
- } else {
- record.set(stringUtils.underScoreToCamelCase(field), json[field]);
- }
- }
- }
- },
- /**
- * update fields with hasMany type
- * @param record
- * @param field
- * @param items
- */
- updateHasMany: function(record, field, items ){
- var hasMany = record.get(field);
- hasMany.clear();
- items.forEach(function (item) {
- hasMany.pushObject(hasMany.type.find(item));
- });
}
});
Modified: incubator/ambari/trunk/ambari-web/app/mappers/service_mapper.js
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/mappers/service_mapper.js?rev=1437204&r1=1437203&r2=1437204&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/mappers/service_mapper.js (original)
+++ incubator/ambari/trunk/ambari-web/app/mappers/service_mapper.js Tue Jan 22
21:54:09 2013
@@ -16,7 +16,6 @@
*/
var App = require('app');
-var stringUtils = require('utils/string_utils');
App.servicesMapper = App.QuickDataMapper.create({
servicesSortOrder: [
@@ -49,7 +48,6 @@ App.servicesMapper = App.QuickDataMapper
id: 'ServiceInfo.service_name',
service_name: 'ServiceInfo.service_name',
work_status: 'ServiceInfo.state',
- $service_audit: [ 1, 2, 3 ],
$alerts: [ 1, 2, 3 ],
host_components: 'host_components'
},
@@ -133,27 +131,13 @@ App.servicesMapper = App.QuickDataMapper
var finalConfig = jQuery.extend({}, this.config);
var finalJson = [];
item.host_components = [];
-// var json = this.parseIt(item, this.config);
-// if(App.Service.find().someProperty('id', json.id)){
-// var fieldsToUpdate = [
-// 'work_status',
-// 'components',
-// 'host_components'
-// ]
-// this.updateRecord(App.Service.find().findProperty('id', json.id),
json, fieldsToUpdate);
-// return;
-// }
-
- if
(this.get('model').find(item.ServiceInfo.service_name).get('isLoaded')) {
- this.update(item);
- return;
- }
item.components.forEach(function (component) {
component.host_components.forEach(function (host_component) {
host_component.id = host_component.HostRoles.component_name + "_"
+ host_component.HostRoles.host_name;
item.host_components.push(host_component.id);
- }, this)
+ }, this);
}, this);
+ item.host_components.sort();
if (item && item.ServiceInfo && item.ServiceInfo.service_name ==
"HDFS") {
// Change the JSON so that it is easy to map
@@ -189,157 +173,15 @@ App.servicesMapper = App.QuickDataMapper
}, this)
}, this)
}, this);
- var newHostComponents = [];
+
result.forEach(function(hcJson){
- hcJson = this.calculateState(hcJson);
- hcJson.id = hcJson.component_name + '_' + hcJson.host_id;
- var component = App.HostComponent.find(hcJson.id);
- if (component && component.get('isLoaded')) { // UPDATE
- if (hcJson.work_status) {
- component.set('workStatus', hcJson.work_status);
- }
- if (hcJson.component_name) {
- component.set('componentName', hcJson.component_name);
- }
- if (hcJson.host_id) {
- component.set('host', App.Host.find(hcJson.host_id));
- }
- if (hcJson.service_id) {
- component.set('service', App.Service.find(hcJson.service_id));
- }
- } else {
- newHostComponents.push(hcJson);
- }
+ this.calculateState(hcJson);
}, this);
- if (newHostComponents.length > 0) {
- App.store.loadMany(this.get('model3'), newHostComponents);
- }
- }
- },
- update: function (service) {
- var finalJson;
- switch (service.ServiceInfo.service_name) {
- case 'HDFS':
- finalJson = this.hdfsMapper(service);
- App.HDFSService.find().map(function (e) {
- e.set("version", finalJson.version);
- e.set("nameNodeStartTime", finalJson.name_node_start_time);
- e.set("jvmMemoryHeapCommitted", finalJson.jvm_memory_heap_committed);
- e.set("jvmMemoryHeapUsed", finalJson.jvm_memory_heap_used);
- e.set("capacityUsed", finalJson.capacity_used);
- e.set("capacityTotal", finalJson.capacity_total);
- e.set("dfsTotalBlocks", finalJson.dfs_total_blocks);
- e.set("dfsCorruptBlocks", finalJson.dfs_corrupt_blocks);
- e.set("dfsMissingBlocks", finalJson.dfs_missing_blocks);
- e.set("dfsUnderReplicatedBlocks",
finalJson.dfs_under_replicated_blocks);
- e.set("dfsTotalFiles", finalJson.dfs_total_files);
- e.set("upgradeStatus", finalJson.upgrade_status);
- e.set("safeModeStatus", finalJson.safe_mode_status);
- // Live data nodes
- var dataNodes = e.get('liveDataNodes');
- if (dataNodes) {
- dataNodes.clear();
- finalJson.live_data_nodes.forEach(function (ldn) {
- dataNodes.pushObject(App.Host.find(ldn));
- });
- }
- // Decommission data nodes
- dataNodes = e.get('decommissionDataNodes');
- if (dataNodes) {
- dataNodes.clear();
- finalJson.decommission_data_nodes.forEach(function (ldn) {
- dataNodes.pushObject(App.Host.find(ldn));
- });
- }
- // Dead data nodes
- dataNodes = e.get('deadDataNodes');
- if (dataNodes) {
- dataNodes.clear();
- finalJson.dead_data_nodes.forEach(function (ldn) {
- dataNodes.pushObject(App.Host.find(ldn));
- });
- }
- // Data nodes
- dataNodes = e.get('dataNodes');
- if (dataNodes) {
- dataNodes.clear();
- finalJson.data_nodes.forEach(function (ldn) {
- dataNodes.pushObject(App.Host.find(ldn));
- });
- }
- });
- break;
- case 'MAPREDUCE':
- finalJson = this.mapreduceMapper(service);
- App.MapReduceService.find().map(function (e) {
- e.set("version", finalJson.version);
- e.set("jobTrackerStartTime", finalJson.job_tracker_start_time);
- e.set("jobTrackerHeapUsed", finalJson.job_tracker_heap_used);
- e.set("jobTrackerHeapMax", finalJson.job_tracker_heap_max);
- e.set("mapSlots", finalJson.map_slots);
- e.set("reduceSlots", finalJson.reduce_slots);
- e.set("jobsSubmitted", finalJson.jobs_submitted);
- e.set("jobsCompleted", finalJson.jobs_completed);
- e.set("mapSlotsOccupied", finalJson.map_slots_occupied);
- e.set("mapSlotsReserved", finalJson.map_slots_reserved);
- e.set("reduceSlotsOccupied", finalJson.reduce_slots_occupied);
- e.set("reduceSlotsReserved", finalJson.reduce_slots_reserved);
- e.set("mapsRunning", finalJson.maps_running);
- e.set("mapsWaiting", finalJson.maps_waiting);
- e.set("reducesRunning", finalJson.reduces_running);
- e.set("reducesWaiting", finalJson.reduces_waiting);
- e.set("trackersDecommissioned", finalJson.trackers_decommissioned);
-
- var taskTrackers = e.get('taskTrackers');
- if (taskTrackers) {
- taskTrackers.clear();
- finalJson.task_trackers.forEach(function (ldn) {
- taskTrackers.pushObject(App.Host.find(ldn));
- });
- }
-
- taskTrackers = e.get('aliveTrackers');
- if (taskTrackers) {
- taskTrackers.clear();
- finalJson.alive_trackers.forEach(function (ldn) {
- taskTrackers.pushObject(App.Host.find(ldn));
- });
- }
-
- })
- break;
- case 'HBASE':
- finalJson = this.hbaseMapper(service);
- App.HBaseService.find().map(function (e) {
- e.set("version", finalJson.version);
- e.set("masterStartTime", finalJson.master_start_time);
- e.set("masterActiveTime", finalJson.master_active_time);
- e.set("averageLoad", finalJson.average_load);
- e.set("regionsInTransition", finalJson.regions_in_transition);
- e.set("revision", finalJson.revision);
- e.set("heapMemoryUsed", finalJson.heap_memory_used);
- e.set("heapMemoryMax", finalJson.heap_memory_max);
-
- var regionServers = e.get('regionServers');
- if (regionServers) {
- regionServers.clear();
- finalJson.region_servers.forEach(function (ldn) {
- regionServers.pushObject(App.Host.find(ldn));
- });
- }
-
- })
- break;
- default:
- this.otherMapper(service);
- }
- },
- otherMapper: function (item) {
- var result = [];
- if (App.Service.find(item.ServiceInfo.service_name).get("serviceName") ==
item.ServiceInfo.service_name) {
- //update other service
+
+ App.store.loadMany(this.get('model3'), result);
}
},
+
hdfsMapper: function (item) {
var result = [];
var finalConfig = jQuery.extend({}, this.config);
@@ -471,22 +313,5 @@ App.servicesMapper = App.QuickDataMapper
finalJson = this.parseIt(item, finalConfig);
finalJson.quick_links = [13, 14, 15, 16, 17, 18];
return finalJson;
- },
- updateRecord: function (record, json, fieldsToUpdate) {
- for (var field in fieldsToUpdate) {
- if (json[field] !== undefined) {
- if(json[field] instanceof Array){
- this.updateHasMany(record, stringUtils.underScoreToCamelCase(field),
json[field]);
- } else {
- record.set(stringUtils.underScoreToCamelCase(field), json[field]);
- }
- }
- }
- },
- updateHasMany: function(record, field, items ){
- record.get(field).clear();
- items.forEach(function (item) {
-
record.get(field).pushObject(record.get(field).type.find().findProperty('id',
item));
- });
}
});
\ No newline at end of file
Modified: incubator/ambari/trunk/ambari-web/app/mappers/status_mapper.js
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/mappers/status_mapper.js?rev=1437204&r1=1437203&r2=1437204&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/mappers/status_mapper.js (original)
+++ incubator/ambari/trunk/ambari-web/app/mappers/status_mapper.js Tue Jan 22
21:54:09 2013
@@ -22,11 +22,6 @@ App.statusMapper = App.QuickDataMapper.c
work_status:'ServiceInfo.state'
},
- config2:{
- id:'ServiceComponentInfo.component_name',
- work_status:'host_components[0].HostRoles.state'
- },
-
config3:{
id:'id',
work_status:'HostRoles.state',
@@ -38,19 +33,9 @@ App.statusMapper = App.QuickDataMapper.c
if (json.items) {
var result = [];
json.items.forEach(function (item) {
-
- item.host_components = [];
- item.components.forEach(function (component) {
- component.host_components.forEach(function (host_component) {
- host_component.id = host_component.HostRoles.component_name + "_"
+ host_component.HostRoles.host_name;
- item.host_components.push(host_component.id);
- }, this)
- }, this);
-
result.push(this.parseIt(item, this.config));
}, this);
- //console.log(result)
var services = App.Service.find();
result.forEach(function(item){
var service = services.findProperty('id', item.id);
@@ -59,16 +44,18 @@ App.statusMapper = App.QuickDataMapper.c
}
})
+
+ //host_components
result = [];
json.items.forEach(function (item) {
item.components.forEach(function (component) {
component.host_components.forEach(function (host_component) {
+ host_component.id = host_component.HostRoles.component_name + "_"
+ host_component.HostRoles.host_name;
result.push(this.parseIt(host_component, this.config3));
}, this)
}, this)
}, this);
- //console.log(result)
var hostComponents = App.HostComponent.find();
result.forEach(function(item){
var hostComponent = hostComponents.findProperty('id', item.id);
Modified: incubator/ambari/trunk/ambari-web/app/models/host.js
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/models/host.js?rev=1437204&r1=1437203&r2=1437204&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/models/host.js (original)
+++ incubator/ambari/trunk/ambari-web/app/models/host.js Tue Jan 22 21:54:09
2013
@@ -45,8 +45,6 @@ App.Host = DS.Model.extend({
healthStatus: DS.attr('string'),
cpuUsage: DS.attr('number'),
memoryUsage: DS.attr('number'),
- networkUsage: DS.attr('number'),
- ioUsage: DS.attr('number'),
lastHeartBeatTime: DS.attr('number'),
osType: DS.attr("string"),
diskInfo: DS.attr('object'),
Modified: incubator/ambari/trunk/ambari-web/app/models/service.js
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/models/service.js?rev=1437204&r1=1437203&r2=1437204&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/models/service.js (original)
+++ incubator/ambari/trunk/ambari-web/app/models/service.js Tue Jan 22 21:54:09
2013
@@ -22,7 +22,6 @@ var App = require('app');
App.Service = DS.Model.extend({
serviceName: DS.attr('string'),
- serviceAudit: DS.hasMany('App.ServiceAudit'),
workStatus: DS.attr('string'),
alerts: DS.hasMany('App.Alert'),
Modified: incubator/ambari/trunk/ambari-web/app/utils/http_client.js
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/utils/http_client.js?rev=1437204&r1=1437203&r2=1437204&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/utils/http_client.js (original)
+++ incubator/ambari/trunk/ambari-web/app/utils/http_client.js Tue Jan 22
21:54:09 2013
@@ -56,6 +56,9 @@ App.HttpClient = Em.Object.create({
$.extend(options, {
url: url,
success: function (data) {
+ try {
+ App.store.commit();
+ } catch (err) {}
mapper.map(data);
},
error: errorHandler