diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/app-table-columns.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/app-table-columns.js
index 704abfbc6eb..8a34f1a2715 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/app-table-columns.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/app-table-columns.js
@@ -38,7 +38,7 @@ export default Ember.Controller.extend({
getCellContent: function(row) {
return {
displayText: row.id,
- href: `#/yarn-app/${row.id}`
+ href: `#/yarn-app/${row.id}/info`
};
}
}, {
@@ -112,7 +112,7 @@ export default Ember.Controller.extend({
getCellContent: function(row) {
return {
displayText: row.get('appName'),
- href: `#/yarn-app/${row.id}?service=${row.get('appName')}`
+ href: `#/yarn-app/${row.id}/info?service=${row.get('appName')}`
};
}
}, {
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app-attempt.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app-attempt.js
index fbe6fa9e27f..1121a84ad9f 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app-attempt.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app-attempt.js
@@ -34,10 +34,10 @@ export default Ember.Controller.extend({
routeName: 'yarn-apps.apps'
}, {
text: `App [${appId}]`,
- href: `#/yarn-app/${appId}`
+ href: `#/yarn-app/${appId}/info`
}, {
text: "Attempts",
- href: `#/yarn-app-attempts/${appId}`
+ href: `#/yarn-app/${appId}/attempts`
}, {
text: `Attempt [${attemptId}]`
}];
@@ -50,10 +50,10 @@ export default Ember.Controller.extend({
routeName: 'yarn-services'
}, {
text: `${serviceName} [${appId}]`,
- href: `#/yarn-app/${appId}?service=${serviceName}`
+ href: `#/yarn-app/${appId}/info?service=${serviceName}`
}, {
text: "Attempts",
- href: `#/yarn-app-attempts/${appId}?service=${serviceName}`
+ href: `#/yarn-app/${appId}/attempts?service=${serviceName}`
}, {
text: `Attempt [${attemptId}]`
}];
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app-attempts.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app-attempts.js
deleted file mode 100644
index 77e531ea286..00000000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app-attempts.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * 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';
-
-export default Ember.Controller.extend({
- queryParams: ["service"],
- service: undefined,
-
- breadcrumbs: Ember.computed("model.appId", function () {
- var appId = this.get("model.appId");
- var serviceName = this.get('service');
- var breadcrumbs = [{
- text: "Home",
- routeName: 'application'
- },{
- text: "Applications",
- routeName: 'yarn-apps.apps'
- }, {
- text: `App [${appId}]`,
- href: `#/yarn-app/${appId}`
- }, {
- text: "Attempts",
- }];
- if (serviceName) {
- breadcrumbs = [{
- text: "Home",
- routeName: 'application'
- }, {
- text: "Services",
- routeName: 'yarn-services'
- }, {
- text: `${serviceName} [${appId}]`,
- href: `#/yarn-app/${appId}?service=${serviceName}`
- }, {
- text: "Attempts"
- }];
- }
- return breadcrumbs;
- })
-
-});
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app.js
index e7d65cde0fd..c40697fa627 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app.js
@@ -19,42 +19,44 @@
import Ember from 'ember';
export default Ember.Controller.extend({
- queryParams: ["service"],
- service: undefined,
+ appId: '',
+ serviceName: undefined,
- breadcrumbs: Ember.computed("model.app.id", function () {
- var appId = this.get("model.app.id");
- var serviceName = this.get('service');
+ breadcrumbs: [{
+ text: "Home",
+ routeName: 'application'
+ }, {
+ text: "Applications",
+ routeName: 'yarn-apps.apps'
+ }, {
+ text: 'App'
+ }],
+
+ updateBreadcrumbs(appId, serviceName, tailCrumbs) {
var breadcrumbs = [{
text: "Home",
routeName: 'application'
- },{
- text: "Applications",
- routeName: 'yarn-apps.apps'
- }, {
- text: `App [${appId}]`,
- href: `#/yarn-app/${appId}`
}];
- if (serviceName) {
- breadcrumbs = [{
- text: "Home",
- routeName: 'application'
- }, {
+ if (appId && serviceName) {
+ breadcrumbs.push({
text: "Services",
routeName: 'yarn-services'
}, {
text: `${serviceName} [${appId}]`,
- href: `#/yarn-app/${appId}?service=${serviceName}`
- }];
+ href: `#/yarn-app/${appId}/info?service=${serviceName}`
+ });
+ } else {
+ breadcrumbs.push({
+ text: "Applications",
+ routeName: 'yarn-apps.apps'
+ }, {
+ text: `App [${appId}]`,
+ href: `#/yarn-app/${appId}/info`
+ });
}
- return breadcrumbs;
- }),
-
- amHostHttpAddressFormatted: Ember.computed('model.app.amHostHttpAddress', function() {
- var amHostAddress = this.get('model.app.amHostHttpAddress');
- if (amHostAddress && amHostAddress.indexOf('://') < 0) {
- amHostAddress = 'http://' + amHostAddress;
+ if (tailCrumbs) {
+ breadcrumbs.pushObjects(tailCrumbs);
}
- return amHostAddress;
- })
+ this.set('breadcrumbs', breadcrumbs);
+ }
});
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/attempts.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/attempts.js
new file mode 100644
index 00000000000..a6cba9eea62
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/attempts.js
@@ -0,0 +1,24 @@
+/**
+ * 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';
+
+export default Ember.Controller.extend({
+ queryParams: ["service"],
+ service: undefined
+});
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/services.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/charts.js
similarity index 76%
rename from hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/services.js
rename to hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/charts.js
index 34ad1adaf48..1078b145d16 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-apps/services.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/charts.js
@@ -18,16 +18,11 @@
import Ember from 'ember';
-export default Ember.Route.extend({
- model() {
- return Ember.RSVP.hash({
- apps: this.store.query('yarn-app', {
- applicationTypes: "org-apache-slider"
- }),
- });
- },
+export default Ember.Controller.extend({
+ queryParams: ["service"],
+ service: undefined,
- unloadAll() {
- this.store.unloadAll('yarn-app');
- }
+ isRunningApp: Ember.computed('model.app.state', function() {
+ return this.get('model.app.state') === "RUNNING";
+ })
});
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/info.js
new file mode 100644
index 00000000000..f9652f98169
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/info.js
@@ -0,0 +1,32 @@
+/**
+ * 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';
+
+export default Ember.Controller.extend({
+ queryParams: ["service"],
+ service: undefined,
+
+ amHostHttpAddressFormatted: Ember.computed('model.app.amHostHttpAddress', function() {
+ var amHostAddress = this.get('model.app.amHostHttpAddress');
+ if (amHostAddress && amHostAddress.indexOf('://') < 0) {
+ amHostAddress = 'http://' + amHostAddress;
+ }
+ return amHostAddress;
+ })
+});
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-apps/services.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-apps/services.js
deleted file mode 100644
index fffaf17b05b..00000000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-apps/services.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * 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 TableDefinition from 'em-table/utils/table-definition';
-import AppTableController from '../app-table-columns';
-
-export default AppTableController.extend({
- queryParams: ['searchText', 'sortColumnId', 'sortOrder', 'pageNum', 'rowCount'],
- tableDefinition: TableDefinition.create(),
- searchText: Ember.computed.alias('tableDefinition.searchText'),
- sortColumnId: Ember.computed.alias('tableDefinition.sortColumnId'),
- sortOrder: Ember.computed.alias('tableDefinition.sortOrder'),
- pageNum: Ember.computed.alias('tableDefinition.pageNum'),
- rowCount: Ember.computed.alias('tableDefinition.rowCount')
-});
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-flowrun/info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-flowrun/info.js
index df2f87e6ccb..63e17dcbedc 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-flowrun/info.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-flowrun/info.js
@@ -32,7 +32,7 @@ function createColumn() {
minWidth: "300px",
getCellContent: function (row) {
return {
- routeName: 'yarn-app',
+ routeName: 'yarn-app.info',
id: row.get('appId'),
displayText: row.get('appId')
};
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 00d6d3e1f09..901314289f2 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
@@ -26,7 +26,6 @@ var Router = Ember.Router.extend({
Router.map(function() {
this.route('yarn-apps', function () {
this.route('apps');
- this.route('services');
});
this.route('yarn-services');
this.route('yarn-nodes', function(){
@@ -50,11 +49,14 @@ Router.map(function() {
'/yarn-container-log/:node_id/:node_addr/:container_id/:filename' });
this.route('cluster-overview');
- this.route('yarn-app', { path: '/yarn-app/:app_id' });
+ this.route('yarn-app', function() {
+ this.route('info', {path: '/:app_id/info'});
+ this.route('attempts', {path: '/:app_id/attempts'});
+ this.route('charts', {path: '/:app_id/charts'});
+ });
this.route('yarn-app-attempt', { path: '/yarn-app-attempt/:app_attempt_id'});
this.route('error');
this.route('notfound', { path: '*:' });
- this.route('yarn-app-attempts', { path: '/yarn-app-attempts/:app_id' });
this.route('yarn-queues', { path: '/yarn-queues/:queue_name' });
this.route('yarn-flow-activity');
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
index 98b0cc88d7b..58e3fe30cd5 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js
@@ -16,35 +16,14 @@
* limitations under the License.
*/
-import Ember from 'ember';
import AbstractRoute from './abstract';
-import AppAttemptMixin from 'yarn-ui/mixins/app-attempt';
-export default AbstractRoute.extend(AppAttemptMixin, {
- model(param) {
- return Ember.RSVP.hash({
- app: this.fetchAppInfoFromRMorATS(param.app_id, this.store),
-
- rmContainers: this.store.find('yarn-app', param.app_id).then(function() {
- return this.store.query('yarn-app-attempt', {appId: param.app_id}).then(function (attempts) {
- if (attempts && attempts.get('firstObject')) {
- var appAttemptId = attempts.get('firstObject').get('appAttemptId');
- return this.store.query('yarn-container', {
- app_attempt_id: appAttemptId
- });
- }
- }.bind(this));
- }.bind(this)),
-
- nodes: this.store.findAll('yarn-rm-node', {reload: true}),
- });
- },
-
- unloadAll() {
- this.store.unloadAll('yarn-app');
- this.store.unloadAll('yarn-app-attempt');
- this.store.unloadAll('yarn-container');
- this.store.unloadAll('yarn-rm-node');
- this.store.unloadAll('yarn-app-timeline');
+export default AbstractRoute.extend({
+ actions: {
+ updateBreadcrumbs(appId, serviceName, tailCrumbs) {
+ var controller = this.controllerFor('yarn-app');
+ controller.setProperties({appId: appId, serviceName: serviceName});
+ controller.updateBreadcrumbs(appId, serviceName, tailCrumbs);
+ }
}
});
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempts.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/attempts.js
similarity index 86%
rename from hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempts.js
rename to hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/attempts.js
index 233bfc82365..fcea1119a29 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempts.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/attempts.js
@@ -17,13 +17,15 @@
*/
import Ember from 'ember';
-import AbstractRoute from './abstract';
+import AbstractRoute from '../abstract';
import AppAttemptMixin from 'yarn-ui/mixins/app-attempt';
export default AbstractRoute.extend(AppAttemptMixin, {
- model(param) {
+ model(param, transition) {
+ transition.send('updateBreadcrumbs', param.app_id, param.service, [{text: 'Attempts'}]);
return Ember.RSVP.hash({
appId: param.app_id,
+ serviceName: param.service,
attempts: this.fetchAttemptListFromRMorATS(param.app_id, this.store)
});
},
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/charts.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/charts.js
new file mode 100644
index 00000000000..1b687db4025
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/charts.js
@@ -0,0 +1,53 @@
+/**
+ * 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 AbstractRoute from '../abstract';
+
+export default AbstractRoute.extend({
+ model(param, transition) {
+ transition.send('updateBreadcrumbs', param.app_id, param.service, [{text: "Charts"}]);
+ return Ember.RSVP.hash({
+ appId: param.app_id,
+ serviceName: param.service,
+
+ app: this.store.find('yarn-app', param.app_id),
+
+ rmContainers: this.store.find('yarn-app', param.app_id).then(function() {
+ return this.store.query('yarn-app-attempt', {appId: param.app_id}).then(function (attempts) {
+ if (attempts && attempts.get('firstObject')) {
+ var appAttemptId = attempts.get('firstObject').get('appAttemptId');
+ return this.store.query('yarn-container', {
+ app_attempt_id: appAttemptId,
+ is_rm: true
+ });
+ }
+ }.bind(this));
+ }.bind(this)),
+
+ nodes: this.store.findAll('yarn-rm-node')
+ });
+ },
+
+ unloadAll() {
+ this.store.unloadAll('yarn-app');
+ this.store.unloadAll('yarn-app-attempt');
+ this.store.unloadAll('yarn-container');
+ this.store.unloadAll('yarn-rm-node');
+ }
+});
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/info.js
new file mode 100644
index 00000000000..4a4b19e2632
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/info.js
@@ -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.
+ */
+
+import Ember from 'ember';
+import AbstractRoute from '../abstract';
+import AppAttemptMixin from 'yarn-ui/mixins/app-attempt';
+
+export default AbstractRoute.extend(AppAttemptMixin, {
+ model(param, transition) {
+ transition.send('updateBreadcrumbs', param.app_id, param.service);
+ return Ember.RSVP.hash({
+ appId: param.app_id,
+ serviceName: param.service,
+ app: this.fetchAppInfoFromRMorATS(param.app_id, this.store)
+ });
+ },
+
+ unloadAll() {
+ this.store.unloadAll('yarn-app');
+ this.store.unloadAll('yarn-app-timeline');
+ }
+});
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
index c3154b45a1d..e988e0c9930 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
@@ -46,7 +46,7 @@
(current)
{{/link-to}}
{{/link-to}}
- {{#link-to 'yarn-apps.apps' tagName="li" current-when="yarn-apps.apps yarn-apps.services"}}
+ {{#link-to 'yarn-apps.apps' tagName="li" current-when="yarn-apps.apps"}}
{{#link-to 'yarn-apps.apps' class="navigation-link"}}Applications
(current)
{{/link-to}}
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
index a036a0cf243..3bad063b422 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/components/app-table.hbs
@@ -38,7 +38,7 @@
{{#if arr}}
{{#each arr as |app|}}
- {{app.id}} |
+ {{app.id}} |
{{app.applicationType}} |
{{app.appName}} |
{{app.user}} |
@@ -61,7 +61,7 @@
{{/each}}
{{else}}
- {{app.id}} |
+ {{app.id}} |
{{app.applicationType}} |
{{app.appName}} |
{{app.user}} |
@@ -83,4 +83,4 @@
{{/if}}
-
\ No newline at end of file
+
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempts.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempts.hbs
deleted file mode 100644
index 283d78afdd8..00000000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app-attempts.hbs
+++ /dev/null
@@ -1,58 +0,0 @@
-{{!
- * 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.
-}}
-
-{{breadcrumb-bar breadcrumbs=breadcrumbs}}
-
-
-
-
-
-
-
- {{#if service}}
- Service
- {{else}}
- Application
- {{/if}}
-
-
-
-
-
-
-
-
-
- {{timeline-view parent-id="attempt-timeline-div" my-id="timeline-view" height="100%" rmModel=model.attempts label="shortAppAttemptId" attemptModel=true serviceName=service}}
-
-
-
-
-
-{{outlet}}
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
index c1f535251ee..2fb5ab379f1 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs
@@ -18,14 +18,13 @@
{{breadcrumb-bar breadcrumbs=breadcrumbs}}
-{{#if model.app}}
- {{#if service}}
+ {{#if serviceName}}
Service
{{else}}
Application
@@ -34,13 +33,14 @@
@@ -49,174 +49,7 @@
-
-
- {{app-timeout-bar app=model.app}}
-
-
-
-
-
-
- {{#if model.app.diagnostics}}
-
- {{#if model.app.isFailed}}
-
-
- Diagnostics
-
-
{{model.app.diagnostics}}
-
- {{else}}
-
-
- Diagnostics
-
-
{{model.app.diagnostics}}
-
- {{/if}}
-
- {{/if}}
-
-
-
-
-
-
Scheduling Info
-
-
-
- Allocated Resource |
- Running Containers |
- Preempted Resource |
- Num Non-AM container preempted |
- Num AM container preempted |
- Aggregated Resource Usage |
-
-
-
-
-
- {{model.app.allocatedResource}} |
- {{model.app.runningContainersNumber}} |
- {{model.app.preemptedResource}} |
- {{model.app.numAMContainerPreempted}} |
- {{model.app.numAMContainerPreempted}} |
- {{model.app.aggregatedResourceUsage}} |
-
-
-
-
-
-
-
-
-
Application Master Info
-
-
-
- Master Container Log |
- Master Node |
- Master Node Label Expression |
-
-
-
-
-
- Link |
- Link |
- {{model.app.amNodeLabelExpression}} |
-
-
-
-
-
-
-
- {{#if model.nodes}}
- {{#if model.rmContainers}}
-
- {{per-app-memusage-by-nodes-stacked-barchart
- nodes=model.nodes
- rmContainers=model.rmContainers
- parentId="stackd-bar-chart-mem"
- title=(concat 'Memory usage by nodes for: [' model.app.id ']')}}
-
-
-
-
-
- {{per-app-ncontainers-by-nodes-stacked-barchart
- nodes=model.nodes
- rmContainers=model.rmContainers
- parentId="stackd-bar-chart-ncontainer"
- title=(concat 'Running #Containers by nodes for: [' model.app.id ']')}}
-
- {{/if}}
- {{/if}}
-
-
+ {{outlet}}
-{{/if}}
-{{outlet}}
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app/attempts.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app/attempts.hbs
new file mode 100644
index 00000000000..81896e2812b
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app/attempts.hbs
@@ -0,0 +1,29 @@
+{{!
+ * 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.
+}}
+
+
+ {{timeline-view
+ parent-id="attempt-timeline-div"
+ my-id="timeline-view"
+ height="100%"
+ rmModel=model.attempts
+ label="shortAppAttemptId"
+ attemptModel=true
+ serviceName=model.serviceName
+ }}
+
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app/charts.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app/charts.hbs
new file mode 100644
index 00000000000..8d3388ab7d6
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app/charts.hbs
@@ -0,0 +1,43 @@
+{{!
+ * 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.
+}}
+
+
+
+ {{#if isRunningApp}}
+
+ {{per-app-memusage-by-nodes-stacked-barchart
+ nodes=model.nodes
+ rmContainers=model.rmContainers
+ parentId="stackd-bar-chart-mem"
+ title=(concat 'Memory usage by nodes for: [' model.appId ']')}}
+
+
+
+ {{per-app-ncontainers-by-nodes-stacked-barchart
+ nodes=model.nodes
+ rmContainers=model.rmContainers
+ parentId="stackd-bar-chart-ncontainer"
+ title=(concat 'Running #Containers by nodes for: [' model.appId ']')}}
+
+ {{else}}
+
+
No resource usage data is available for this application!
+
+ {{/if}}
+
+
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app/info.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app/info.hbs
new file mode 100644
index 00000000000..3cfec338699
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app/info.hbs
@@ -0,0 +1,167 @@
+{{!
+ * 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.
+}}
+
+
+
+ {{app-timeout-bar app=model.app}}
+
+
+
+
+
+
+ {{#if model.app.diagnostics}}
+
+ {{#if model.app.isFailed}}
+
+
+ Diagnostics
+
+
{{model.app.diagnostics}}
+
+ {{else}}
+
+
+ Diagnostics
+
+
{{model.app.diagnostics}}
+
+ {{/if}}
+
+ {{/if}}
+
+
+
+
+
+
Scheduling Info
+
+
+
+ Allocated Resource |
+ Running Containers |
+ Preempted Resource |
+ Num Non-AM container preempted |
+ Num AM container preempted |
+ Aggregated Resource Usage |
+
+
+
+
+ {{model.app.allocatedResource}} |
+ {{model.app.runningContainersNumber}} |
+ {{model.app.preemptedResource}} |
+ {{model.app.numAMContainerPreempted}} |
+ {{model.app.numAMContainerPreempted}} |
+ {{model.app.aggregatedResourceUsage}} |
+
+
+
+
+
+
+
+
+
+
+
+
Application Master Info
+
+
+
+ Master Container Log |
+ Master Node |
+ Master Node Label Expression |
+
+
+
+
+ Link |
+ Link |
+ {{model.app.amNodeLabelExpression}} |
+
+
+
+
+
+
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app/loading.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app/loading.hbs
new file mode 100644
index 00000000000..a95af2bdb39
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app/loading.hbs
@@ -0,0 +1,23 @@
+{{!
+ * 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.
+}}
+
+
+
+
![Loading...](assets/images/spinner.gif)
+
+
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
index 264e6b62da3..00701d90798 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps.hbs
@@ -24,14 +24,13 @@
-
Applications
+ Applications
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/services.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/services.hbs
deleted file mode 100644
index d56762cb36e..00000000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-apps/services.hbs
+++ /dev/null
@@ -1,25 +0,0 @@
-{{!--
- 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.
---}}
-
-{{#if model.apps}}
- {{em-table columns=columns rows=model.apps definition=tableDefinition}}
-{{else}}
-
Could not find any applications from this cluster
-{{/if}}
-
-{{outlet}}
\ No newline at end of file
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-services.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-services.hbs
index 9637a93182c..04788beecc8 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-services.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-services.hbs
@@ -31,8 +31,7 @@
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app-attempts-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app/attempts-test.js
similarity index 92%
rename from hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app-attempts-test.js
rename to hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app/attempts-test.js
index 3894db2b3d2..b8bad851ddc 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app-attempts-test.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app/attempts-test.js
@@ -18,7 +18,7 @@
import { moduleFor, test } from 'ember-qunit';
-moduleFor('controller:yarn-app-attempts', 'Unit | Controller | yarn app attempts', {
+moduleFor('controller:yarn-app/attempts', 'Unit | Controller | yarn app/attempts', {
// Specify the other units that are required for this test.
// needs: ['controller:foo']
});
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-apps/services-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app/charts-test.js
similarity index 92%
rename from hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-apps/services-test.js
rename to hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app/charts-test.js
index d0a1f854f46..91acb6c10ec 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-apps/services-test.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app/charts-test.js
@@ -18,7 +18,7 @@
import { moduleFor, test } from 'ember-qunit';
-moduleFor('controller:yarn-apps/services', 'Unit | Controller | yarn apps/services', {
+moduleFor('controller:yarn-app/charts', 'Unit | Controller | yarn app/charts', {
// Specify the other units that are required for this test.
// needs: ['controller:foo']
});
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app/info-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app/info-test.js
new file mode 100644
index 00000000000..910d3ef1a46
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/controllers/yarn-app/info-test.js
@@ -0,0 +1,30 @@
+/**
+ * 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 { moduleFor, test } from 'ember-qunit';
+
+moduleFor('controller:yarn-app/info', 'Unit | Controller | yarn app/info', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+ let controller = this.subject();
+ assert.ok(controller);
+});
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-app-attempts-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-app/attempts-test.js
similarity index 94%
rename from hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-app-attempts-test.js
rename to hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-app/attempts-test.js
index 917a1596af5..eaf2f65f58d 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-app-attempts-test.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-app/attempts-test.js
@@ -18,7 +18,7 @@
import { moduleFor, test } from 'ember-qunit';
-moduleFor('route:yarn-app-attempts', 'Unit | Route | yarn app attempts', {
+moduleFor('route:yarn-app/attempts', 'Unit | Route | yarn app/attempts', {
// Specify the other units that are required for this test.
// needs: ['controller:foo']
});
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-app/charts-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-app/charts-test.js
new file mode 100644
index 00000000000..1284c6f16a6
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-app/charts-test.js
@@ -0,0 +1,29 @@
+/**
+ * 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 { moduleFor, test } from 'ember-qunit';
+
+moduleFor('route:yarn-app/charts', 'Unit | Route | yarn app/charts', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+test('it exists', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+});
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-app/info-test.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-app/info-test.js
new file mode 100644
index 00000000000..f7dd6c87cd0
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/tests/unit/routes/yarn-app/info-test.js
@@ -0,0 +1,29 @@
+/**
+ * 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 { moduleFor, test } from 'ember-qunit';
+
+moduleFor('route:yarn-app/info', 'Unit | Route | yarn app/info', {
+ // Specify the other units that are required for this test.
+ // needs: ['controller:foo']
+});
+
+test('it exists', function(assert) {
+ let route = this.subject();
+ assert.ok(route);
+});