http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/mappers/jobs_mapper.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mappers/jobs_mapper.js b/ambari-web/app/mappers/jobs_mapper.js deleted file mode 100644 index 9e9896b..0000000 --- a/ambari-web/app/mappers/jobs_mapper.js +++ /dev/null @@ -1,142 +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. - */ - -var App = require('app'); -var fillEmptyValues = function(self, obj) { - $.each(self.config, function(field, value) { - if (obj[value].length == 0) { - obj[value].push({x: 0, y: 0}); - }; - }); -}; - -App.jobsMapper = App.QuickDataMapper.create({ - model:App.Job, - map:function (json) { - if (!this.get('model')) { - return; - } - if (json.jobs) { - var result = []; - json.jobs.forEach(function (item) { - result.push(this.parseIt(item, this.config)); - }, this); - - var r = Ember.ArrayProxy.create({"content":[]}); - result.forEach(function(item){ - r.content.push(App.Job2.create(item)); - }); - - this.set('controller.content.jobs', r.content); - } - }, - config:{ - id:'jobId', - run_id:'workflowId', - job_name:'jobName', - workflow_entity_name:'workflowEntityName', - user_name:'userName', - submit_time:'submitTime', - maps:'maps', - reduces:'reduces', - status:'status', - input:'inputBytes', - output:'outputBytes', - elapsed_time:'elapsedTime' - } -}); - -App.jobTimeLineMapper = App.QuickDataMapper.create({ - model: null, //model will be set outside of mapper - config:{ - map:'map', - shuffle:'shuffle', - reduce:'reduce' - }, - map:function (json) { - var job = this.get('model'); // @model App.MainAppsItemBarView - var parseResult = this.parseIt(json, this.config); - var self = this; - $.each(parseResult, function (field, value) { - var d = self.coordinatesModify(value); - d.reverse(); - d = self.coordinatesModify(d); - d.reverse(); - job.set(field, d); - }); - fillEmptyValues(this, job); - }, - - coordinatesModify: function(data) { - var d = this.zeroAdding(data); - d.reverse(); - d = this.zeroAdding(d); - d.reverse(); - return d; - }, - - zeroAdding: function(data) { - var d = []; - var last_y = 0; - data.forEach(function(coordinates) { - if (coordinates.y != 0 && last_y == 0) { - d.push({x: coordinates.x, y: 0}); - } - d.push(coordinates); - last_y = coordinates.y; - }); - return d; - } -}); - -App.taskTimeLineMapper = App.QuickDataMapper.create({ - model: null, //model will be set outside of mapper - config:{ - allmap:'map', - allshuffle:'shuffle', - allreduce:'reduce' - }, - map:function (json) { - var job = this.get('model'); // @model App.MainAppsItemBarView - var parseResult = this.parseIt(json, this.config); - - $.each(parseResult, function (field, value) { - job.set(field, value); - }); - fillEmptyValues(this, job); - } -}); - -App.jobTasksMapper = App.QuickDataMapper.create({ - model: null, //model will be set outside of mapper - config:{ - mapNodeLocal:'mapNodeLocal', - mapRackLocal:'mapRackLocal', - mapOffSwitch:'mapOffSwitch', - reduceOffSwitch:'reduceOffSwitch', - submit:'submitTime', - finish:'finishTime' - }, - map:function (json) { - var job = this.get('model'); // @model App.MainAppsItemBarView - var parseResult = this.parseIt(json, this.config); - $.each(parseResult, function (field, value) { - job.set(field, value); - }); - } -});
http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/mappers/runs_mapper.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mappers/runs_mapper.js b/ambari-web/app/mappers/runs_mapper.js deleted file mode 100644 index ecf9ae1..0000000 --- a/ambari-web/app/mappers/runs_mapper.js +++ /dev/null @@ -1,92 +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. - */ - -var App = require('app'); - -App.runsMapper = App.QuickDataMapper.create({ - model : App.Run, - map : function(json) { - if(!this.get('model')) { - return; - } - if(json && json.aaData) { - var result = []; - - var pagination_info={ - iTotalDisplayRecords :json.iTotalDisplayRecords , - iTotalRecords:json.iTotalRecords, - startIndex:parseInt(json.startIndex)+1, - endIndex:parseInt(json.endIndex)+1 - }; - - json.aaData.forEach(function(item, index) { - result.push(this.generateWorkflow(item, index)); - }, this); - - var r = []; - result.forEach(function(item){ - r.push(App.Run2.create(item)); - }); - - App.router.get('mainAppsController').set('content', r); - App.router.get('mainAppsController').set('serverData', json.summary); - App.router.get('mainAppsController').set('paginationObject', pagination_info); - } - - - }, - - generateWorkflow: function(item, index) { - var o = this.parseIt(item, this.config); - - var r = '{dag: {'; - item.workflowContext.workflowDag.entries.forEach(function(item) { - r += '"' + item.source + '": ['; - // if a standalone MapReduce job, there won't be any targets - if (item.targets) { - item.targets.forEach(function(target) { - r += '"' + target + '",'; - }); - if(item.targets.length){ - r = r.substr(0, r.length - 1); - } - } - else { - r += item.source; - } - r += '],'; - }); - r = r.substr(0, r.length - 1); - r += '}}'; - o.workflowContext = r; - o.index = index + 1; - return o; - }, - - config : { - id: 'workflowId', - appName: 'workflowName', - numJobsTotal: 'numJobsTotal', - numJobsCompleted: 'numJobsCompleted', - userName:'userName', - startTime: 'startTime', - elapsedTime: 'elapsedTime', - input: 'inputBytes', - output: 'outputBytes' - } -}); http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/messages.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js index 2f3c8b5..d6243a8 100644 --- a/ambari-web/app/messages.js +++ b/ambari-web/app/messages.js @@ -2396,18 +2396,6 @@ Em.I18n.translations = { 'timeRange.presets.1month':'1mo', 'timeRange.presets.1year':'1yr', - 'apps.item.dag.job': 'Job', - 'apps.item.dag.jobId': 'Job Id', - 'apps.item.dag.type': 'Job Type', - 'apps.item.dag.status': 'Status', - 'apps.item.dag.num_stages': 'Total Stages', - 'apps.item.dag.stages': 'Tasks per Stage', - 'apps.item.dag.maps': 'Maps', - 'apps.item.dag.reduces': 'Reduces', - 'apps.item.dag.input': 'Input', - 'apps.item.dag.output': 'Output', - 'apps.item.dag.duration': 'Duration', - 'tableView.filters.all': 'All', 'tableView.filters.filtered': 'Filtered', 'tableView.filters.clearFilters': 'Clear filters', @@ -2428,27 +2416,6 @@ Em.I18n.translations = { 'jobs.column.duration':'Duration', 'jobs.new_jobs.info':'New jobs available on server.', - 'apps.table.column.appId':'App ID', - 'apps.table.column.runDate': 'Run Date', - 'apps.avgTable.avg': 'Avg', - 'apps.avgTable.min': 'Min', - 'apps.avgTable.max': 'Max', - 'apps.avgTable.jobs': 'Jobs', - 'apps.avgTable.input': 'Input', - 'apps.avgTable.output': 'Output', - 'apps.avgTable.duration': 'Duration', - 'apps.avgTable.oldest': 'Oldest', - 'apps.avgTable.mostRecent': 'Most Recent', - 'apps.filters.customRunDate':'Run Date custom filter', - 'apps.filters.nothingToShow': 'No jobs to display', - 'apps.filters.filterComponents': 'Filter by <strong>Component</strong>', - 'apps.dagCharts.popup':'Job Charts', - 'apps.dagCharts.popup.job': 'Job', - 'apps.dagCharts.popup.dag':'Job Timeline', - 'apps.dagCharts.popup.tasks':'Job Tasks', - 'apps.isRunning.popup.title':'Is running', - 'apps.isRunning.popup.content':'Job is running now', - 'mirroring.dataset.dataSets':'Datasets', 'mirroring.dataset.createDataset':'Create Dataset', 'mirroring.dataset.editDataset':'Edit Dataset', http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/mixins/wizard/addSecurityConfigs.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mixins/wizard/addSecurityConfigs.js b/ambari-web/app/mixins/wizard/addSecurityConfigs.js index c93570c..7567e21 100644 --- a/ambari-web/app/mixins/wizard/addSecurityConfigs.js +++ b/ambari-web/app/mixins/wizard/addSecurityConfigs.js @@ -27,17 +27,9 @@ App.AddSecurityConfigs = Em.Mixin.create({ kerberosDescriptor: {}, - secureProperties: function () { - if (App.get('isHadoop2Stack')) { - return require('data/HDP2/secure_properties').configProperties; - } else { - return require('data/secure_properties').configProperties; - } - }.property('App.isHadoop2Stack'), + secureProperties: require('data/HDP2/secure_properties').configProperties, - secureMapping: function () { - return (App.get('isHadoop2Stack')) ? require('data/HDP2/secure_mapping') : require('data/secure_mapping'); - }.property('App.isHadoop2Stack'), + secureMapping: require('data/HDP2/secure_mapping'), serviceUsersBinding: 'App.router.mainAdminSecurityController.serviceUsers', http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/models.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models.js b/ambari-web/app/models.js index 787dcfb..2ee85df 100644 --- a/ambari-web/app/models.js +++ b/ambari-web/app/models.js @@ -53,16 +53,11 @@ require('models/alert_group'); require('models/user'); require('models/host'); require('models/rack'); -require('models/job'); -require('models/run'); -require('models/app'); require('models/background_operation'); require('models/client_component'); require('models/host_component'); require('models/target_cluster'); require('models/slave_component'); -require('classes/run_class'); -require('classes/job_class'); require('models/config_group'); require('models/service_config_version'); require('models/host_stack_version'); http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/models/app.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/app.js b/ambari-web/app/models/app.js deleted file mode 100644 index 7952e83..0000000 --- a/ambari-web/app/models/app.js +++ /dev/null @@ -1,68 +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. - */ - - -var App = require('app'); - -App.App = DS.Model.extend({ - appName: DS.attr('string'), - type: DS.attr('string'), - numJobsTotal: DS.attr('number'), - userName: DS.attr('string'), - executionTime: DS.attr('string'), - runs: DS.hasMany('App.Run') -}); - -App.App.FIXTURES = [ - { - id: 1, - app_name: 'pigs.sh', - type: 'Hive', - num_jobs_total: 5, - user_name: 'root', - execution_time: '1347629541543', - runs: [1, 2, 3] - }, - { - id: 2, - app_name: 'pigsm.sh', - type: 'pig', - num_jobs_total: 3, - user_name: 'user1', - execution_time: '1347656741515', - runs: [6, 4, 5] - }, - { - id: 3, - app_name: 'pigsmo.sh', - type: 'pig', - num_jobs_total: 4, - user_name: 'user3', - execution_time: '1347629587687', - runs: [7, 8, 9, 10, 11] - }, - { - id: 4, - app_name: 'pigsmok.sh', - type: 'MapReduce', - num_jobs_total: 0, - user_name: 'root', - execution_time: '134762957834', - runs: [] - } -]; http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/models/job.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/job.js b/ambari-web/app/models/job.js deleted file mode 100644 index e26ca84..0000000 --- a/ambari-web/app/models/job.js +++ /dev/null @@ -1,61 +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. - */ - - -var App = require('app'); -var date = require('utils/date'); -var misc = require('utils/misc'); - -App.Job = DS.Model.extend({ - - run: DS.belongsTo('App.Run'), - - jobName: DS.attr('string'), - workflowEntityName: DS.attr('string'), - userName: DS.attr('string'), - confPath: DS.attr('string'), - submitTime: DS.attr('number'), - maps: DS.attr('number'), - reduces: DS.attr('number'), - status: DS.attr('string'), - input: DS.attr('number'), - output: DS.attr('number'), - elapsedTime: DS.attr('number'), - duration: function () { - return date.timingFormat(parseInt(this.get('elapsedTime'))); - }.property('elapsedTime'), - jobTimeLine: DS.attr('string'), - jobTaskView: DS.attr('string'), - /** - * Sum of input bandwidth for all jobs with appropriate measure - */ - inputFormatted: function () { - var input = this.get('input'); - return misc.formatBandwidth(input); - }.property('input'), - /** - * Sum of output bandwidth for all jobs with appropriate measure - */ - outputFormatted: function () { - var output = this.get('output'); - return misc.formatBandwidth(output); - }.property('output') - -}); - -App.Job.FIXTURES = []; http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/models/run.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/run.js b/ambari-web/app/models/run.js deleted file mode 100644 index ef54ee0..0000000 --- a/ambari-web/app/models/run.js +++ /dev/null @@ -1,116 +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. - */ - - -var App = require('app'); -var date = require('utils/date'); -var misc = require('utils/misc'); - -App.Run = DS.Model.extend({ - appName: DS.attr('string'), - userName:DS.attr('string'), - numJobsTotal: DS.attr('number'), - numJobsCompleted: DS.attr('number'), - startTime:DS.attr('string'), - elapsedTime:DS.attr('string'), - workflowContext:DS.attr('string'), - input: DS.attr('number'), - output: DS.attr('number'), - - loadAllJobs : false, - - isStared: false, - isFiltered: false, - - /** - * runId short part - */ - idFormatted: function() { - return this.get('id').substr(0, 20); - }.property('id'), - - /** - * Jobs in the current run - */ - jobs: function() { - return App.Job.find().filterProperty('run.id', this.get('id')); - }.property('loadAllJobs'), - - /** - * Run duration - */ - duration: function() { - return date.timingFormat(parseInt(this.get('elapsedTime'))); - }.property('elapsedTime'), - /** - * Status of running jobs - */ - isRunning: function () { - return !this.get('numJobsTotal') == this.get('numJobsCompleted'); - }.property('numJobsTotal', 'numJobsCompleted'), - /** - * Sum of input bandwidth for all jobs with appropriate measure - */ - inputFormatted: function () { - var input = this.get('input'); - input = misc.formatBandwidth(input); - return input; - }.property('input'), - - /** - * Sum of output bandwidth for all jobs with appropriate measure - */ - outputFormatted: function () { - var output = this.get('output'); - output = misc.formatBandwidth(output); - return output; - }.property('output'), - - /** - * - */ - lastUpdateTime: function() { - return parseInt(this.get('startTime')) + parseInt(this.get('elapsedTime')); - }.property('elapsedTime', 'startTime'), - /** - * - */ - lastUpdateTimeFormatted: function() { - return date.dateFormat(this.get('lastUpdateTime')); - }.property('lastUpdateTime'), - lastUpdateTimeFormattedShort: function(){ - return date.dateFormatShort(this.get('lastUpdateTime')); - }.property('lastUpdateTime'), - /** - * Type value based on first part of id - */ - type: function() { - if (this.get('id').indexOf('pig_') === 0) { - return 'Pig'; - } - if (this.get('id').indexOf('hive_') === 0) { - return 'Hive'; - } - if (this.get('id').indexOf('mr_') === 0) { - return 'MapReduce'; - } - return ''; - }.property('id') -}); - -App.Run.FIXTURES = []; http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/routes/main.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/routes/main.js b/ambari-web/app/routes/main.js index 49060e4..17ad1c9 100644 --- a/ambari-web/app/routes/main.js +++ b/ambari-web/app/routes/main.js @@ -154,19 +154,6 @@ module.exports = Em.Route.extend({ } }), - apps: Em.Route.extend({ - route: '/apps', - connectOutlets: function (router) { - if (App.get('isHadoop2Stack')) { - Em.run.next(function () { - router.transitionTo('main.dashboard.index'); - }); - } else { - router.get('mainAppsController').loadRuns(); - router.get('mainController').connectOutlet('mainApps'); - } - } - }), mirroring: Em.Route.extend({ route: '/mirroring', http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/templates/main/apps.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/main/apps.hbs b/ambari-web/app/templates/main/apps.hbs deleted file mode 100644 index efcfc98..0000000 --- a/ambari-web/app/templates/main/apps.hbs +++ /dev/null @@ -1,113 +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. -}} - -<div id="apps"> - <table class="table table-bordered avg-table"> - <tbody> - <tr> - <td></td> - <td>{{t apps.avgTable.jobs}}</td> - <td>{{t apps.avgTable.input}}</td> - <td>{{t apps.avgTable.output}}</td> - <td>{{t apps.avgTable.duration}}</td> - <td>{{t apps.avgTable.oldest}}</td> - <td>{{t apps.avgTable.mostRecent}}</td> - </tr> - <tr class="avg-info"> - <td>{{t apps.avgTable.avg}}</td> - <td>{{summary.jobs.avg}}</td> - <td>{{summary.input.avg}}</td> - <td>{{summary.output.avg}}</td> - <td>{{summary.duration.avg}}</td> - <td>{{summary.times.oldest}}</td> - <td>{{summary.times.youngest}}</td> - - </tr> - <tr class="compare-info"> - <td>{{t apps.avgTable.min}} / {{t apps.avgTable.max}}</td> - <td>{{summary.jobs.min}} / {{summary.jobs.max}}</td> - <td>{{summary.input.min}} / {{summary.input.max}}</td> - <td>{{summary.output.min}} / {{summary.output.max}}</td> - <td>{{summary.duration.min}} / {{summary.duration.max}}</td> - <td></td> - <td></td> - </tr> - </tbody> - </table> - - <div class="filter_info"> - - <div class="span4" id="filter_buttons">{{t common.show}}: - <a class="all" {{action "clickViewType" target="view"}} data-view-type="all">{{t tableView.filters.all}} - ({{controller.paginationObject.iTotalRecords}})</a> | - <a class="filtered" {{action "clickViewType" target="view"}} data-view-type="filtered">{{t tableView.filters.filtered}} - ({{controller.filterObject.filteredDisplayRecords}})</a> - </div> - <div class="span2 clear_filter"> - <a {{action "clearFilters" target="controller"}}>{{t tableView.filters.clearFilters}}</a> - </div> - <div class="search-bar"> - {{view view.appSearchThrough valueBinding="controller.filterObject.sSearch"}} - </div> - </div> - - <table class="table table-striped runsList"> - <thead> - {{#view view.wrapSorting}} - {{#each controller.columnsName}} - {{#view view.parentView.sortingColumns contentBinding="this"}} - {{name}} - {{/view}} - {{/each}} - {{/view}} - <tr> - <th>{{view view.appIdFilterView}}</th> - <th>{{view view.nameFilterView}}</th> - <th>{{view view.typeFilterView}}</th> - <th>{{view view.userFilterView}}</th> - <th>{{view view.jobsFilterView}}</th> - <th>{{view view.inputFilterView}}</th> - <th>{{view view.outputFilterView}}</th> - <th>{{view view.durationFilterView}}</th> - <th>{{view view.runDateFilterView}}</th> - </tr> - </thead> - <tbody> - {{#if view.emptyData}} - <tr> - <td class="no-data" {{bindAttr colspan="controller.columnsName.content.length"}}>{{t apps.filters.nothingToShow}}</td> - </tr> - {{else}} - {{#each run in content}} - {{view view.containerRow runBinding="run" currentViewBinding="view.appTableRow"}} - {{/each}} - {{/if}} - </tbody> - </table> - - <div class="page-bar"> - <div class="items-on-page"> - <label>{{t common.show}}: {{view view.runPerPageSelectView viewName="runPerPageSelectView" selectionBinding="controller.filterObject.iDisplayLength"}}</label> - </div> - <div class="info">{{view.paginationInfo}}</div> - <div class="paging_two_button"> - {{view view.paginationLeft}} - {{view view.paginationRight}} - </div> - </div> -</div> http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/templates/main/apps/item.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/main/apps/item.hbs b/ambari-web/app/templates/main/apps/item.hbs deleted file mode 100644 index c6f1c6d..0000000 --- a/ambari-web/app/templates/main/apps/item.hbs +++ /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. -}} - -<td colspan="10"> - <ul class="nav nav-tabs"> - {{#each tab in view.menuTabs}} - <li {{bindAttr class="tab.active"}} {{action "switchTab" tab target="view" }}> - <a href="javascript:void(0)">{{tab.label}}</a> - </li> - {{/each}} - </ul> - <div class="content"> - {{view view.containerView}} - </div> - </td> - - - - http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/templates/main/apps/item/bar.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/main/apps/item/bar.hbs b/ambari-web/app/templates/main/apps/item/bar.hbs deleted file mode 100644 index d9b388e..0000000 --- a/ambari-web/app/templates/main/apps/item/bar.hbs +++ /dev/null @@ -1,20 +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. -}} - -<div id="job_tasks"></div> -<div class="clearfix"></div> http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/templates/main/apps/item/dag.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/main/apps/item/dag.hbs b/ambari-web/app/templates/main/apps/item/dag.hbs deleted file mode 100644 index 457d566..0000000 --- a/ambari-web/app/templates/main/apps/item/dag.hbs +++ /dev/null @@ -1,64 +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. -}} - <div id="dag_viewer"></div> - - <div id="dag_viewer_legend"> - <ul> - <li><span id="job"></span>Unfinished Job</li> - <li><span id="allmap"></span>All Maps on Cluster</li> - <li><span id="allshuffle"></span>All Shuffles on Cluster</li> - <li><span id="allreduce"></span>All Reduces on Cluster</li> - <li><span id="jobdone"></span>Finished Job</li> - <li><span id="map"></span>Maps for this App</li> - <li><span id="shuffle"></span>Shuffles for this App</li> - <li><span id="reduce"></span>Reduces for this App</li> - </ul> - </div> - - <table class="table table-bordered table-striped" id="innerTable"> - <thead> - <tr> - {{#view view.sortView contentBinding="controller.content.jobs"}} - {{#if view.parentView.hasManyJobs}}{{view view.parentView.nameSort}}{{/if}} - {{view view.parentView.idSort}} - {{view view.parentView.statusSort}} - {{view view.parentView.mapsSort}} - {{view view.parentView.reducesSort}} - {{view view.parentView.inputSort}} - {{view view.parentView.outputSort}} - {{view view.parentView.durationSort}} - {{/view}} - </tr> - </thead> - <tbody> - {{#each job in controller.content.jobs}} - <tr> - {{#if view.hasManyJobs}}<td>{{job.workflow_entity_name}}</td>{{/if}} - <td>{{job.id}}</td> - <td>{{job.status}}</td> - <td>{{job.maps}}</td> - <td>{{job.reduces}}</td> - <td>{{job.inputFormatted}}</td> - <td>{{job.outputFormatted}}</td> - <td>{{job.duration}}</td> - </tr> - {{/each}} - </tbody> - </table> - - http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/templates/main/apps/list_row.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/main/apps/list_row.hbs b/ambari-web/app/templates/main/apps/list_row.hbs deleted file mode 100644 index a926248..0000000 --- a/ambari-web/app/templates/main/apps/list_row.hbs +++ /dev/null @@ -1,35 +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. -}} - -<td class="appId" title="{{unbound run.id}}">{{unbound run.idFormatted}}</td> -<td>{{unbound run.appName}}</td> -<td>{{unbound run.type}}</td> -<td>{{unbound run.userName}}</td> -<td>{{unbound run.numJobsTotal}}</td> -<td>{{unbound run.inputFormatted}}</td> -<td>{{unbound run.outputFormatted}}</td> -<td>{{unbound run.duration}}</td> -{{#if run.isRunning}} -<td rel="popover" {{translateAttr title="apps.isRunning.popup.title" data-content="apps.isRunning.popup.content"}}> - <span title="{{unbound run.lastUpdateTimeFormatted}}">{{unbound run.lastUpdateTimeFormattedShort}}</span> - <b class='red'>*</b></td> -{{else}} -<td> - <span title="{{unbound run.lastUpdateTimeFormatted}}">{{unbound run.lastUpdateTimeFormattedShort}}</span> -</td> -{{/if}} http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/templates/main/apps/user_filter.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/main/apps/user_filter.hbs b/ambari-web/app/templates/main/apps/user_filter.hbs deleted file mode 100644 index 16f6046..0000000 --- a/ambari-web/app/templates/main/apps/user_filter.hbs +++ /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. -}} -<button class="btn btn-info single-btn-group" {{action "clickFilterButton" target="view"}}> - {{t common.user}} <span class="caret"></span> -</button> -<ul class="dropdown-menu filter-components"> - {{#each user in view.users}} - <li> - <label class="checkbox">{{view Ember.Checkbox checkedBinding="user.checked"}} {{user.name}}</label> - </li> - {{/each}} - <li> - <button class="btn" {{action "closeFilter" target="view"}}>{{t common.cancel}}</button> - <button class="btn btn-primary" {{action "applyFilter" target="view"}}>{{t common.apply}}</button> - </li> -</ul> http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/utils/config.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js index ddb50e2..a6bac39 100644 --- a/ambari-web/app/utils/config.js +++ b/ambari-web/app/utils/config.js @@ -108,12 +108,7 @@ App.config = Em.Object.create({ this.set('preDefinedServiceConfigs', services); }, - configMapping: function () { - if (App.get('isHadoop2Stack')) { - return require('data/HDP2/config_mapping'); - } - return require('data/config_mapping'); - }.property('App.isHadoop2Stack'), + configMapping: require('data/HDP2/config_mapping'), preDefinedSiteProperties: function () { var sitePropertiesForCurrentStack = this.preDefinedConfigFile('site_properties'); @@ -123,18 +118,11 @@ App.config = Em.Object.create({ if (App.get('isHadoop22Stack')) { return require('data/HDP2.2/site_properties').configProperties; - } else if (App.get('isHadoop2Stack')) { - return require('data/HDP2/site_properties').configProperties; } - return require('data/site_properties').configProperties; - }.property('App.isHadoop2Stack', 'App.isHadoop22Stack', 'App.currentStackName'), + return require('data/HDP2/site_properties').configProperties; + }.property('App.isHadoop22Stack', 'App.currentStackName'), - preDefinedCustomConfigs: function () { - if (App.get('isHadoop2Stack')) { - return require('data/HDP2/custom_configs'); - } - return require('data/custom_configs'); - }.property('App.isHadoop2Stack'), + preDefinedCustomConfigs: require('data/HDP2/custom_configs'), preDefinedConfigFile: function(file) { try { @@ -186,10 +174,7 @@ App.config = Em.Object.create({ }, //configs with these filenames go to appropriate category not in Advanced - customFileNames: function () { - var customFiles = ['flume-conf.xml']; - return customFiles; - }.property('App.isHadoop2Stack'), + customFileNames: ['flume-conf.xml'], /** * Function should be used post-install as precondition check should not be done only after installer wizard @@ -301,17 +286,10 @@ App.config = Em.Object.create({ capacitySchedulerFilter: function () { var yarnRegex = /^yarn\.scheduler\.capacity\.root\.([a-z]([\_\-a-z0-9]{0,50}))\.(acl_administer_jobs|acl_submit_jobs|state|user-limit-factor|maximum-capacity|capacity)$/i; - if (App.get('isHadoop2Stack')) { - return function (_config) { - return (yarnRegex.test(_config.name)); - } - } else { - return function (_config) { - return (_config.name.indexOf('mapred.capacity-scheduler.queue.') !== -1) || - (/^mapred\.queue\.[a-z]([\_\-a-z0-9]{0,50})\.(acl-administer-jobs|acl-submit-job)$/i.test(_config.name)); - } + return function (_config) { + return (yarnRegex.test(_config.name)); } - }.property('App.isHadoop2Stack'), + }.property(), /** * return: * configs, @@ -952,13 +930,12 @@ App.config = Em.Object.create({ createAdvancedPropertyObject: function(item) { var serviceName = item.service_name; var fileName = item.type; - var isHDP2 = App.get('isHadoop2Stack'); /** * Properties from mapred-queue-acls.xml are ignored * Properties from capacity-scheduler.xml are ignored unless HDP stack version is 2.x or * HDP stack version is 1.x */ - if (fileName == 'mapred-queue-acls.xml' || (fileName == 'capacity-scheduler.xml' && !isHDP2)) return false; + if (fileName == 'mapred-queue-acls.xml') return false; item.isVisible = true; var property = { serviceName: serviceName, @@ -984,7 +961,7 @@ App.config = Em.Object.create({ */ advancedConfigIdentityData: function(config) { var propertyData = {}; - var proxyUserGroupServices = App.get('isHadoop2Stack') ? ['HIVE', 'OOZIE', 'FALCON'] : ['HIVE', 'OOZIE']; + var proxyUserGroupServices = ['HIVE', 'OOZIE', 'FALCON']; if (config.property_type.contains('USER') || config.property_type.contains('GROUP')) { propertyData.id = "puppet var"; http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/views.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views.js b/ambari-web/app/views.js index 7dc70a9..79c3774 100644 --- a/ambari-web/app/views.js +++ b/ambari-web/app/views.js @@ -289,10 +289,6 @@ require('views/main/charts/heatmap'); require('views/main/charts/heatmap/heatmap_rack'); require('views/main/charts/heatmap/heatmap_host'); require('views/main/charts/heatmap/heatmap_host_detail'); -require('views/main/apps_view'); -require('views/main/apps/item_view'); -require('views/main/apps/item/bar_view'); -require('views/main/apps/item/dag_view'); require('views/main/views_view'); http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/views/common/configs/service_configs_by_category_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/common/configs/service_configs_by_category_view.js b/ambari-web/app/views/common/configs/service_configs_by_category_view.js index 2d64452..2edbc89 100644 --- a/ambari-web/app/views/common/configs/service_configs_by_category_view.js +++ b/ambari-web/app/views/common/configs/service_configs_by_category_view.js @@ -133,7 +133,7 @@ App.ServiceConfigsByCategoryView = Em.View.extend(App.UserPref, { var stepConfigs = this.get("controller.stepConfigs"); this.affectedProperties = []; var curConfigs = ""; - var affectedPropertyName = App.get('isHadoop2Stack') ? "dfs.permissions.superusergroup" : "dfs.permissions.supergroup"; + var affectedPropertyName = "dfs.permissions.superusergroup"; if (changedProperty.get("name") == "hdfs_user") { curConfigs = stepConfigs.findProperty("serviceName", "HDFS").get("configs"); if (newValue != curConfigs.findProperty("name", affectedPropertyName).get("value")) { @@ -161,34 +161,6 @@ App.ServiceConfigsByCategoryView = Em.View.extend(App.UserPref, { ); } } - else if (changedProperty.get("name") == "hbase_user" && !App.get('isHadoop2Stack')) { - curConfigs = stepConfigs.findProperty("serviceName", "HDFS").get("configs"); - if (newValue != curConfigs.findProperty("name", "dfs.block.local-path-access.user").get("value")) { - this.affectedProperties.push( - { - serviceName: "HDFS", - propertyName: "dfs.block.local-path-access.user", - propertyDisplayName: "dfs.block.local-path-access.user", - newValue: newValue, - curValue: curConfigs.findProperty("name", "dfs.block.local-path-access.user").get("value"), - changedPropertyName: "hbase_user" - } - ); - } - var hbaseCurConfigs = stepConfigs.findProperty("serviceName", "HBASE").get("configs"); - if (newValue != hbaseCurConfigs.findProperty("name", "hbase.superuser").get("value")) { - this.affectedProperties.push( - { - serviceName: "HBASE", - propertyName: "hbase.superuser", - propertyDisplayName: "hbase.superuser", - newValue: newValue, - curValue: hbaseCurConfigs.findProperty("name", "hbase.superuser").get("value"), - changedPropertyName: "hbase_user" - } - ); - } - } else if (changedProperty.get("name") == "user_group") { if (!((this.get("controller.selectedServiceNames").indexOf("MAPREDUCE") >= 0) || (this.get("controller.selectedServiceNames").indexOf("YARN") >= 0))) { return; http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/views/common/quick_view_link_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/common/quick_view_link_view.js b/ambari-web/app/views/common/quick_view_link_view.js index 75bf691..c4265af 100644 --- a/ambari-web/app/views/common/quick_view_link_view.js +++ b/ambari-web/app/views/common/quick_view_link_view.js @@ -281,7 +281,8 @@ App.QuickViewLinks = Em.View.extend({ hosts[0] = this.findComponentHost(response.items, "STORM_UI_SERVER"); break; default: - if (App.StackService.find().findProperty('serviceName', serviceName).get('hasMaster')) { + var service = App.StackService.find().findProperty('serviceName', serviceName); + if (service && service.get('hasMaster')) { hosts[0] = this.findComponentHost(response.items, this.get('content.hostComponents') && this.get('content.hostComponents').findProperty('isMaster', true).get('componentName')); } break; @@ -308,13 +309,8 @@ App.QuickViewLinks = Em.View.extend({ setProtocol: function (service_id, configProperties, ambariProperties) { var hadoopSslEnabled = false; if (configProperties && configProperties.length > 0) { - var coreSite = configProperties.findProperty('type', 'core-site'); var hdfsSite = configProperties.findProperty('type', 'hdfs-site'); - if (App.get('isHadoop2Stack')) { - hadoopSslEnabled = (Em.get(hdfsSite, 'properties') && hdfsSite.properties['dfs.http.policy'] === 'HTTPS_ONLY'); - } else { - hadoopSslEnabled = (Em.get(coreSite, 'properties') && coreSite.properties['hadoop.ssl.enabled'] == true); - } + hadoopSslEnabled = (hdfsSite && Em.get(hdfsSite, 'properties') && hdfsSite.properties['dfs.http.policy'] === 'HTTPS_ONLY'); } switch (service_id) { case "GANGLIA": @@ -324,7 +320,7 @@ App.QuickViewLinks = Em.View.extend({ return (ambariProperties && ambariProperties['nagios.https'] == true) ? "https" : "http"; break; case "YARN": - var yarnProperties = configProperties.findProperty('type', 'yarn-site'); + var yarnProperties = configProperties && configProperties.findProperty('type', 'yarn-site'); if (yarnProperties && yarnProperties.properties) { if (yarnProperties.properties['yarn.http.policy'] === 'HTTPS_ONLY') { return "https"; @@ -335,7 +331,7 @@ App.QuickViewLinks = Em.View.extend({ return hadoopSslEnabled ? "https" : "http"; break; case "MAPREDUCE2": - var mapred2Properties = configProperties.findProperty('type', 'mapred-site'); + var mapred2Properties = configProperties && configProperties.findProperty('type', 'mapred-site'); if (mapred2Properties && mapred2Properties.properties) { if (mapred2Properties.properties['mapreduce.jobhistory.http.policy'] === 'HTTPS_ONLY') { return "https"; http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/views/main/apps/item/bar_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/apps/item/bar_view.js b/ambari-web/app/views/main/apps/item/bar_view.js deleted file mode 100644 index 939d8c8..0000000 --- a/ambari-web/app/views/main/apps/item/bar_view.js +++ /dev/null @@ -1,68 +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. - */ - -var App = require('app'); -var graph = require('utils/graph'); - -App.MainAppsItemBarView = Em.View.extend({ - elementId:'bars', - templateName:require('templates/main/apps/item/bar'), - content:function () { - return this.get('controller.content.jobs'); - }.property('controller.content.jobs'), - onLoad:function () { - if (!this.get('controller.content.loadAllJobs') || this.get('activeJob')) { - return; - } - - var self = this; - Ember.run.next(function(){ - self.updateTasksView(); - }); - }.observes('controller.content.loadAllJobs'), - didInsertElement:function () { - this.onLoad(); - }, - draw:function () { - }, - - mapNodeLocal:false, - mapRackLocal:false, - mapOffSwitch:false, - reduceOffSwitch:false, - submit:false, - finish:false, - - updateTasksView:function () { - var url = App.get('testMode') ? '/data/apps/jobs/taskview.json' : App.get('apiPrefix') + "/jobhistory/tasklocality?workflowId=" + this.get('controller.content.id'); - var mapper = App.jobTasksMapper; - mapper.set('model', this); - var self = this; - App.HttpClient.get(url, mapper,{ - complete:function(jqXHR, textStatus) { - self.set('loadJobTasks', true); - } - }); - }, - - drawJobTasks:function () { - if (!this.get('mapNodeLocal') || !this.get('mapRackLocal') || !this.get('mapOffSwitch') || !this.get('reduceOffSwitch')) {return;} - graph.drawJobTasks(this.get('mapNodeLocal'), this.get('mapRackLocal'), this.get('mapOffSwitch'), this.get('reduceOffSwitch'), this.get('controller.content.startTime'), this.get('controller.content.startTime')+this.get('controller.content.elapsedTime'), this.$().width(), 300, 'job_tasks'); - }.observes('loadJobTasks') - -}); http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/views/main/apps/item/dag_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/apps/item/dag_view.js b/ambari-web/app/views/main/apps/item/dag_view.js deleted file mode 100644 index 6be2715..0000000 --- a/ambari-web/app/views/main/apps/item/dag_view.js +++ /dev/null @@ -1,184 +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. - */ - -var App = require('app'); -var sort = require('views/common/sort_view'); - -App.MainAppsItemDagView = Em.View.extend({ - templateName: require('templates/main/apps/item/dag'), - elementId : 'jobs', - content:function(){ - return this.get('controller.content.jobs'); - }.property('controller.content.jobs'), - - classNames:['table','dataTable'], - /** - * convert content to special jobs object for DagViewer - */ - jobs: function(){ - var c = this.get('content'); - var result = []; - c.forEach(function(item, index){ - result[index] = new Object({ - 'name' : item.get('id'), - 'entityName' : item.get('workflow_entity_name'), - 'status' : item.get('status'), - 'input' : item.get('input'), - 'output' : item.get('output'), - 'submitTime' : item.get('submit_time'), - 'elapsedTime' : item.get('elapsed_time') - }) - }); - return result; - }.property('content'), - - loaded : false, - - hasManyJobs: function(){ - return (this.get('content') && this.get('content').length > 1); - }.property('content'), - - onLoad:function (){ - if(!this.get('controller.content.loadAllJobs') || this.get('loaded')){ - return; - } - - this.set('loaded', true); - - var self = this; - - Ember.run.next(function(){ - self.draw(); - self.updateTimeline(); - }); - - }.observes('controller.content.loadAllJobs'), - - resizeModal: function () { - var modal = $('.modal'); - var body = $('body'); - modal.find('.modal-body').first().css('max-height', 'none'); - var modalHeight = modal.height() + 300; - var bodyHeight = body.height(); - if (modalHeight > bodyHeight) { - modal.css('top', '20px'); - $('.modal-body').height(bodyHeight - 180); - } else { - modal.css('top', (bodyHeight - modalHeight) / 2 + 'px'); - } - - var modalWidth = modal.width(); - var bodyWidth = body.width(); - if (modalWidth > bodyWidth) { - modal.css('left', '10px'); - modal.width(bodyWidth - 20); - } else { - modal.css('left', (bodyWidth - modalWidth) / 2 + 'px'); - } - }, - - didInsertElement: function(){ - this.onLoad(); - }, - - loadTaskTimeline:false, - loadJobTimeline:false, - map:false, - shuffle:false, - reduce:false, - allmap:false, - allshuffle:false, - allreduce:false, - - updateTimeline:function () { - var url = App.get('testMode') ? '/data/apps/jobs/timeline.json' : App.get('apiPrefix') + "/jobhistory/task?workflowId=" + this.get('controller.content.id') + "&width=" + Math.ceil(this.$().width()) + "&startTime=" + this.get('controller.content.startTime') + "&endTime=" + (this.get('controller.content.startTime')+this.get('controller.content.elapsedTime')); - var mapper = App.jobTimeLineMapper; - mapper.set('model', this); - var self = this; - App.HttpClient.get(url, mapper,{ - complete:function(jqXHR, textStatus) { - self.set('loadJobTimeline', true); - } - }); - url = App.get('testMode') ? '/data/apps/jobs/timeline.json' : App.get('apiPrefix') + "/jobhistory/task?width=" + Math.ceil(this.$().width()) + "&startTime=" + this.get('controller.content.startTime') + "&endTime=" + (this.get('controller.content.startTime')+this.get('controller.content.elapsedTime')); - var mapper = App.taskTimeLineMapper; - mapper.set('model', this); - var self = this; - App.HttpClient.get(url, mapper,{ - complete:function(jqXHR, textStatus) { - self.set('loadTaskTimeline', true); - } - }); - }, - - drawJobTimeline:function () { - if (this.get('loadJobTimeline') && this.get('loadTaskTimeline')) { - this.daggraph.addTimeSeries([{"name":"allmap","color":"green","values":this.get('allmap')}, - {"name":"map","color":"green","values":this.get('map')}], 0, "Maps"); - this.daggraph.addTimeSeries([ - {"name":"allshuffle","color":"lightblue","values":this.get('allshuffle')}, - {"name":"allreduce","color":"steelblue","values":this.get("allreduce")}, - {"name":"shuffle","color":"lightblue","values":this.get('shuffle')}, - {"name":"reduce","color":"steelblue","values":this.get("reduce")}], 1, "Reduces"); - } - }.observes('loadJobTimeline', 'loadTaskTimeline'), - - daggraph:false, - - draw: function(){ - var dagSchema = this.get('controller.content.workflowContext'); - var jobs = this.get('jobs'); - this.resizeModal(); - this.daggraph = new DagViewer('dag_viewer') - .setData(dagSchema, jobs) - .drawDag(this.$().width(), 300, 20); - }, - sortView: sort.wrapperView, - nameSort: sort.fieldView.extend({ - name:'workflow_entity_name', - displayName: Em.I18n.t('apps.item.dag.job') - }), - idSort: sort.fieldView.extend({ - name:'id', - displayName: Em.I18n.t('apps.item.dag.jobId') - }), - statusSort: sort.fieldView.extend({ - name:'status', - displayName: Em.I18n.t('apps.item.dag.status') - }), - mapsSort: sort.fieldView.extend({ - name:'maps', - displayName: Em.I18n.t('apps.item.dag.maps') - }), - reducesSort: sort.fieldView.extend({ - name:'reduces', - displayName: Em.I18n.t('apps.item.dag.reduces') - }), - inputSort: sort.fieldView.extend({ - name:'input', - displayName: Em.I18n.t('apps.item.dag.input') - }), - outputSort: sort.fieldView.extend({ - name:'output', - displayName: Em.I18n.t('apps.item.dag.output') - }), - durationSort: sort.fieldView.extend({ - name:'elapsed_time', - displayName: Em.I18n.t('apps.item.dag.duration') - }) -}); http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/views/main/apps/item_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/apps/item_view.js b/ambari-web/app/views/main/apps/item_view.js deleted file mode 100644 index 29300d1..0000000 --- a/ambari-web/app/views/main/apps/item_view.js +++ /dev/null @@ -1,70 +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. - */ - -var App = require('app'); - -App.MainAppsItemView = Em.View.extend({ - tagName: 'tr', - classNames : ['containerRow'], - templateName:require('templates/main/apps/item'), - menuTabs:[ - Em.Object.create({ - label:Em.I18n.t('apps.dagCharts.popup.dag'), - active:'active', - content:'App.MainAppsItemDagView' - }), - Em.Object.create({ - label:Em.I18n.t('apps.dagCharts.popup.tasks'), - active:'', - content:'App.MainAppsItemBarView' - }) - ], - activeTab:null, - switchTab:function(event){ - var tabs = this.get('menuTabs'); - for(var i = 0; i < tabs.length; i++){ - if(tabs[i] === event.context){ - tabs[i].set('active', 'active'); - } - else { - tabs[i].set('active', ''); - } - } - this.set('activeTab', event.context); - }, - didInsertElement: function(){ - var tabs = this.get('menuTabs'); - tabs[0].set('active', 'active'); - tabs[1].set('active', ''); - this.set('activeTab', tabs[0]); - }, - containerView: Em.ContainerView.extend({ - onchange:function(){ - - if(this.get('childViews').length){ - this.get('childViews').get('firstObject').destroy(); - } - - var view = this.get('parentView.activeTab.content').split('.')[1]; - view = App[view].create({ - controllerBinding: 'App.router.mainAppsItemController' - }); - this.get('childViews').pushObject(view); - }.observes('parentView.activeTab') - }) -}); http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/views/main/apps_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/apps_view.js b/ambari-web/app/views/main/apps_view.js deleted file mode 100644 index 68241a1..0000000 --- a/ambari-web/app/views/main/apps_view.js +++ /dev/null @@ -1,400 +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. - */ - -var App = require('app'); -var filters = require('views/common/filter_view'); - -App.MainAppsView = Em.View.extend({ - templateName: require('templates/main/apps'), - paginationInfo: function() { - return this.t('tableView.filters.paginationInfo').format(this.get('controller.paginationObject.startIndex'), this.get('controller.paginationObject.endIndex'), this.get('controller.paginationObject.iTotalDisplayRecords')); - }.property('controller.paginationObject.startIndex', 'controller.paginationObject.endIndex', 'controller.paginationObject.iTotalDisplayRecords'), - //Pagination left/right buttons css class - paginationLeft: Ember.View.extend({ - tagName: 'a', - template: Ember.Handlebars.compile('<i class="icon-arrow-left"></i>'), - classNameBindings: ['class'], - class: function () { - if (parseInt(this.get("controller.paginationObject.startIndex")) > 1) { - return "paginate_previous"; - } else { - return "paginate_disabled_previous"; - } - }.property("controller.paginationObject.startIndex"), - click: function (event) { - if (this.get('class') == "paginate_previous") { - var startIndex = parseInt(this.get("controller.paginationObject.startIndex")) - 1; - var showRows = parseInt(this.get("controller.filterObject.iDisplayLength")); - var startDisplayValue = Math.max(0, startIndex - showRows); - this.set("controller.filterObject.iDisplayStart", startDisplayValue); - } - } - }), - paginationRight: Ember.View.extend({ - tagName: 'a', - template: Ember.Handlebars.compile('<i class="icon-arrow-right"></i>'), - classNameBindings: ['class'], - class: function () { - if ((parseInt(this.get("controller.paginationObject.endIndex"))) < parseInt(this.get("controller.paginationObject.iTotalDisplayRecords"))) { - return "paginate_next"; - } else { - return "paginate_disabled_next"; - } - }.property("controller.paginationObject.endIndex"), - click: function (event) { - if (this.get('class') == "paginate_next") { - var startDisplayValue = parseInt(this.get("controller.paginationObject.endIndex")); - this.set("controller.filterObject.iDisplayStart", startDisplayValue); - } - } - }), - - /** - * If there are table rows with runs. - */ - emptyData:true, - - /* - If no runs to display set emptyData to true and reset Avg table data, else to set emptyData to false. - */ - emptyDataObserver:function(){ - if(this.get("controller.paginationObject.iTotalRecords") != null && this.get("controller.paginationObject.iTotalDisplayRecords")>0){ - this.set("emptyData",false); - }else{ - this.set("emptyData",true); - this.set("controller.serverData",null); - } - }.observes("controller.paginationObject.iTotalDisplayRecords","controller.paginationObject.iTotalRecords"), - - - /** - * View for RunPerPage select component - */ - runPerPageSelectView: Em.Select.extend({ - selected: '10', - content: ['10', '25', '50', '100'] - }), - - wrapSorting: Ember.View.extend({ - tagName: 'tr' - }), - - sortingColumns: Ember.View.extend({ - tagName: 'th', - classNameBindings: ['class', 'widthClass'], - class: "sorting", - widthClass: "", - content: null, - defaultColumn: 8, - - didInsertElement: function () { - this.set("widthClass", "col" + this.get('content.index')); - if (this.get('content.index') == this.get('defaultColumn')) { - this.setControllerObj(this.content.index, "DESC"); - this.set("class", "sorting_desc"); - } - }, - click: function (event) { - console.log(this.get('class')); - if (this.get('class') == "sorting") { - this.resetSortClass(); - this.setControllerObj(this.get('content.index'), "ASC"); - this.set("class", "sorting_asc"); - } else if (this.get('class') == "sorting_asc") { - this.setControllerObj(this.get('content.index'), "DESC"); - this.set("class", "sorting_desc"); - } else if (this.get('class') == "sorting_desc") { - this.setControllerObj(this.get('content.index'), "ASC"); - this.set("class", "sorting_asc"); - } - }, - resetSortClass: function () { - this.get("parentView.childViews").map(function (a, e) { - a.get("childViews")[0].set("class", "sorting") - }); - }, - setControllerObj: function (col, dir) { - this.set("controller.filterObject.iSortCol_0", col); - this.set("controller.filterObject.sSortDir_0", dir); - } - }), - - /** - * Filter-field for Search - */ - appSearchThrough: Em.TextField.extend({ - classNames: ['input-medium'], - type: 'text', - placeholder: Em.I18n.t('common.search') - }), - /** - * Filter-field for App ID. - * Based on <code>filters</code> library - */ - appIdFilterView: filters.createTextView({ - valueBinding: "controller.filterObject.sSearch_0" - }), - /** - * Filter-field for name. - * Based on <code>filters</code> library - */ - nameFilterView: filters.createTextView({ - valueBinding: "controller.filterObject.sSearch_1", - fieldType: 'input-small' - }), - /** - * Filter-field for type. - * Based on <code>filters</code> library - */ - typeFilterView: filters.createSelectView({ - fieldType: 'input-small', - valueBinding: "controller.filterObject.runType", - content: [ - { - value: 'Any', - label: 'Any' - }, - { - value: 'Pig', - label: 'Pig' - }, - { - value: 'Hive', - label: 'Hive' - }, - { - value: 'MapReduce', - label: 'MapReduce' - } - ], - emptyValue: 'Any' - }), - - /** - * Filter-list for User. - * Based on <code>filters</code> library - */ - userFilterView: filters.createComponentView({ - /** - * Inner FilterView. Used just to render component. Value bind to <code>mainview.value</code> property - * Base methods was implemented in <code>filters.componentFieldView</code> - */ - filterView: filters.componentFieldView.extend({ - templateName:require('templates/main/apps/user_filter'), - - usersBinding: 'controller.users', - - allComponentsChecked:false, - toggleAllComponents:function () { - var checked = this.get('allComponentsChecked'); - this.get('users').setEach('checked', checked); - }.observes('allComponentsChecked'), - - clearFilter:function() { - this.set('allComponentsChecked', false); - - this.get('users').setEach('checked', false); - - this._super(); - }, - - applyFilter:function() { - this._super(); - - var chosenUsers = this.get('users').filterProperty('checked', true).mapProperty('name'); - this.set('value', chosenUsers.toString()); - } - }), - - valueBinding: 'controller.filterObject.sSearch_3' - }), - /** - * Filter-field for jobs. - * Based on <code>filters</code> library - */ - jobsFilterView: filters.createTextView({ - fieldType: 'input-super-mini', - valueBinding: "controller.filterObject.jobs" - }), - /** - * Filter-field for Input. - * Based on <code>filters</code> library - */ - inputFilterView: filters.createTextView({ - fieldType: 'input-super-mini', - valueBinding: "controller.filterObject.input" - }), - /** - * Filter-field for Output. - * Based on <code>filters</code> library - */ - outputFilterView: filters.createTextView({ - fieldType: 'input-super-mini', - valueBinding: "controller.filterObject.output" - }), - /** - * Filter-field for Duration. - * Based on <code>filters</code> library - */ - durationFilterView: filters.createTextView({ - fieldType: 'input-super-mini', - valueBinding: "controller.filterObject.duration" - }), - /** - * Filter-field for RunDate. - * Based on <code>filters</code> library - */ - runDateFilterView: filters.createSelectView({ - fieldType: 'input-medium', - valueBinding: "controller.filterObject.runDate", - content: [ - { - value: 'Any', - label: Em.I18n.t('any') - }, - { - value: 'Past 1 hour', - label: 'Past 1 hour' - }, - { - value: 'Past 1 Day', - label: 'Past 1 Day' - }, - { - value: 'Past 2 Days', - label: 'Past 2 Days' - }, - { - value: 'Past 7 Days', - label: 'Past 7 Days' - }, - { - value: 'Past 14 Days', - label: 'Past 14 Days' - }, - { - value: 'Past 30 Days', - label: 'Past 30 Days' - } - ], - emptyValue: 'Any' - }), - - /** - * Onclick handler for Show All/Filtered buttons - */ - clickViewType: function (event) { - this.set("controller.filterObject.viewTypeClickEvent", true); - if ($(event.target).hasClass("filtered") || $(event.target.parentNode).hasClass("filtered")) { - this.set("controller.filterObject.viewType", "filtered"); - } else { - this.set("controller.filterObject.allFilterActivated", true); - this.set("controller.filterObject.viewType", "all"); - } - }, - /** - * Clears up last job ID when coming in fresh to page. - * Not doing this will result in failure to load job - * data, and subsequently the popup dialog. - */ - didInsertElement: function(){ - var self = this; - Em.run.next(function() { - self.get('_childViews').forEach(function(childView) { - if(childView['showClearFilter']) { - childView.showClearFilter(); - } - }); - }); - this.get('controller').set('lastJobId', null); - this.onChangeViewType(); - }, - /** - * - */ - onChangeViewType: function () { - var tmpViewType = this.get('controller.filterObject.viewType'); - var filterButtons = $("#filter_buttons").children(); - filterButtons.each(function (index, element) { - $(element).removeClass('selected'); - if (tmpViewType == $(element).data('view-type')) { - $(element).addClass('selected'); - } - }); - this.set("controller.filterObject.viewTypeClickEvent", false); - }.observes("controller.filterObject.viewType"), - - /** - * This Container View is used to render static table row(appTableRow) and additional dynamic content - */ - containerRow: Em.ContainerView.extend({ - - /** - * Unique row id - */ - id: function () { - return this.get('run.id'); - }.property("run.id"), - - /** - * Show/hide additional content appropriated for this row - */ - expandToggle: function () { - //App.router.get('mainAppsItemController').set('jobsLoaded', false); - App.router.get('mainAppsItemController').set('content', this.get('run')); - App.ModalPopup.show({ - classNames: ['big-modal'], - header: Em.I18n.t('apps.dagCharts.popup'), - bodyClass: App.MainAppsItemView.extend({ - controllerBinding: 'App.router.mainAppsItemController' - }), - secondary: null - }); - } - }), - /** - * Table-row view - */ - appTableRow: Em.View.extend({ - templateName: require('templates/main/apps/list_row'), - classNames: ['app-table-row'], - tagName: "tr", - onLoad: function() { - var run = this.get('parentView.run'); - if (run.index) { - var strip = (run.index % 2) ? 'even' : 'odd'; - this.$().addClass(strip); - } - }.observes('parentView.run'), - - didInsertElement: function() { - this.onLoad(); - }, - mouseEnter: function (event, view) { - $(event.currentTarget).addClass("hover") - }, - mouseLeave: function (event, view) { - $(event.currentTarget).removeClass("hover"); - }, - click: function (event, view) { - this.get('parentView').expandToggle(); - } - - }) - -}); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/views/main/host/details/host_component_views/datanode_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/host/details/host_component_views/datanode_view.js b/ambari-web/app/views/main/host/details/host_component_views/datanode_view.js index 0ccaa21..b8f3c7d 100644 --- a/ambari-web/app/views/main/host/details/host_component_views/datanode_view.js +++ b/ambari-web/app/views/main/host/details/host_component_views/datanode_view.js @@ -86,36 +86,21 @@ App.DataNodeComponentView = App.HostComponentView.extend(App.Decommissionable, { if (curObj) { var liveNodesJson = App.parseJSON(curObj.LiveNodes); // HDP-2 stack - if (App.get('isHadoop2Stack')) { - if (liveNodesJson && liveNodesJson[hostName]) { - switch (liveNodesJson[hostName].adminState) { - case "In Service": - this.setStatusAs('INSERVICE'); - break; - case "Decommission In Progress": - this.setStatusAs('DECOMMISSIONING'); - break; - case "Decommissioned": - this.setStatusAs('DECOMMISSIONED'); - break; - } - } else { - // if namenode is down, get desired_admin_state to decide if the user had issued a decommission - this.getDesiredAdminState(); + if (liveNodesJson && liveNodesJson[hostName]) { + switch (liveNodesJson[hostName].adminState) { + case "In Service": + this.setStatusAs('INSERVICE'); + break; + case "Decommission In Progress": + this.setStatusAs('DECOMMISSIONING'); + break; + case "Decommissioned": + this.setStatusAs('DECOMMISSIONED'); + break; } } else { - var decomNodesJson = App.parseJSON(curObj.DecomNodes); - var deadNodesJson = App.parseJSON(curObj.DeadNodes); - if (decomNodesJson && decomNodesJson[hostName]) { - this.setStatusAs('DECOMMISSIONING'); - } else if (deadNodesJson && deadNodesJson[hostName]) { - this.setStatusAs('DECOMMISSIONED'); - } else if (liveNodesJson && liveNodesJson[hostName]) { - this.setStatusAs('INSERVICE'); - } else { - // if namenode is down, get desired_admin_state to decide if the user had issued a decommission - this.getDesiredAdminState(); - } + // if namenode is down, get desired_admin_state to decide if the user had issued a decommission + this.getDesiredAdminState(); } } } http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/views/main/menu.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/menu.js b/ambari-web/app/views/main/menu.js index 4030f5e..5f318da 100644 --- a/ambari-web/app/views/main/menu.js +++ b/ambari-web/app/views/main/menu.js @@ -42,11 +42,6 @@ App.MainMenuView = Em.CollectionView.extend({ { label: Em.I18n.t('menu.item.hosts'), routing: 'hosts', hasAlertsLabel: true}, { label: Em.I18n.t('menu.item.alerts'), routing: 'alerts'} ); - - if (!App.get('isHadoop2Stack')) { - result.push({ label: Em.I18n.t('menu.item.jobs'), routing: 'apps'}); - } - if (App.isAccessible('upgrade_ADMIN')) { result.push({ label: Em.I18n.t('menu.item.admin'), routing: 'admin'}); } http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/app/views/main/service/info/metrics/hbase/regionserver_rw_requests.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/service/info/metrics/hbase/regionserver_rw_requests.js b/ambari-web/app/views/main/service/info/metrics/hbase/regionserver_rw_requests.js index 8f159cf..7df350c 100644 --- a/ambari-web/app/views/main/service/info/metrics/hbase/regionserver_rw_requests.js +++ b/ambari-web/app/views/main/service/info/metrics/hbase/regionserver_rw_requests.js @@ -32,11 +32,7 @@ App.ChartServiceMetricsHBASE_RegionServerReadWriteRequests = App.ChartLinearTime ajaxIndex: 'service.metrics.hbase.regionserver_rw_requests', yAxisFormatter: App.ChartLinearTimeView.CreateRateFormatter('req', App.ChartLinearTimeView.DefaultFormatter), - title: function () { - return App.get('isHadoop2Stack') ? - Em.I18n.t('services.service.info.metrics.hbase.regionServerRequests.2') : - Em.I18n.t('services.service.info.metrics.hbase.regionServerRequests'); - }.property('App.isHadoop2Stack'), + title: Em.I18n.t('services.service.info.metrics.hbase.regionServerRequests.2'), transformToSeries: function (jsonData) { var seriesArray = []; http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/test/app_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/app_test.js b/ambari-web/test/app_test.js index a62424e..2b4e8db 100644 --- a/ambari-web/test/app_test.js +++ b/ambari-web/test/app_test.js @@ -150,64 +150,6 @@ describe('App', function () { }); }); - describe('#isHadoop2Stack', function () { - before(function () { - App.set('defaultStackVersion', ''); - }); - after(function () { - App.set('defaultStackVersion', 'HDP-2.0.5'); - }); - var testCasesWithoutHDFSDefined = [ - { - title: 'if currentStackVersion is empty then isHadoop2Stack should be false', - currentStackVersion: '', - result: false - }, - { - title: 'if currentStackVersion is "HDP-1.9.9" then isHadoop2Stack should be false', - currentStackVersion: 'HDP-1.9.9', - result: false - }, - { - title: 'if currentStackVersion is "HDP-2.0.0" then isHadoop2Stack should be true', - currentStackVersion: 'HDP-2.0.0', - result: true - }, - { - title: 'if currentStackVersion is "HDP-2.0.1" then isHadoop2Stack should be true', - currentStackVersion: 'HDP-2.0.1', - result: true - } - ]; - - testCasesWithoutHDFSDefined.forEach(function (test) { - it(test.title, function () { - App.set('currentStackVersion', test.currentStackVersion); - expect(App.get('isHadoop2Stack')).to.equal(test.result); - App.set('currentStackVersion', "HDP-1.2.2"); - }); - }); - - - it('HDFS service version should get priority when defined', function () { - var stackServices = [ - Em.Object.create({ - serviceName: 'HDFS', - serviceVersion: '2.1' - }) - ]; - sinon.stub(App.StackService, 'find', function () { - return stackServices; - }); - App.set('currentStackVersion', '0.8'); - App.set('isStackServicesLoaded', true); - expect(App.get('isHadoop2Stack')).to.equal(true); - App.set('isStackServicesLoaded', false); - App.set('currentStackVersion', "HDP-1.2.2"); - App.StackService.find.restore(); - }); - }); - describe('#isHaEnabled when HDFS is installed:', function () { beforeEach(function () { @@ -225,24 +167,17 @@ describe('App', function () { App.Service.find.restore(); }); - it('if hadoop stack version less than 2 then isHaEnabled should be false', function () { - App.set('currentStackVersion', 'HDP-1.3.1'); - expect(App.get('isHaEnabled')).to.equal(false); - App.set('currentStackVersion', "HDP-1.2.2"); - }); it('if hadoop stack version higher than 2 then isHaEnabled should be true', function () { - App.set('currentStackVersion', 'HDP-2.0.1'); + App.set('isStackServicesLoaded', true); expect(App.get('isHaEnabled')).to.equal(true); - App.set('currentStackVersion', "HDP-1.2.2"); + App.set('isStackServicesLoaded', false); }); it('if cluster has SECONDARY_NAMENODE then isHaEnabled should be false', function () { App.store.load(App.HostComponent, { id: 'SECONDARY_NAMENODE', component_name: 'SECONDARY_NAMENODE' }); - App.set('currentStackVersion', 'HDP-2.0.1'); expect(App.get('isHaEnabled')).to.equal(false); - App.set('currentStackVersion', "HDP-1.2.2"); }); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/test/controllers/main/admin/security/add/addSecurity_controller_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/admin/security/add/addSecurity_controller_test.js b/ambari-web/test/controllers/main/admin/security/add/addSecurity_controller_test.js index 5b38194..c48760d 100644 --- a/ambari-web/test/controllers/main/admin/security/add/addSecurity_controller_test.js +++ b/ambari-web/test/controllers/main/admin/security/add/addSecurity_controller_test.js @@ -57,52 +57,6 @@ describe('App.AddSecurityController', function () { }); }); - describe('#secureServices', function () { - - afterEach(function () { - App.get.restore(); - }); - - it('App.isHadoop2Stack = false', function () { - var result = [ - "GENERAL", - "HDFS", - "MAPREDUCE", - "HIVE", - "HBASE", - "ZOOKEEPER", - "OOZIE", - "NAGIOS" - ]; - sinon.stub(App, 'get', function () { - return false; - }); - Em.propertyDidChange(App, 'isHadoop2Stack'); - expect(controller.get('secureServices').mapProperty('serviceName')).to.eql(result); - }); - it('App.isHadoop2Stack = true', function () { - var result = [ - "GENERAL", - "HDFS", - "MAPREDUCE2", - "YARN", - "HIVE", - "HBASE", - "ZOOKEEPER", - "OOZIE", - "NAGIOS", - "STORM", - "FALCON", - "KNOX" - ]; - sinon.stub(App, 'get', function () { - return true; - }); - Em.propertyDidChange(App, 'isHadoop2Stack'); - expect(controller.get('secureServices').mapProperty('serviceName')).to.eql(result); - }); - }); - describe('#loadAllPriorSteps()', function () { beforeEach(function () { http://git-wip-us.apache.org/repos/asf/ambari/blob/3ae9a5c4/ambari-web/test/controllers/main/admin/security/add/step3_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/admin/security/add/step3_test.js b/ambari-web/test/controllers/main/admin/security/add/step3_test.js index e84f649..8324fda 100644 --- a/ambari-web/test/controllers/main/admin/security/add/step3_test.js +++ b/ambari-web/test/controllers/main/admin/security/add/step3_test.js @@ -159,29 +159,7 @@ describe('App.MainAdminSecurityAddStep3Controller', function () { controller.setComponentsConfig(result, Em.Object.create({hostName: 'c6401',hostComponents: []}), 'hadoopGroupId'); expect(result).to.be.empty; }); - it('isHadoop2Stack = false, when component from stack2', function() { - sinon.stub(App, 'get', function () { - return false; - }); - controller.reopen({ - componentToConfigMap: [{ - componentName: 'DATANODE', - principal: 'principal1', - keytab: 'keytab1', - displayName: 'displayName1', - isHadoop2Stack: true - }] - }); - var host = Em.Object.create({ - hostComponents: [{componentName: 'DATANODE'}], - hostName: 'host1' - }); - var result = []; - controller.setComponentsConfig(result, host, 'hadoopGroupId'); - expect(result).to.be.empty; - App.get.restore(); - }); - it('isHadoop2Stack = true, when component from stack2', function() { + it('when component from stack2', function() { sinon.stub(App, 'get', function () { return true; }); @@ -190,8 +168,7 @@ describe('App.MainAdminSecurityAddStep3Controller', function () { componentName: 'DATANODE', principal: 'principal1', keytab: 'keytab1', - displayName: 'displayName1', - isHadoop2Stack: true + displayName: 'displayName1' }] }); var host = Em.Object.create({
