Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id CCFD8200C69 for ; Sat, 6 May 2017 20:18:38 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id CB8D9160B9F; Sat, 6 May 2017 18:18:38 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 6CEF0160BBC for ; Sat, 6 May 2017 20:18:36 +0200 (CEST) Received: (qmail 96177 invoked by uid 500); 6 May 2017 18:18:35 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 95878 invoked by uid 99); 6 May 2017 18:18:35 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 06 May 2017 18:18:35 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 0BB21E024D; Sat, 6 May 2017 18:18:35 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: sunilg@apache.org To: common-commits@hadoop.apache.org Date: Sat, 06 May 2017 18:18:37 -0000 Message-Id: <96ed36adac434bb0b411e18b7d9828c4@git.apache.org> In-Reply-To: <312cf33b1b2e49399cc2d5a75d93e0a2@git.apache.org> References: <312cf33b1b2e49399cc2d5a75d93e0a2@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [3/3] hadoop git commit: YARN-6398. Support to add native-service specific details in new YARN UI. Contributed by Akhil PB. archived-at: Sat, 06 May 2017 18:18:39 -0000 YARN-6398. Support to add native-service specific details in new YARN UI. 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/4d4d19a2 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/4d4d19a2 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/4d4d19a2 Branch: refs/heads/yarn-native-services Commit: 4d4d19a2d0eacae85337a9dcb326fc38bdf8fa59 Parents: ebcc28f Author: Sunil G Authored: Sat May 6 23:48:19 2017 +0530 Committer: Sunil G Committed: Sat May 6 23:48:19 2017 +0530 ---------------------------------------------------------------------- .../app/adapters/yarn-component-instance.js | 32 +++ .../app/adapters/yarn-service-component.js | 32 +++ .../webapp/app/adapters/yarn-service-info.js | 32 +++ .../main/webapp/app/adapters/yarn-servicedef.js | 13 + .../webapp/app/components/confirm-dialog.js | 31 +++ .../main/webapp/app/components/metrics-table.js | 24 ++ .../webapp/app/controllers/app-table-columns.js | 4 +- .../webapp/app/controllers/yarn-app-attempt.js | 8 +- .../webapp/app/controllers/yarn-app-attempts.js | 57 ----- .../src/main/webapp/app/controllers/yarn-app.js | 56 ++--- .../webapp/app/controllers/yarn-app/attempts.js | 24 ++ .../webapp/app/controllers/yarn-app/charts.js | 28 +++ .../app/controllers/yarn-app/components.js | 63 +++++ .../webapp/app/controllers/yarn-app/configs.js | 24 ++ .../webapp/app/controllers/yarn-app/info.js | 92 +++++++ .../app/controllers/yarn-component-instance.js | 59 +++++ .../controllers/yarn-component-instance/info.js | 25 ++ .../app/controllers/yarn-component-instances.js | 59 +++++ .../yarn-component-instances/configs.js | 25 ++ .../yarn-component-instances/info.js | 62 +++++ .../webapp/app/helpers/check-availability.js | 28 +++ .../app/models/yarn-component-instance.js | 51 ++++ .../webapp/app/models/yarn-service-component.js | 46 ++++ .../main/webapp/app/models/yarn-service-info.js | 57 +++++ .../src/main/webapp/app/router.js | 16 +- .../main/webapp/app/routes/yarn-app-attempts.js | 34 --- .../src/main/webapp/app/routes/yarn-app.js | 35 +-- .../main/webapp/app/routes/yarn-app/attempts.js | 36 +++ .../main/webapp/app/routes/yarn-app/charts.js | 53 ++++ .../webapp/app/routes/yarn-app/components.js | 49 ++++ .../main/webapp/app/routes/yarn-app/configs.js | 52 ++++ .../src/main/webapp/app/routes/yarn-app/info.js | 46 ++++ .../app/routes/yarn-component-instance.js | 29 +++ .../app/routes/yarn-component-instance/info.js | 45 ++++ .../app/routes/yarn-component-instances.js | 29 +++ .../routes/yarn-component-instances/configs.js | 44 ++++ .../app/routes/yarn-component-instances/info.js | 53 ++++ .../app/serializers/yarn-component-instance.js | 72 ++++++ .../app/serializers/yarn-service-component.js | 77 ++++++ .../webapp/app/serializers/yarn-service-info.js | 87 +++++++ .../src/main/webapp/app/styles/app.css | 31 ++- .../app/templates/components/confirm-dialog.hbs | 37 +++ .../app/templates/components/metrics-table.hbs | 82 +++++++ .../webapp/app/templates/yarn-app-attempts.hbs | 55 ----- .../src/main/webapp/app/templates/yarn-app.hbs | 240 ++----------------- .../webapp/app/templates/yarn-app/attempts.hbs | 29 +++ .../webapp/app/templates/yarn-app/charts.hbs | 43 ++++ .../app/templates/yarn-app/components.hbs | 23 ++ .../webapp/app/templates/yarn-app/configs.hbs | 57 +++++ .../main/webapp/app/templates/yarn-app/info.hbs | 226 +++++++++++++++++ .../webapp/app/templates/yarn-app/loading.hbs | 23 ++ .../app/templates/yarn-component-instance.hbs | 43 ++++ .../templates/yarn-component-instance/info.hbs | 81 +++++++ .../app/templates/yarn-component-instances.hbs | 46 ++++ .../yarn-component-instances/configs.hbs | 53 ++++ .../templates/yarn-component-instances/info.hbs | 28 +++ .../yarn-component-instances/loading.hbs | 23 ++ .../main/webapp/app/templates/yarn-services.hbs | 5 +- .../src/main/webapp/config/default-config.js | 1 + .../components/confirm-dialog-test.js | 43 ++++ .../components/metrics-table-test.js | 43 ++++ .../adapters/yarn-component-instance-test.js | 30 +++ .../adapters/yarn-service-component-test.js | 30 +++ .../unit/adapters/yarn-service-info-test.js | 30 +++ .../unit/controllers/yarn-app-attempts-test.js | 30 --- .../unit/controllers/yarn-app/attempts-test.js | 30 +++ .../unit/controllers/yarn-app/charts-test.js | 30 +++ .../controllers/yarn-app/components-test.js | 30 +++ .../unit/controllers/yarn-app/configs-test.js | 30 +++ .../unit/controllers/yarn-app/info-test.js | 30 +++ .../controllers/yarn-component-instance-test.js | 30 +++ .../yarn-component-instance/info-test.js | 30 +++ .../yarn-component-instances-test.js | 30 +++ .../yarn-component-instances/configs-test.js | 30 +++ .../yarn-component-instances/info-test.js | 30 +++ .../unit/helpers/check-availability-test.js | 28 +++ .../unit/models/yarn-component-instance-test.js | 30 +++ .../unit/models/yarn-service-component-test.js | 30 +++ .../tests/unit/models/yarn-service-info-test.js | 30 +++ .../tests/unit/routes/yarn-app-attempts-test.js | 29 --- .../tests/unit/routes/yarn-app/attempts-test.js | 29 +++ .../tests/unit/routes/yarn-app/charts-test.js | 29 +++ .../unit/routes/yarn-app/components-test.js | 29 +++ .../tests/unit/routes/yarn-app/configs-test.js | 29 +++ .../tests/unit/routes/yarn-app/info-test.js | 29 +++ .../unit/routes/yarn-component-instance-test.js | 29 +++ .../routes/yarn-component-instance/info-test.js | 29 +++ .../routes/yarn-component-instances-test.js | 29 +++ .../yarn-component-instances/configs-test.js | 29 +++ .../yarn-component-instances/info-test.js | 29 +++ .../serializers/yarn-component-instance-test.js | 33 +++ .../serializers/yarn-service-component-test.js | 33 +++ .../unit/serializers/yarn-service-info-test.js | 33 +++ 93 files changed, 3364 insertions(+), 493 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/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 new file mode 100644 index 0000000..062a006 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-component-instance.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 AbstractAdapter from './abstract'; + +export default AbstractAdapter.extend({ + address: "timelineWebAddress", + restNameSpace: "timelineService", + serverName: "ATS", + + urlForQuery(query/*, modelName*/) { + var url = this.buildURL(); + url += '/' + query.appId + '/entities/COMPONENT_INSTANCE?fields=ALL'; + delete query.appId; + return url; + } +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/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 new file mode 100644 index 0000000..c356192 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-service-component.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 AbstractAdapter from './abstract'; + +export default AbstractAdapter.extend({ + address: "timelineWebAddress", + restNameSpace: "timelineService", + serverName: "ATS", + + urlForQuery(query/*, modelName*/) { + var url = this.buildURL(); + url += '/' + query.appId + '/entities/COMPONENT?fields=ALL'; + delete query.appId; + return url; + } +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/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 new file mode 100644 index 0000000..dec3e50 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-service-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 AbstractAdapter from './abstract'; + +export default AbstractAdapter.extend({ + address: "timelineWebAddress", + restNameSpace: "timelineService", + serverName: "ATS", + + urlForQueryRecord(query/*, modelName*/) { + var url = this.buildURL(); + url += '/' + query.appId + '/entities/SERVICE_ATTEMPT?fields=ALL'; + delete query.appId; + return url; + } +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-servicedef.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-servicedef.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-servicedef.js index c362f5e..dc5dbfd 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-servicedef.js +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/adapters/yarn-servicedef.js @@ -27,5 +27,18 @@ export default RESTAbstractAdapter.extend({ deployService(request) { var url = this.buildURL(); return this.ajax(url, "POST", {data: request}); + }, + + stopService(serviceName) { + var url = this.buildURL(); + url += "/" + serviceName; + var data = {"state": "STOPPED", "name": serviceName}; + return this.ajax(url, "PUT", {data: data}); + }, + + deleteService(serviceName) { + var url = this.buildURL(); + url += "/" + serviceName; + return this.ajax(url, "DELETE", {data: {}}); } }); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/confirm-dialog.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/confirm-dialog.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/confirm-dialog.js new file mode 100644 index 0000000..a6f518b --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/confirm-dialog.js @@ -0,0 +1,31 @@ +/** + * 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.Component.extend({ + dialogId: "confirmModalDialog", + title: "Confirm", + message: "Are you sure?", + + actions: { + yesConfirmed() { + this.sendAction(); + } + } +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/metrics-table.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/metrics-table.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/metrics-table.js new file mode 100644 index 0000000..62b2fc5 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/metrics-table.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.Component.extend({ + metrics: null, + type: '' +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/app-table-columns.js ---------------------------------------------------------------------- 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 704abfb..8a34f1a 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')}` }; } }, { http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app-attempt.js ---------------------------------------------------------------------- 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 fbe6fa9..1121a84 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}]` }]; http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app-attempts.js ---------------------------------------------------------------------- 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 77e531e..0000000 --- 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; - }) - -}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app.js ---------------------------------------------------------------------- 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 e7d65cd..c40697f 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); + } }); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/attempts.js ---------------------------------------------------------------------- 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 0000000..a6cba9e --- /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 +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/charts.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/charts.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/charts.js new file mode 100644 index 0000000..1078b14 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/charts.js @@ -0,0 +1,28 @@ +/** + * 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, + + isRunningApp: Ember.computed('model.app.state', function() { + return this.get('model.app.state') === "RUNNING"; + }) +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/components.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/components.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/components.js new file mode 100644 index 0000000..947cb98 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/components.js @@ -0,0 +1,63 @@ +/** + * 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 ColumnDef from 'em-table/utils/column-definition'; + +export default Ember.Controller.extend({ + queryParams: ["service"], + service: undefined, + + tableColumns: Ember.computed('model.appId', 'model.serviceName', function() { + var cols = []; + var service = this.get('model.serviceName'); + var appId = this.get('model.appId'); + + cols.push({ + id: 'name', + headerTitle: 'Component Group', + contentPath: 'name', + cellComponentName: 'em-table-linked-cell', + getCellContent: function(row) { + return { + displayText: row.get('name'), + href: `#/yarn-component-instances/${row.get('name')}/info?service=${service}&&appid=${appId}` + }; + } + }, { + id: 'vcores', + headerTitle: 'VCores', + contentPath: 'vcores' + }, { + id: 'memory', + headerTitle: 'Memory (MB)', + contentPath: 'memory' + }, { + id: 'instances', + headerTitle: '# Components', + contentPath: 'instances', + observePath: true + }, { + id: 'createdDate', + headerTitle: 'Created Time', + contentPath: 'createdDate' + }); + + return ColumnDef.make(cols); + }) +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/configs.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/configs.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/configs.js new file mode 100644 index 0000000..a6cba9e --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/configs.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 +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/info.js ---------------------------------------------------------------------- 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 0000000..3de6687 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-app/info.js @@ -0,0 +1,92 @@ +/** + * 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, + isLoading: false, + actionResponse: null, + + actions: { + showStopServiceConfirm() { + this.set('actionResponse', null); + Ember.$("#stopServiceConfirmDialog").modal('show'); + }, + + stopService() { + var self = this; + Ember.$("#stopServiceConfirmDialog").modal('hide'); + var adapter = this.store.adapterFor('yarn-servicedef'); + self.set('isLoading', true); + adapter.stopService(this.get('service')).then(function() { + self.set('actionResponse', {msg: 'Service stopped successfully. Auto refreshing in 5 seconds.', type: 'success'}); + Ember.run.later(self, function() { + this.set('actionResponse', null); + this.send("refresh"); + }, 5000); + }, function(errr) { + let messg = errr.diagnostics || 'Error: Stop service failed!'; + self.set('actionResponse', {msg: messg, type: 'error'}); + }).finally(function() { + self.set('isLoading', false); + }); + }, + + showDeleteServiceConfirm() { + this.set('actionResponse', null); + Ember.$("#deleteServiceConfirmDialog").modal('show'); + }, + + deleteService() { + var self = this; + Ember.$("#deleteServiceConfirmDialog").modal('hide'); + var adapter = this.store.adapterFor('yarn-servicedef'); + self.set('isLoading', true); + adapter.deleteService(this.get('service')).then(function() { + self.set('actionResponse', {msg: 'Service deleted successfully. Redirecting to services in 5 seconds.', type: 'success'}); + Ember.run.later(self, function() { + this.set('actionResponse', null); + this.transitionToRoute("yarn-services"); + }, 5000); + }, function(errr) { + let messg = errr.diagnostics || 'Error: Delete service failed!'; + self.set('actionResponse', {msg: messg, type: 'error'}); + }).finally(function() { + self.set('isLoading', false); + }); + }, + + resetActionResponse() { + this.set('actionResponse', null); + } + }, + + isRunningService: Ember.computed('model.serviceName', 'model.app.state', function() { + return this.get('service') !== undefined && this.get('model.app.state') === 'RUNNING'; + }), + + amHostHttpAddressFormatted: Ember.computed('model.app.amHostHttpAddress', function() { + var amHostAddress = this.get('model.app.amHostHttpAddress'); + if (amHostAddress && amHostAddress.indexOf('://') < 0) { + amHostAddress = 'http://' + amHostAddress; + } + return amHostAddress; + }) +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instance.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instance.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instance.js new file mode 100644 index 0000000..4b8dbf4 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instance.js @@ -0,0 +1,59 @@ +/** + * 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({ + componentName: '', + instanceName: '', + serviceName: '', + appId: '', + + breadcrumbs: [{ + text: "Home", + routeName: 'application' + }, { + text: "Services", + routeName: 'yarn-services', + }], + + updateBreadcrumbs(appId, serviceName, componentName, instanceName) { + var crumbs = [{ + text: "Home", + routeName: 'application' + }, { + text: "Services", + routeName: 'yarn-services', + }]; + if (appId && serviceName && componentName && instanceName) { + crumbs.push({ + text: `${serviceName} [${appId}]`, + href: `#/yarn-app/${appId}/info?service=${serviceName}` + }, { + text: 'Components', + href: `#/yarn-app/${appId}/components?service=${serviceName}` + }, { + text: `${componentName}`, + href: `#/yarn-component-instances/${componentName}/info?service=${serviceName}&&appid=${appId}` + }, { + text: `${instanceName}` + }); + } + this.set('breadcrumbs', crumbs); + } +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instance/info.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instance/info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instance/info.js new file mode 100644 index 0000000..e3abcb7 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instance/info.js @@ -0,0 +1,25 @@ +/** + * 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: ["appid", "service"], + appid: undefined, + service: undefined +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instances.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instances.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instances.js new file mode 100644 index 0000000..965631c --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instances.js @@ -0,0 +1,59 @@ +/** + * 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({ + componentName: '', + serviceName: '', + appId: '', + + breadcrumbs: [{ + text: "Home", + routeName: 'application' + }, { + text: "Services", + routeName: 'yarn-services', + }], + + updateBreadcrumbs(appId, serviceName, componentName, tailCrumbs) { + var crumbs = [{ + text: "Home", + routeName: 'application' + }, { + text: "Services", + routeName: 'yarn-services', + }]; + if (appId && serviceName && componentName) { + crumbs.push({ + text: `${serviceName} [${appId}]`, + href: `#/yarn-app/${appId}/info?service=${serviceName}` + }, { + text: 'Components', + href: `#/yarn-app/${appId}/components?service=${serviceName}` + }, { + text: `${componentName}`, + href: `#/yarn-component-instances/${componentName}/info?service=${serviceName}&&appid=${appId}` + }); + } + if (tailCrumbs) { + crumbs.pushObjects(tailCrumbs); + } + this.set('breadcrumbs', crumbs); + } +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instances/configs.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instances/configs.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instances/configs.js new file mode 100644 index 0000000..dac6498 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instances/configs.js @@ -0,0 +1,25 @@ +/** + * 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", "appid"], + appid: undefined, + service: undefined +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instances/info.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instances/info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instances/info.js new file mode 100644 index 0000000..a676b34 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/controllers/yarn-component-instances/info.js @@ -0,0 +1,62 @@ +/** + * 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 ColumnDef from 'em-table/utils/column-definition'; + +export default Ember.Controller.extend({ + queryParams: ["service", "appid"], + appid: undefined, + service: undefined, + + tableColumns: Ember.computed('model.appId', 'model.serviceName', function() { + var cols = []; + var appId = this.get('model.appId'); + var serviceName = this.get('model.serviceName'); + + cols.push({ + id: 'instanceName', + headerTitle: 'Component Name', + contentPath: 'instanceName', + cellComponentName: 'em-table-linked-cell', + getCellContent: function(row) { + var component = row.get('component'); + var instance = row.get('instanceName'); + return { + text: instance, + href: `#/yarn-component-instance/${component}/instances/${instance}/info?appid=${appId}&&service=${serviceName}` + }; + } + }, { + id: 'containerId', + headerTitle: 'Current Container Id', + contentPath: 'containerId', + minWidth: '350px' + }, { + id: 'state', + headerTitle: 'State', + contentPath: 'state' + }, { + id: 'startedDate', + headerTitle: 'Started Time', + contentPath: 'startedDate' + }); + + return ColumnDef.make(cols); + }) +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/check-availability.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/check-availability.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/check-availability.js new file mode 100644 index 0000000..4470d65 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/check-availability.js @@ -0,0 +1,28 @@ +/** + * 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 function checkAvailability(params/*, hash*/) { + if (params[0] !== undefined && params[0] !== null && params[0] !== '') { + return params[0]; + } + return 'N/A'; +} + +export default Ember.Helper.helper(checkAvailability); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-component-instance.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-component-instance.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-component-instance.js new file mode 100644 index 0000000..532fc55 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-component-instance.js @@ -0,0 +1,51 @@ +/** + * 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 DS from 'ember-data'; +import Ember from 'ember'; +import Converter from 'yarn-ui/utils/converter'; + +export default DS.Model.extend({ + containerId: DS.attr('string'), + component: DS.attr('string'), + instanceName: DS.attr('string'), + state: DS.attr('number'), + createdTimestamp: DS.attr('number'), + startedTimestamp: DS.attr('number'), + host: DS.attr('string'), + node: DS.attr('string'), + hostUrl: DS.attr('string'), + ipAddr: DS.attr('string'), + exitStatusCode: DS.attr('string'), + + createdDate: Ember.computed('createdTimestamp', function() { + var timestamp = this.get('createdTimestamp'); + if (timestamp > 0) { + return Converter.timeStampToDate(timestamp); + } + return 'N/A'; + }), + + startedDate: Ember.computed('startedTimestamp', function() { + var timestamp = this.get('startedTimestamp'); + if (timestamp > 0) { + return Converter.timeStampToDate(timestamp); + } + return 'N/A'; + }) +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-service-component.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-service-component.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-service-component.js new file mode 100644 index 0000000..9e06419 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-service-component.js @@ -0,0 +1,46 @@ +/** + * 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 DS from 'ember-data'; +import Ember from 'ember'; +import Converter from 'yarn-ui/utils/converter'; + +export default DS.Model.extend({ + name: DS.attr('string'), + vcores: DS.attr('string'), + memory: DS.attr('string'), + priority: DS.attr('string'), + instances: DS.attr('string'), + createdTimestamp: DS.attr('number'), + + configs: DS.attr({defaultValue: function() { + return Ember.A(); + }}), + + metrics: DS.attr({defaultValue: function() { + return Ember.Object.create(); + }}), + + createdDate: Ember.computed('createdTimestamp', function() { + var timestamp = this.get('createdTimestamp'); + if (timestamp > 0) { + return Converter.timeStampToDate(timestamp); + } + return 'N/A'; + }) +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-service-info.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-service-info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-service-info.js new file mode 100644 index 0000000..7b961e8 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-service-info.js @@ -0,0 +1,57 @@ +/** + * 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 DS from 'ember-data'; +import Ember from 'ember'; +import Converter from 'yarn-ui/utils/converter'; + +export default DS.Model.extend({ + name: DS.attr('string'), + appId: DS.attr('string'), + state: DS.attr('string'), + createdTimestamp: DS.attr('number'), + launchTimestamp: DS.attr('number'), + + quicklinks: DS.attr({defaultValue: function() { + return Ember.A(); + }}), + + configs: DS.attr({defaultValue: function() { + return Ember.A(); + }}), + + metrics: DS.attr({defaultValue: function() { + return Ember.Object.create(); + }}), + + createdDate: Ember.computed('createdTimestamp', function() { + var timestamp = this.get('createdTimestamp'); + if (timestamp > 0) { + return Converter.timeStampToDate(timestamp); + } + return 'N/A'; + }), + + launchDate: Ember.computed('launchTimestamp', function() { + var timestamp = this.get('launchTimestamp'); + if (timestamp > 0) { + return Converter.timeStampToDate(timestamp); + } + return 'N/A'; + }) +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/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 5710627..75cdfc9 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 @@ -50,11 +50,23 @@ Router.map(function() { this.route('yarn-deploy-service'); 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('components', {path: '/:app_id/components'}); + this.route('charts', {path: '/:app_id/charts'}); + this.route('configs', {path: '/:app_id/configs'}); + }); + this.route('yarn-component-instances', function() { + this.route('info', {path: '/:component_name/info'}); + this.route('configs', {path: '/:component_name/configs'}); + }); + this.route('yarn-component-instance', function() { + this.route('info', {path: '/:component_name/instances/:instance_name/info'}); + }); 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' }); }); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempts.js ---------------------------------------------------------------------- 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 deleted file mode 100644 index 78ff1c9..0000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app-attempts.js +++ /dev/null @@ -1,34 +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 AbstractRoute from './abstract'; - -export default AbstractRoute.extend({ - model(param) { - return this.store.query('yarn-app-attempt', { appId: param.app_id}).then(function (attempts) { - return { - appId: param.app_id, - attempts: attempts - }; - }); - }, - - unloadAll() { - this.store.unloadAll('yarn-app-attempt'); - } -}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app.js ---------------------------------------------------------------------- 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 86d845c..58e3fe3 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,37 +16,14 @@ * limitations under the License. */ -import Ember from 'ember'; - import AbstractRoute from './abstract'; export default AbstractRoute.extend({ - model(param) { - return Ember.RSVP.hash({ - 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'); - var rmContainers = this.store.query('yarn-container', - { - app_attempt_id: appAttemptId, - is_rm: true - }); - return rmContainers; - } - }.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'); + actions: { + updateBreadcrumbs(appId, serviceName, tailCrumbs) { + var controller = this.controllerFor('yarn-app'); + controller.setProperties({appId: appId, serviceName: serviceName}); + controller.updateBreadcrumbs(appId, serviceName, tailCrumbs); + } } }); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/attempts.js ---------------------------------------------------------------------- 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 new file mode 100644 index 0000000..baa69d0 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/attempts.js @@ -0,0 +1,36 @@ +/** + * 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 AbstractRoute from '../abstract'; + +export default AbstractRoute.extend({ + model(param, transition) { + transition.send('updateBreadcrumbs', param.app_id, param.service, [{text: 'Attempts'}]); + return this.store.query('yarn-app-attempt', {appId: param.app_id}).then(function (attempts) { + return { + appId: param.app_id, + serviceName: param.service, + attempts: attempts + }; + }); + }, + + unloadAll() { + this.store.unloadAll('yarn-app-attempt'); + } +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/charts.js ---------------------------------------------------------------------- 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 0000000..1b687db --- /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'); + } +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/components.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/components.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/components.js new file mode 100644 index 0000000..8f6f40f --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/components.js @@ -0,0 +1,49 @@ +/** + * 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: 'Components'}]); + return Ember.RSVP.hash({ + appId: param.app_id, + serviceName: param.service, + components: this.store.query('yarn-service-component', {appId: param.app_id, type: 'COMPONENT'}).catch(function() { + return []; + }), + instances: this.store.query('yarn-component-instance', {appId: param.app_id}).catch(function() { + return []; + }) + }); + }, + + afterModel(model) { + let instances = model.instances; + model.components.forEach(function(component) { + var num = instances.filterBy('component', component.get('name')).length; + component.set('instances', num); + }); + }, + + unloadAll() { + this.store.unloadAll('yarn-service-component'); + this.store.unloadAll('yarn-component-instance'); + } +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/configs.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/configs.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/configs.js new file mode 100644 index 0000000..7502481 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/configs.js @@ -0,0 +1,52 @@ +/** + * 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: "Configurations & Metrics"}]); + return Ember.RSVP.hash({ + appId: param.app_id, + serviceName: param.service, + + configs: this.store.queryRecord('yarn-service-info', {appId: param.app_id}).then(function(info) { + if (info && info.get('configs')) { + return info.get('configs'); + } + return []; + }, function() { + return []; + }), + + metrics: this.store.queryRecord('yarn-service-info', {appId: param.app_id}).then(function(info) { + if (info && info.get('metrics')) { + return info.get('metrics'); + } + return null; + }, function() { + return null; + }) + }); + }, + + unloadAll() { + this.store.unloadAll('yarn-service-info'); + } +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/info.js ---------------------------------------------------------------------- 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 0000000..3f31c32 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-app/info.js @@ -0,0 +1,46 @@ +/** + * 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); + return Ember.RSVP.hash({ + appId: param.app_id, + serviceName: param.service, + + app: this.store.find('yarn-app', param.app_id), + + quicklinks: this.store.queryRecord('yarn-service-info', {appId: param.app_id}).then(function(info) { + if (info && info.get('quicklinks')) { + return info.get('quicklinks'); + } + return []; + }, function() { + return []; + }) + }); + }, + + unloadAll() { + this.store.unloadAll('yarn-app'); + this.store.unloadAll('yarn-service-info'); + } +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instance.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instance.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instance.js new file mode 100644 index 0000000..681eed5 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instance.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 AbstractRoute from './abstract'; + +export default AbstractRoute.extend({ + actions: { + updateBreadcrumbs(appId, serviceName, componentName, instanceName) { + var controller = this.controllerFor('yarn-component-instance'); + controller.setProperties({appId: appId, serviceName: serviceName, componentName: componentName, instanceName: instanceName}); + controller.updateBreadcrumbs(appId, serviceName, componentName, instanceName); + } + } +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instance/info.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instance/info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instance/info.js new file mode 100644 index 0000000..3753c75 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instance/info.js @@ -0,0 +1,45 @@ +/** + * 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(params, transition) { + var instanceName = params.instance_name; + transition.send('updateBreadcrumbs', params.appid, params.service, params.component_name, instanceName); + return Ember.RSVP.hash({ + appId: params.appid, + serviceName: params.service, + componentName: params.component_name, + instanceName: instanceName, + container: this.store.query('yarn-component-instance', {appId: params.appid}).then(function(instances) { + if (instances && instances.findBy('instanceName', instanceName)) { + return instances.findBy('instanceName', instanceName); + } + return null; + }, function() { + return null; + }), + }); + }, + + unloadAll() { + this.store.unloadAll('yarn-component-instance'); + } +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instances.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instances.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instances.js new file mode 100644 index 0000000..0190911 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instances.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 AbstractRoute from './abstract'; + +export default AbstractRoute.extend({ + actions: { + updateBreadcrumbs(appId, serviceName, componentName, tailCrumbs) { + var controller = this.controllerFor('yarn-component-instances'); + controller.setProperties({appId: appId, componentName: componentName, serviceName: serviceName}); + controller.updateBreadcrumbs(appId, serviceName, componentName, tailCrumbs); + } + } +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instances/configs.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instances/configs.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instances/configs.js new file mode 100644 index 0000000..a2540fe --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instances/configs.js @@ -0,0 +1,44 @@ +/** + * 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(params, transition) { + var componentName = params.component_name; + transition.send('updateBreadcrumbs', params.appid, params.service, componentName, [{text: 'Configurations'}]); + return Ember.RSVP.hash({ + appId: params.appid, + serviceName: params.service, + componentName: componentName, + configs: this.store.query('yarn-service-component', {appId: params.appid}).then(function(components) { + if (components && components.findBy('name', componentName)) { + return components.findBy('name', componentName).get('configs'); + } + return []; + }, function() { + return []; + }) + }); + }, + + unloadAll() { + this.store.unloadAll('yarn-service-component'); + } +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instances/info.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instances/info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instances/info.js new file mode 100644 index 0000000..83fd420 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/yarn-component-instances/info.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(params, transition) { + var componentName = params.component_name; + transition.send('updateBreadcrumbs', params.appid, params.service, componentName); + return Ember.RSVP.hash({ + appId: params.appid, + serviceName: params.service, + componentName: componentName, + instances: this.store.query('yarn-component-instance', {appId: params.appid}).then(function(instances) { + if (instances && instances.filterBy('component', componentName)) { + return instances.filterBy('component', componentName); + } + return []; + }, function() { + return []; + }), + metrics: this.store.query('yarn-service-component', {appId: params.appid}).then(function(components) { + if (components && components.findBy('name', componentName)) { + return components.findBy('name', componentName).get('metrics'); + } + return null; + }, function() { + return null; + }) + }); + }, + + unloadAll() { + this.store.unloadAll('yarn-service-component'); + this.store.unloadAll('yarn-component-instance'); + } +}); http://git-wip-us.apache.org/repos/asf/hadoop/blob/4d4d19a2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-component-instance.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-component-instance.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-component-instance.js new file mode 100644 index 0000000..82eb273 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-component-instance.js @@ -0,0 +1,72 @@ +/** + * 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 DS from 'ember-data'; + +export default DS.JSONAPISerializer.extend({ + internalNormalizeSingleResponse(store, primaryModelClass, payload) { + var info = payload.info; + + var fixedPayload = { + id: 'yarn_component_instance_' + payload.id, + type: primaryModelClass.modelName, + attributes: { + containerId: payload.id, + component: info.COMPONENT_NAME, + instanceName: info.COMPONENT_NAME + '_' + payload.instanceId, + state: info.STATE, + createdTimestamp: payload.createdtime, + startedTimestamp: info.LAUNCH_TIME, + host: info.HOSTNAME, + node: info.BARE_HOST, + hostUrl: 'N/A', + ipAddr: info.IP, + exitStatusCode: info.EXIT_STATUS_CODE + } + }; + + return fixedPayload; + }, + + normalizeArrayResponse(store, primaryModelClass, payload/*, id, requestType*/) { + var normalizedResponse = {data: []}; + var instanceUid = {}; + + if (payload && Array.isArray(payload)) { + this.sortPayloadByCreatedTimeAscending(payload); + + payload.forEach(function(container) { + let componentName = container.info.COMPONENT_NAME; + if (!instanceUid[componentName]) { + instanceUid[componentName] = 0; + } + container.instanceId = ++instanceUid[componentName]; + var pl = this.internalNormalizeSingleResponse(store, primaryModelClass, container); + normalizedResponse.data.push(pl); + }.bind(this)); + } + + return normalizedResponse; + }, + + sortPayloadByCreatedTimeAscending(payload) { + payload.sort(function(inst1, inst2) { + return inst1.createdtime - inst2.createdtime; + }); + } +}); --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org For additional commands, e-mail: common-commits-help@hadoop.apache.org