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}} -
-
- -
-
-
-
Basic Info
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Application IDNameUserQueueStateFinal StatusStart TimeElapsed TimeFinished TimePriorityProgressIs Unmanaged AM
{{model.app.id}}{{model.app.appName}}{{model.app.user}}{{model.app.queue}}{{model.app.state}} - - {{model.app.finalStatus}} - - {{model.app.startTime}}{{model.app.formattedElapsedTime}}{{model.app.validatedFinishedTs}}{{model.app.priority}} -
-
- {{model.app.progress}}% -
-
-
{{model.app.unmanagedApplication}}
-
-
-
-
- -
- {{#if model.app.diagnostics}} -
- {{#if model.app.isFailed}} -
-
- Diagnostics -
-
{{model.app.diagnostics}}
-
- {{else}} -
-
- Diagnostics -
-
{{model.app.diagnostics}}
-
- {{/if}} -
- {{/if}} -
- -
-
-
-
Scheduling Info
- - - - - - - - - - - - - - - - - - - - - - -
Allocated ResourceRunning ContainersPreempted ResourceNum Non-AM container preemptedNum AM container preemptedAggregated 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 LogMaster NodeMaster Node Label Expression
LinkLink{{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}} +
+
+ +
+
+
+
+ Basic Info +
+
+ + + + + + + + + + + + + + {{#unless model.serviceName}} + + + {{/unless}} + + + + + + + + + + + + + + + + {{#unless model.serviceName}} + + + {{/unless}} + + +
Application IDNameUserQueueStateFinal StatusStart TimeElapsed TimeFinished TimePriorityProgressIs Unmanaged AM
{{model.app.id}}{{model.app.appName}}{{model.app.user}}{{model.app.queue}}{{model.app.state}} + + {{model.app.finalStatus}} + + {{model.app.startTime}}{{model.app.formattedElapsedTime}}{{model.app.validatedFinishedTs}}{{model.app.priority}} +
+
+ {{model.app.progress}}% +
+
+
{{model.app.unmanagedApplication}}
+
+
+
+
+ +
+ {{#if model.app.diagnostics}} +
+ {{#if model.app.isFailed}} +
+
+ Diagnostics +
+
{{model.app.diagnostics}}
+
+ {{else}} +
+
+ Diagnostics +
+
{{model.app.diagnostics}}
+
+ {{/if}} +
+ {{/if}} +
+ +
+
+
+
Scheduling Info
+ + + + + + + + + + + + + + + + + + + + + +
Allocated ResourceRunning ContainersPreempted ResourceNum Non-AM container preemptedNum AM container preemptedAggregated 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 LogMaster NodeMaster Node Label Expression
LinkLink{{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... +
+
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); +});