Repository: ambari Updated Branches: refs/heads/trunk 53ec9ed43 -> 3b2bb3343
AMBARI-6943. Jobs View: Link to YARN application not being shown for Hive job (alexantonenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/3b2bb334 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/3b2bb334 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/3b2bb334 Branch: refs/heads/trunk Commit: 3b2bb3343ed36e34648b29648d339215cf89a22e Parents: 53ec9ed Author: Alex Antonenko <hiv...@gmail.com> Authored: Wed Aug 20 18:28:02 2014 +0300 Committer: Alex Antonenko <hiv...@gmail.com> Committed: Wed Aug 20 18:28:23 2014 +0300 ---------------------------------------------------------------------- .../resources/ui/app/scripts/helpers/jobs.js | 2 ++ .../mappers/application_status_mapper.js | 29 ++++++++++++++++---- .../ui/app/scripts/models/jobs/tez_dag.js | 2 ++ .../main/resources/ui/app/templates/job/job.hbs | 2 +- 4 files changed, 28 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/3b2bb334/contrib/views/jobs/src/main/resources/ui/app/scripts/helpers/jobs.js ---------------------------------------------------------------------- diff --git a/contrib/views/jobs/src/main/resources/ui/app/scripts/helpers/jobs.js b/contrib/views/jobs/src/main/resources/ui/app/scripts/helpers/jobs.js index 63f8b2e..9255603 100644 --- a/contrib/views/jobs/src/main/resources/ui/app/scripts/helpers/jobs.js +++ b/contrib/views/jobs/src/main/resources/ui/app/scripts/helpers/jobs.js @@ -115,6 +115,7 @@ App.Helpers.jobs = { var self = this, yarnService = App.HiveJob.store.getById('service', 'YARN'), historyServerHostName = App.HiveJob.store.getById('component', 'APP_TIMELINE_SERVER').get('hostName'), + resourceManagerHostName = App.HiveJob.store.getById('component', 'RESOURCEMANAGER').get('hostName'), ahsWebPort = yarnService.get('ahsWebPort'), tezDag = App.HiveJob.store.getById('tezDag', tezDagId); if (tezDag) { @@ -125,6 +126,7 @@ App.Helpers.jobs = { var app_id = Em.get(data, 'otherinfo.applicationId'); if (!Em.isNone(app_id)) { tezDag.set('yarnApplicationId', app_id); + tezDag.set('yarnApplicationLink', 'http://'+resourceManagerHostName+':8088/cluster/app/'+app_id); } if (data.relatedentities && data.relatedentities.TEZ_VERTEX_ID != null) { var count = data.relatedentities.TEZ_VERTEX_ID.length; http://git-wip-us.apache.org/repos/asf/ambari/blob/3b2bb334/contrib/views/jobs/src/main/resources/ui/app/scripts/mappers/application_status_mapper.js ---------------------------------------------------------------------- diff --git a/contrib/views/jobs/src/main/resources/ui/app/scripts/mappers/application_status_mapper.js b/contrib/views/jobs/src/main/resources/ui/app/scripts/mappers/application_status_mapper.js index 2f71c48..aa17bd5 100644 --- a/contrib/views/jobs/src/main/resources/ui/app/scripts/mappers/application_status_mapper.js +++ b/contrib/views/jobs/src/main/resources/ui/app/scripts/mappers/application_status_mapper.js @@ -60,7 +60,7 @@ App.ApplicationStatusMapper = Em.Object.createWithMixins(App.RunPeriodically, { }, /** - * Is ATS host loaded + * Is ATS and RESOURCEMANAGER hosts loaded * @type {bool} */ hostForComponentIsLoaded: false, @@ -72,6 +72,15 @@ App.ApplicationStatusMapper = Em.Object.createWithMixins(App.RunPeriodically, { portIsLoaded: false, /** + * Array of component names that need to be loaded + * @type {Array} + */ + componentsToLoad: [ + "APP_TIMELINE_SERVER", + "RESOURCEMANAGER" + ], + + /** * Start mapping when <code>App.clusterName</code> is loaded * @method mapInit */ @@ -91,7 +100,9 @@ App.ApplicationStatusMapper = Em.Object.createWithMixins(App.RunPeriodically, { this.getServices().then(function() { self.getComponents().then(function() { if (!self.get('hostForComponentIsLoaded')) - self.getHostsForComponents(); + self.get('componentsToLoad').forEach(function (componentName) { + self.getHostsForComponents(componentName); + }) if (!self.get('portIsLoaded')) self.getDesiredConfigs(); }); @@ -181,6 +192,7 @@ App.ApplicationStatusMapper = Em.Object.createWithMixins(App.RunPeriodically, { ats = data.items.findBy('ServiceComponentInfo.component_name', 'APP_TIMELINE_SERVER'), atsModel = Em.isNone(ats) ? {id: 'APP_TIMELINE_SERVER'} : Em.JsonMapper.map(ats, map); App.HiveJob.store.push('component', atsModel); + App.HiveJob.store.push('component', {id: 'RESOURCEMANAGER'}); }, /** @@ -190,6 +202,7 @@ App.ApplicationStatusMapper = Em.Object.createWithMixins(App.RunPeriodically, { */ getComponentsErrorCallback: function() { App.HiveJob.store.push('component', {id: 'APP_TIMELINE_SERVER'}); + App.HiveJob.store.push('component', {id: 'RESOURCEMANAGER'}); }, /** @@ -197,12 +210,12 @@ App.ApplicationStatusMapper = Em.Object.createWithMixins(App.RunPeriodically, { * @returns {$.ajax} * @method getHostsForComponents */ - getHostsForComponents: function() { + getHostsForComponents: function(componentName) { return App.ajax.send({ name: 'components_hosts', sender: this, data: { - componentName: 'APP_TIMELINE_SERVER' + componentName: componentName }, success: 'getHostsForComponentsSuccessCallback' }); @@ -215,8 +228,12 @@ App.ApplicationStatusMapper = Em.Object.createWithMixins(App.RunPeriodically, { * @method getHostsForComponentsSuccessCallback */ getHostsForComponentsSuccessCallback: function(data) { - App.HiveJob.store.getById('component', 'APP_TIMELINE_SERVER').set('hostName', Em.get(data.items[0], 'Hosts.host_name')); - this.set('hostForComponentIsLoaded', true); + App.HiveJob.store.getById('component', arguments[2].componentName).set('hostName', Em.get(data.items[0], 'Hosts.host_name')); + this.set('componentsToLoad', this.get('componentsToLoad').without(arguments[2].componentName)) + + if(this.get('componentsToLoad').length === 0){ + this.set('hostForComponentIsLoaded', true); + } }, /** http://git-wip-us.apache.org/repos/asf/ambari/blob/3b2bb334/contrib/views/jobs/src/main/resources/ui/app/scripts/models/jobs/tez_dag.js ---------------------------------------------------------------------- diff --git a/contrib/views/jobs/src/main/resources/ui/app/scripts/models/jobs/tez_dag.js b/contrib/views/jobs/src/main/resources/ui/app/scripts/models/jobs/tez_dag.js index cd6178b..5797120 100644 --- a/contrib/views/jobs/src/main/resources/ui/app/scripts/models/jobs/tez_dag.js +++ b/contrib/views/jobs/src/main/resources/ui/app/scripts/models/jobs/tez_dag.js @@ -26,6 +26,8 @@ App.TezDag = DS.Model.extend({ yarnApplicationId: DS.attr('string'), + yarnApplicationLink: DS.attr('string'), + stage: DS.attr('string'), vertices: DS.hasMany('tezDagVertex'), http://git-wip-us.apache.org/repos/asf/ambari/blob/3b2bb334/contrib/views/jobs/src/main/resources/ui/app/templates/job/job.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/jobs/src/main/resources/ui/app/templates/job/job.hbs b/contrib/views/jobs/src/main/resources/ui/app/templates/job/job.hbs index 46a6a35..e294f9a 100644 --- a/contrib/views/jobs/src/main/resources/ui/app/templates/job/job.hbs +++ b/contrib/views/jobs/src/main/resources/ui/app/templates/job/job.hbs @@ -33,7 +33,7 @@ </tr> <tr> <td>{{t jobs.hive.yarnApplication}}</td> - <td>{{view.content.tezDag.yarnApplicationId}}</td> + <td><a target="_blank" {{bind-attr href=view.content.tezDag.yarnApplicationLink}}>{{view.content.tezDag.yarnApplicationId}}</a></td> </tr> <tr> <td>{{t jobs.hive.stages}}</td>