Repository: hadoop
Updated Branches:
refs/heads/trunk 8d2789c5e -> 5fe1dbf19
YARN-8964. [UI2] YARN ui2 should use clusters/{cluster name} for all ATSv2 REST
APIs. Contributed by Akhil PB.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/5fe1dbf1
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/5fe1dbf1
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/5fe1dbf1
Branch: refs/heads/trunk
Commit: 5fe1dbf1959976d0dc5a8e614dd74836cfbee04c
Parents: 8d2789c
Author: Sunil G <[email protected]>
Authored: Thu Nov 22 10:25:22 2018 +0530
Committer: Sunil G <[email protected]>
Committed: Thu Nov 22 10:25:22 2018 +0530
----------------------------------------------------------------------
.../main/webapp/app/adapters/yarn-app-log.js | 11 ++--
.../webapp/app/adapters/yarn-app-timeline.js | 6 +-
.../app/adapters/yarn-component-instance.js | 8 ++-
.../webapp/app/adapters/yarn-flow-activity.js | 4 ++
.../src/main/webapp/app/adapters/yarn-log.js | 8 +--
.../app/adapters/yarn-service-component.js | 8 ++-
.../webapp/app/adapters/yarn-service-info.js | 8 ++-
.../app/adapters/yarn-timeline-appattempt.js | 8 +++
.../app/adapters/yarn-timeline-container.js | 4 ++
.../src/main/webapp/app/initializers/loader.js | 34 +++++++++-
.../src/main/webapp/app/router.js | 6 +-
.../main/webapp/app/routes/yarn-log-service.js | 66 ++++++++++++++++++++
.../main/webapp/app/serializers/yarn-app-log.js | 4 +-
.../webapp/app/templates/yarn-log-service.hbs | 37 +++++++++++
.../src/main/webapp/app/utils/converter.js | 2 +-
.../src/main/webapp/config/default-config.js | 1 +
16 files changed, 194 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5fe1dbf1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-log.js
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-log.js
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-log.js
index 318b273..847171e 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-log.js
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-log.js
@@ -16,7 +16,6 @@
* limitations under the License.
*/
-import DS from 'ember-data';
import Ember from 'ember';
import Converter from 'yarn-ui/utils/converter';
import RESTAbstractAdapter from './restabstract';
@@ -26,8 +25,8 @@ import RESTAbstractAdapter from './restabstract';
* in plain text format and not JSON.
*/
export default RESTAbstractAdapter.extend({
- address: "timelineV1WebAddress",
- restNameSpace: "timeline",
+ address: "timelineWebAddress",
+ restNameSpace: "timelineV2Log",
serverName: "ATS",
headers: {
@@ -36,10 +35,14 @@ export default RESTAbstractAdapter.extend({
urlForFindRecord(id/*, modelName, snapshot*/) {
var splits = Converter.splitForAppLogs(id);
+ var clusterId = this.get("env.app.clusterId");
var containerId = splits[0];
var logFile = splits[1];
+ if (splits[2]) {
+ clusterId = splits[2];
+ }
var url = this._buildURL();
- url = url + '/containers/' + containerId + '/logs/' + logFile;
+ url = url + '/containers/' + containerId + '/logs/' + logFile +
'?clusterid=' + clusterId;
console.log('log url' + url);
return url;
},
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5fe1dbf1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-timeline.js
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-timeline.js
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-timeline.js
index 831649c..f2bc30d 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-timeline.js
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-app-timeline.js
@@ -25,7 +25,11 @@ export default AbstractAdapter.extend({
urlForFindRecord(id/*, modelName, snapshot*/) {
var url = this._buildURL();
- url = url + '/apps/' + id + '?fields=ALL';
+ var clusterId = this.get("env.app.clusterId");
+ if (clusterId) {
+ url += `/clusters/${clusterId}`;
+ }
+ url += '/apps/' + id + '?fields=ALL';
return url;
},
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5fe1dbf1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-component-instance.js
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-component-instance.js
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-component-instance.js
index 062a006..86e08fe 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-component-instance.js
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-component-instance.js
@@ -20,12 +20,16 @@ import AbstractAdapter from './abstract';
export default AbstractAdapter.extend({
address: "timelineWebAddress",
- restNameSpace: "timelineService",
+ restNameSpace: "timelineV2",
serverName: "ATS",
urlForQuery(query/*, modelName*/) {
var url = this.buildURL();
- url += '/' + query.appId + '/entities/COMPONENT_INSTANCE?fields=ALL';
+ var clusterId = this.get("env.app.clusterId");
+ if (clusterId) {
+ url += `/clusters/${clusterId}`;
+ }
+ url += '/apps/' + query.appId + '/entities/COMPONENT_INSTANCE?fields=ALL';
delete query.appId;
return url;
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5fe1dbf1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-flow-activity.js
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-flow-activity.js
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-flow-activity.js
index a8c436a..cb8dfee 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-flow-activity.js
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-flow-activity.js
@@ -25,6 +25,10 @@ export default AbstractAdapter.extend({
serverName: "ATS",
pathForType(/*modelName*/) {
+ var clusterId = this.get("env.app.clusterId");
+ if (clusterId) {
+ return `clusters/${clusterId}/flows`;
+ }
return 'flows'; // move to some common place, return path by modelname.
},
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5fe1dbf1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-log.js
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-log.js
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-log.js
index 58cbea2..66f3406 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-log.js
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-log.js
@@ -19,15 +19,15 @@
import AbstractAdapter from './abstract';
export default AbstractAdapter.extend({
- address: "timelineV1WebAddress",
- // restNameSpace: "timelineV2", // Use ATSv2 when it supports log APIs.
- restNameSpace: "timeline", //Using ATSv1.5 now, would be supported by ATSv2
very soon.
+ address: "timelineWebAddress",
+ restNameSpace: "timelineV2Log",
serverName: "ATS",
urlForQuery(query/*, modelName*/) {
var url = this._buildURL();
var containerId = query['containerId'];
+ var clusterId = this.get("env.app.clusterId");
delete query.containerId;
- return url + '/containers/' + containerId + '/logs';
+ return url + '/containers/' + containerId + '/logs' + '?clusterid=' +
clusterId;
}
});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5fe1dbf1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-service-component.js
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-service-component.js
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-service-component.js
index c356192..4fda603 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-service-component.js
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-service-component.js
@@ -20,12 +20,16 @@ import AbstractAdapter from './abstract';
export default AbstractAdapter.extend({
address: "timelineWebAddress",
- restNameSpace: "timelineService",
+ restNameSpace: "timelineV2",
serverName: "ATS",
urlForQuery(query/*, modelName*/) {
var url = this.buildURL();
- url += '/' + query.appId + '/entities/COMPONENT?fields=ALL';
+ var clusterId = this.get("env.app.clusterId");
+ if (clusterId) {
+ url += `/clusters/${clusterId}`;
+ }
+ url += '/apps/' + query.appId + '/entities/COMPONENT?fields=ALL';
delete query.appId;
return url;
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5fe1dbf1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-service-info.js
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-service-info.js
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-service-info.js
index dec3e50..9e37754 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-service-info.js
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-service-info.js
@@ -20,12 +20,16 @@ import AbstractAdapter from './abstract';
export default AbstractAdapter.extend({
address: "timelineWebAddress",
- restNameSpace: "timelineService",
+ restNameSpace: "timelineV2",
serverName: "ATS",
urlForQueryRecord(query/*, modelName*/) {
var url = this.buildURL();
- url += '/' + query.appId + '/entities/SERVICE_ATTEMPT?fields=ALL';
+ var clusterId = this.get("env.app.clusterId");
+ if (clusterId) {
+ url += `/clusters/${clusterId}`;
+ }
+ url += '/apps/' + query.appId + '/entities/SERVICE_ATTEMPT?fields=ALL';
delete query.appId;
return url;
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5fe1dbf1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-timeline-appattempt.js
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-timeline-appattempt.js
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-timeline-appattempt.js
index 2557a86..cbc10bd 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-timeline-appattempt.js
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-timeline-appattempt.js
@@ -26,6 +26,10 @@ export default AbstractAdapter.extend({
urlForQuery(query/*, modelName*/) {
var url = this._buildURL();
+ var clusterId = this.get("env.app.clusterId")
+ if (clusterId) {
+ url += `/clusters/${clusterId}`;
+ }
var appId = query.appId;
query.fields = 'ALL';
delete query.appId;
@@ -34,6 +38,10 @@ export default AbstractAdapter.extend({
urlForFindRecord(id/*, modelName, snapshot*/) {
var url = this._buildURL();
+ var clusterId = this.get("env.app.clusterId")
+ if (clusterId) {
+ url += `/clusters/${clusterId}`;
+ }
return url + '/apps/' + Converter.attemptIdToAppId(id) +
"/entities/YARN_APPLICATION_ATTEMPT/" + id + "?fields=ALL";
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5fe1dbf1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-timeline-container.js
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-timeline-container.js
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-timeline-container.js
index f47335a..546b03f 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-timeline-container.js
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-timeline-container.js
@@ -26,6 +26,10 @@ export default AbstractAdapter.extend({
urlForQuery(query/*, modelName*/){
var url = this._buildURL();
+ var clusterId = this.get("env.app.clusterId")
+ if (clusterId) {
+ url += `/clusters/${clusterId}`;
+ }
var app_attempt_id = query.app_attempt_id;
query.fields = 'ALL';
delete query.app_attempt_id;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5fe1dbf1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/loader.js
----------------------------------------------------------------------
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 98d1348..befff8f 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
@@ -84,9 +84,36 @@ function getSecurityURL(rmhost) {
return url;
}
+function getClusterIdFromYARN(rmhost, application) {
+ var httpUrl = window.location.protocol + '//' +
+ (ENV.hosts.localBaseAddress? ENV.hosts.localBaseAddress + '/' : '') +
rmhost;
+
+ httpUrl += '/conf?name=yarn.resourcemanager.cluster-id';
+ Ember.Logger.log("Get cluster-id URL is: " + httpUrl);
+
+ var clusterId = "";
+ $.ajax({
+ type: 'GET',
+ dataType: 'json',
+ async: false,
+ context: this,
+ url: httpUrl,
+ success: function(data) {
+ clusterId = data.property.value;
+ Ember.Logger.log("Cluster Id from RM: " + clusterId);
+ application.advanceReadiness();
+ },
+ error: function() {
+ application.advanceReadiness();
+ }
+ });
+ return clusterId;
+}
+
function updateConfigs(application) {
var hostname = window.location.hostname;
- var rmhost = hostname + (window.location.port ? ':' + window.location.port:
'') + skipTrailingSlash(window.location.pathname);
+ var rmhost = hostname + (window.location.port ? ':' + window.location.port:
'') +
+ skipTrailingSlash(window.location.pathname);
window.ENV = window.ENV || {};
window.ENV.hosts = window.ENV.hosts || {};
@@ -103,6 +130,10 @@ function updateConfigs(application) {
var protocolSchemeFromRM = getYarnHttpProtocolScheme(rmhost, application);
Ember.Logger.log("Is protocol scheme https? " + (protocolSchemeFromRM ==
"HTTPS_ONLY"));
var isHttpsSchemeEnabled = (protocolSchemeFromRM == "HTTPS_ONLY");
+
+ var clusterIdFromYARN = getClusterIdFromYARN(rmhost, application);
+ ENV.clusterId = clusterIdFromYARN;
+
if(!ENV.hosts.timelineWebAddress) {
var timelinehost = "";
$.ajax({
@@ -207,6 +238,7 @@ export default {
};
const skipTrailingSlash = function(path) {
+ path = path.replace('index.html', '');
path = path.replace('ui2/', '');
path = path.replace(/\/$/, '');
console.log('base url:' + path)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5fe1dbf1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js
index cd12fd2..aa0e983 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/router.js
@@ -49,8 +49,10 @@ Router.map(function() {
{ path: '/yarn-node-containers/:node_id/:node_addr' });
this.route('yarn-node-container',
{ path: '/yarn-node-container/:node_id/:node_addr/:container_id' });
- this.route('yarn-container-log', { path:
- '/yarn-container-log/:node_id/:node_addr/:container_id/:filename' });
+ this.route('yarn-container-log',
+ { path: '/yarn-container-log/:node_id/:node_addr/:container_id/:filename'
});
+ this.route('yarn-log-service',
+ { path: '/yarn-log-service/:cluster_id/:container_id/:filename' });
this.route('yarn-deploy-service');
this.route('cluster-overview');
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5fe1dbf1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-log-service.js
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-log-service.js
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-log-service.js
new file mode 100644
index 0000000..e1c4540
--- /dev/null
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-log-service.js
@@ -0,0 +1,66 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import Ember from 'ember';
+import Constants from 'yarn-ui/constants';
+
+import AbstractRoute from './abstract';
+
+export default AbstractRoute.extend({
+ model(param) {
+ var id = param.container_id + Constants.PARAM_SEPARATOR + param.filename
+ + Constants.PARAM_SEPARATOR + param.cluster_id;
+ return Ember.RSVP.hash({
+ containerLog: this.store.findRecord('yarn-app-log', id),
+ containerInfo: { id: param.container_id }
+ }).then(function (hash) {
+ // Just return as its success.
+ return hash;
+ }, function (reason) {
+ if (reason.errors && reason.errors[0]) {
+ // This means HTTP error response was sent by adapter.
+ return reason;
+ } else {
+ // Assume empty response received from server.
+ return {
+ containerInfo: { id: param.container_id },
+ containerLog: {
+ logs: "",
+ containerID: param.container_id,
+ logFileName: param.filename
+ }
+ };
+ }
+ });
+ },
+
+ afterModel(model) {
+ // Handle errors and redirect if promise is rejected.
+ if (model.errors && model.errors[0]) {
+ if (parseInt(model.errors[0].status) === 404) {
+ this.replaceWith('/notfound');
+ } else {
+ this.replaceWith('/error');
+ }
+ }
+ },
+
+ unloadAll() {
+ this.store.unloadAll('yarn-app-log');
+ }
+});
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5fe1dbf1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-log.js
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-log.js
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-log.js
index 4bfc5b4..3cfabd3 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-log.js
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app-log.js
@@ -29,8 +29,8 @@ export default DS.JSONAPISerializer.extend({
type: primaryModelClass.modelName,
attributes: {
logs: payload,
- containerID: splits[1],
- logFileName: splits[2]
+ containerID: splits[0],
+ logFileName: splits[1]
}
};
return { data: convertedPayload };
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5fe1dbf1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-log-service.hbs
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-log-service.hbs
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-log-service.hbs
new file mode 100644
index 0000000..708c861
--- /dev/null
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-log-service.hbs
@@ -0,0 +1,37 @@
+{{!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--}}
+
+<div class="col-md-12 container-fluid">
+ <div class="col-md-12">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h5 align="center">
+ <b>Log: {{model.containerLog.logFileName}} [
{{model.containerLog.containerID}} ]</b>
+ </h5>
+ </div>
+ <div class="panel-body">
+ {{#if model.containerLog.logs}}
+ <pre>{{model.containerLog.logs}}</pre>
+ {{else}}
+ <p>No logs were written in {{model.containerLog.logFileName}}.</p>
+ {{/if}}
+ </div>
+ </div>
+ </div>
+</div>
+{{outlet}}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5fe1dbf1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/converter.js
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/converter.js
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/converter.js
index d5acaa2..689aa5e 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/converter.js
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/utils/converter.js
@@ -119,7 +119,7 @@ export default {
if (splitLen < 2) {
return null;
}
- return [splits[0], splits[1]];
+ return splits[2] ? [splits[0], splits[1], splits[2]] : [splits[0],
splits[1]];
}
},
memoryToSimpliedUnit: function(mb) {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5fe1dbf1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js
----------------------------------------------------------------------
diff --git
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js
index 3d37796..9716488 100644
---
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js
+++
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js
@@ -31,6 +31,7 @@ module.exports = { // YARN UI App configurations
cluster: 'ws/v1/cluster',
metrics: 'ws/v1/cluster/metrics',
timelineV2: 'ws/v2/timeline',
+ timelineV2Log: 'ws/v2/applicationlog',
dashService: 'app/v1/services',
node: '{nodeAddress}/ws/v1/node'
},
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]