in ambari-web/app/mappers/service_mapper.js [140:252]
map: function (json) {
if (!this.get('model')) {
return;
}
console.time('App.servicesMapper execution time');
if (json.items) {
// Host components
var hostComponents = [];
var services = [];
var previousComponentStatuses = App.cache['previousComponentStatuses'];
/**
* services contains constructed service-components structure from components array
*/
json.items.forEach(function (component) {
var service = services.findProperty('ServiceInfo.service_name', component.ServiceComponentInfo.service_name);
var serviceName = component.ServiceComponentInfo.service_name;
if (!service) {
service = {
ServiceInfo: {
service_name: component.ServiceComponentInfo.service_name
},
host_components: [],
components: []
};
services.push(service);
}
service.components.push(component);
component.host_components.forEach(function (host_component) {
host_component.id = host_component.HostRoles.component_name + "_" + host_component.HostRoles.host_name;
previousComponentStatuses[host_component.id] = host_component.HostRoles.state;
if (host_component.HostRoles.component_name == "HBASE_MASTER") {
this.config3.ha_status = 'metrics.hbase.master.IsActiveMaster';
}
var comp = this.parseIt(host_component, this.config3);
comp.service_id = serviceName;
hostComponents.push(comp);
}, this);
}, this);
//load master components to model
App.store.loadMany(this.get('model3'), hostComponents);
var result = [];
//parse service metrics from components
services.forEach(function (item) {
var finalJson = [];
var serviceData = App.cache['hostComponentsOnService'][item.ServiceInfo.service_name];
item.host_components = serviceData.host_components;
item.running_host_components = serviceData.running_host_components;
item.unknown_host_components = serviceData.unknown_host_components;
item.host_components.sort();
if (item && item.ServiceInfo && item.ServiceInfo.service_name == "HDFS") {
finalJson = this.hdfsMapper(item);
finalJson.rand = Math.random();
result.push(finalJson);
App.store.load(App.HDFSService, finalJson);
} else if (item && item.ServiceInfo && item.ServiceInfo.service_name == "MAPREDUCE") {
finalJson = this.mapreduceMapper(item);
finalJson.rand = Math.random();
result.push(finalJson);
App.store.load(App.MapReduceService, finalJson);
} else if (item && item.ServiceInfo && item.ServiceInfo.service_name == "HBASE") {
finalJson = this.hbaseMapper(item);
finalJson.rand = Math.random();
result.push(finalJson);
App.store.load(App.HBaseService, finalJson);
} else if (item && item.ServiceInfo && item.ServiceInfo.service_name == "FLUME") {
finalJson = this.flumeMapper(item);
finalJson.rand = Math.random();
result.push(finalJson);
if (finalJson.nodeObjs) {
finalJson.nodeObjs.forEach(function (no) {
App.store.load(App.FlumeNode, no);
});
}
App.store.load(App.FlumeService, finalJson);
} else if (item && item.ServiceInfo && item.ServiceInfo.service_name == "YARN") {
finalJson = this.yarnMapper(item);
finalJson.rand = Math.random();
result.push(finalJson);
App.store.load(App.YARNService, finalJson);
} else if (item && item.ServiceInfo && item.ServiceInfo.service_name == "MAPREDUCE2") {
finalJson = this.mapreduce2Mapper(item);
finalJson.rand = Math.random();
result.push(finalJson);
App.store.load(App.MapReduce2Service, finalJson);
} else {
finalJson = this.parseIt(item, this.config);
finalJson.rand = Math.random();
this.mapQuickLinks(finalJson, item);
result.push(finalJson);
}
}, this);
result = misc.sortByOrder(App.Service.servicesSortOrder, result);
//load services to model
App.store.loadMany(this.get('model'), result);
var servicesMap = {};
//calculate service statuses according to their host-components
App.HostComponent.find().filterProperty('isMaster').forEach(function (item) {
if (item) {
this.countServiceComponents(item, servicesMap, servicesMap[item.get('service.id')]);
}
}, this);
this.updateServicesStatus(App.Service.find(), servicesMap);
}
console.timeEnd('App.servicesMapper execution time');
},