From aab310978f64d57cf414de095e6195cbc4d0ed55 Mon Sep 17 00:00:00 2001 From: Billie Rinaldi Date: Fri, 14 Dec 2018 18:38:03 -0800 Subject: [PATCH] YARN-9089. Add Terminal Link to Service component instance page for UI2. Contributed by Eric Yang --- .../src/main/webapp/app/initializers/env.js | 1 + .../main/webapp/app/initializers/loader.js | 26 +++++++++++++++++++ .../app/models/yarn-component-instance.js | 10 +++++++ .../routes/yarn-component-instance/info.js | 5 ++++ .../yarn-component-instance/info.hbs | 4 +++ 5 files changed, 46 insertions(+) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/env.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/env.js index c613593980a..bb9329ecf48 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/env.js +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/env.js @@ -21,6 +21,7 @@ export function initialize( application ) { application.inject('controller', 'env', 'service:env'); application.inject('route', 'env', 'service:env'); application.inject('adapter', 'env', 'service:env'); + application.inject('model', 'env', 'service:env'); } export default { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/loader.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/loader.js index befff8fdcca..e695ea6ea86 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/loader.js +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/loader.js @@ -110,6 +110,29 @@ function getClusterIdFromYARN(rmhost, application) { return clusterId; } +function getNodeManagerPort(rmhost, application) { + var httpUrl = window.location.protocol + "//" + + (ENV.hosts.localBaseAddress ? ENV.hosts.localBaseAddress + '/' : '') + rmhost + + ":" + window.location.port + "/conf?name=yarn.nodemanager.webapp.address"; + var port = "8042"; + $.ajax({ + type: 'GET', + dataType: 'json', + async: false, + context: this, + url: httpUrl, + success: function(data) { + port = data.property.value.split(":")[1]; + application.advanceReadiness(); + }, + error: function() { + port = "8042"; + application.advanceReadiness(); + } + }); + return port; +} + function updateConfigs(application) { var hostname = window.location.hostname; var rmhost = hostname + (window.location.port ? ':' + window.location.port: '') + @@ -134,6 +157,9 @@ function updateConfigs(application) { var clusterIdFromYARN = getClusterIdFromYARN(rmhost, application); ENV.clusterId = clusterIdFromYARN; + var nodeManagerPort = getNodeManagerPort(rmhost, application); + ENV.nodeManagerPort = nodeManagerPort; + if(!ENV.hosts.timelineWebAddress) { var timelinehost = ""; $.ajax({ diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-component-instance.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-component-instance.js index 532fc554bb6..e4b6a9b0b12 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-component-instance.js +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-component-instance.js @@ -47,5 +47,15 @@ export default DS.Model.extend({ return Converter.timeStampToDate(timestamp); } return 'N/A'; + }), + + termLink: Ember.computed('node', 'containerId', function() { + var protocol = window.location.protocol; + var node = this.get('node'); + var port = this.get('env.app.nodeManagerPort'); + var containerId = this.get('containerId'); + var url = protocol + "//" + node + ":" + port + + "/terminal/terminal.template?container=" + containerId; + return url; }) }); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instance/info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instance/info.js index a67324abf22..71c28934d24 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instance/info.js +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instance/info.js @@ -39,6 +39,11 @@ export default AbstractRoute.extend({ }); }, + afterModel(model) { + const appContrl = this.controllerFor('application'); + model.userInfo = appContrl.get('userInfo'); + }, + unloadAll() { this.store.unloadAll('yarn-component-instance'); } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-component-instance/info.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-component-instance/info.hbs index 1b9d04aa7e3..c9157b83a4c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-component-instance/info.hbs +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-component-instance/info.hbs @@ -61,6 +61,10 @@ Exit Status Code {{check-availability model.container.exitStatusCode}} + + Terminal + Link +