Repository: ambari Updated Branches: refs/heads/trunk ac6c15edb -> 0740b4da1
AMBARI-5517. Flume service data mapper only maps first agent. (srimanth) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0740b4da Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0740b4da Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0740b4da Branch: refs/heads/trunk Commit: 0740b4da11a4cff2ab9b93d3197ca9ee8122270f Parents: ac6c15e Author: Srimanth Gunturi <[email protected]> Authored: Fri Apr 18 17:04:46 2014 -0700 Committer: Srimanth Gunturi <[email protected]> Committed: Fri Apr 18 17:04:51 2014 -0700 ---------------------------------------------------------------------- .../app/mappers/service_metrics_mapper.js | 35 +++++++------ ambari-web/app/models/service/flume.js | 53 +++----------------- .../app/views/main/service/services/flume.js | 2 +- 3 files changed, 29 insertions(+), 61 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/0740b4da/ambari-web/app/mappers/service_metrics_mapper.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mappers/service_metrics_mapper.js b/ambari-web/app/mappers/service_metrics_mapper.js index 832da08..db23683 100644 --- a/ambari-web/app/mappers/service_metrics_mapper.js +++ b/ambari-web/app/mappers/service_metrics_mapper.js @@ -136,10 +136,12 @@ App.serviceMetricsMapper = App.QuickDataMapper.create({ nimbus_uptime: 'restApiComponent.metrics.api.cluster.summary.["nimbus.uptime"]' }, flumeAgentConfig: { - id: 'HostComponentProcess.name', name: 'HostComponentProcess.name', status: 'HostComponentProcess.status', - host_id: 'HostComponentProcess.host_name' + host_id: 'HostComponentProcess.host_name', + channels_count: 'HostComponentProcess.channels_count', + sources_count: 'HostComponentProcess.sources_count', + sinks_count: 'HostComponentProcess.sinks_count' }, model3: App.HostComponent, @@ -224,8 +226,7 @@ App.serviceMetricsMapper = App.QuickDataMapper.create({ finalJson.rand = Math.random(); result.push(finalJson); App.store.load(App.FlumeService, finalJson); - var agentsJson = this.flumeAgentMapper(item); - App.store.loadMany(App.FlumeAgent, agentsJson); + App.store.loadMany(App.FlumeAgent, finalJson.agentJsons); } else if (item && item.ServiceInfo && item.ServiceInfo.service_name == "YARN") { finalJson = this.yarnMapper(item); finalJson.rand = Math.random(); @@ -572,20 +573,24 @@ App.serviceMetricsMapper = App.QuickDataMapper.create({ * data into the JSON object. */ flumeMapper: function (item) { - var finalJson = this.parseIt(item, this.config); - finalJson.agents = item.components[0].host_components[0].processes.mapProperty('HostComponentProcess.name'); + var self = this; + var finalJson = self.parseIt(item, self.config); + var flumeHandlers = item.components[0].host_components; + finalJson.agents = []; + finalJson.agentJsons = []; + flumeHandlers.forEach(function(flumeHandler){ + var hostName = flumeHandler.HostRoles.host_name; + flumeHandler.processes.forEach(function(process){ + var agentJson = self.parseIt(process, self.flumeAgentConfig); + var agentId = agentJson.name + "-" + hostName; + finalJson.agents.push(agentId); + agentJson.id = agentId; + finalJson.agentJsons.push(agentJson); + }); + }); return finalJson; }, - flumeAgentMapper: function (item) { - var dataToParse = item.components[0].host_components[0].processes; - var result = []; - dataToParse.forEach(function(dataItem){ - result.push(this.parseIt(dataItem, this.flumeAgentConfig)); - }, this); - return result; - }, - /** * Storm mapper */ http://git-wip-us.apache.org/repos/asf/ambari/blob/0740b4da/ambari-web/app/models/service/flume.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/service/flume.js b/ambari-web/app/models/service/flume.js index 68a83e2..2d79a37 100644 --- a/ambari-web/app/models/service/flume.js +++ b/ambari-web/app/models/service/flume.js @@ -23,6 +23,11 @@ App.FlumeService = App.Service.extend({ }); App.FlumeAgent = DS.Model.extend({ + /** + * ID of a flume agent will be of the format + * '<agent-name>-<host-name>' + */ + id: DS.attr('string'), name: DS.attr('string'), /** * Status of agent. One of 'STARTED', 'INSTALLED', 'UNKNOWN'. @@ -30,51 +35,9 @@ App.FlumeAgent = DS.Model.extend({ status: DS.attr('string'), host: DS.belongsTo('App.Host'), - /** - * A comma separated list of channels. - */ - channels: DS.attr('string'), - - /** - * A comma separated list of sources. - */ - sources: DS.attr('string'), - - /** - * A comma separated list of sinks. - */ - sinks: DS.attr('string'), - - hostName: function () { - return this.get('host.hostName'); - }.property('host.hostName'), - - channelsCount: function() { - var channels = this.get('channels'); - if (!channels) { - return 0; - } else { - return channels.split(',').length; - } - }.property('channels'), - - sourcesCount: function() { - var sources = this.get('sources'); - if (!sources) { - return 0; - } else { - return sources.split(',').length; - } - }.property('sources'), - - sinksCount: function() { - var sinks = this.get('sinks'); - if (!sinks) { - return 0; - } else { - return sinks.split(',').length; - } - }.property('sinks'), + channelsCount: DS.attr('number'), + sourcesCount: DS.attr('number'), + sinksCount: DS.attr('number'), healthClass : function() { switch (this.get('status')) { http://git-wip-us.apache.org/repos/asf/ambari/blob/0740b4da/ambari-web/app/views/main/service/services/flume.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/service/services/flume.js b/ambari-web/app/views/main/service/services/flume.js index f700116..659549b 100644 --- a/ambari-web/app/views/main/service/services/flume.js +++ b/ambari-web/app/views/main/service/services/flume.js @@ -139,7 +139,7 @@ App.MainDashboardServiceFlumeView = App.TableView.extend({ return metricType + ' - ' + hostName; }; var gangliaUrlTpl = App.router.get('clusterController.gangliaUrl') + '/?r=hour&cs=&ce=&m=load_one&s=by+name&c=HDPFlumeServer&h={0}&host_regex=&max_graphs=0&tab=m&vn=&sh=1&z=small&hc=4'; - var agentHostMock = 'localhost'; // @todo change to agent hostname + var agentHostMock = agent.get('host.hostName'); var mockMetricData = [ { header: 'sinkName',
