You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jo...@apache.org on 2014/08/14 15:19:44 UTC

[4/6] git commit: AMBARI-6840. Jobs View: Update Top Nav rendering for jobs (srimanth)

AMBARI-6840. Jobs View: Update Top Nav rendering for jobs (srimanth)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2f5ee092
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2f5ee092
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2f5ee092

Branch: refs/heads/branch-alerts-dev
Commit: 2f5ee092fc283e8025ec9d751f6d906d46c015fd
Parents: 45d4e59
Author: Srimanth Gunturi <sg...@hortonworks.com>
Authored: Tue Aug 12 18:14:41 2014 -0700
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Thu Aug 14 09:19:16 2014 -0400

----------------------------------------------------------------------
 ambari-web/app/config.js                        |   1 -
 ambari-web/app/controllers.js                   |   2 -
 .../controllers/main/admin/access_controller.js |   6 +-
 .../main/jobs/hive_job_details_controller.js    |  87 --
 .../app/controllers/main/jobs_controller.js     | 497 ----------
 ambari-web/app/initialize.js                    |   1 -
 ambari-web/app/mappers.js                       |   2 -
 ambari-web/app/mappers/jobs/hive_job_mapper.js  | 216 -----
 ambari-web/app/mappers/jobs/hive_jobs_mapper.js | 100 --
 ambari-web/app/models.js                        |   3 -
 ambari-web/app/models/jobs/hive_job.js          |  29 -
 ambari-web/app/models/jobs/job.js               |  80 --
 ambari-web/app/models/jobs/tez_dag.js           | 189 ----
 ambari-web/app/routes/main.js                   |  41 -
 ambari-web/app/templates/main/admin/access.hbs  |   4 -
 ambari-web/app/templates/main/jobs.hbs          | 101 --
 .../templates/main/jobs/custom_dates_popup.hbs  |  39 -
 .../templates/main/jobs/hive_job_details.hbs    | 215 -----
 .../main/jobs/hive_job_details_tez_dag.hbs      |  44 -
 .../app/templates/main/jobs/hover_op_table.hbs  |  39 -
 .../app/templates/main/jobs/user_filter.hbs     |  34 -
 ambari-web/app/utils/jobs.js                    | 263 ------
 ambari-web/app/views.js                         |   4 -
 .../main/jobs/hive_job_details_tez_dag_view.js  | 946 -------------------
 .../views/main/jobs/hive_job_details_view.js    | 351 -------
 .../views/main/jobs/select_custom_date_view.js  |  37 -
 ambari-web/app/views/main/jobs_view.js          | 336 -------
 ambari-web/app/views/main/menu.js               |   5 +-
 28 files changed, 4 insertions(+), 3668 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/config.js b/ambari-web/app/config.js
index a4c71d4..f4e882a 100644
--- a/ambari-web/app/config.js
+++ b/ambari-web/app/config.js
@@ -75,7 +75,6 @@ App.supports = {
   deleteHost: true,
   autoRollbackHA: false,
   appTimelineServer: true,
-  jobs: true,
   ubuntu: true,
   views: true,
   flume: true,

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/controllers.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers.js b/ambari-web/app/controllers.js
index 9e915a6..3601cd2 100644
--- a/ambari-web/app/controllers.js
+++ b/ambari-web/app/controllers.js
@@ -117,8 +117,6 @@ require('controllers/main/charts/heatmap_metrics/heatmap_metric_hbase_regions');
 require('controllers/main/charts/heatmap_metrics/heatmap_metric_hbase_memstoresize');
 require('controllers/main/charts/heatmap');
 require('controllers/main/apps_controller');
-require('controllers/main/jobs_controller');
-require('controllers/main/jobs/hive_job_details_controller');
 require('controllers/main/apps/item_controller');
 require('controllers/main/mirroring_controller');
 require('controllers/main/mirroring/edit_dataset_controller');

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/controllers/main/admin/access_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/access_controller.js b/ambari-web/app/controllers/main/admin/access_controller.js
index aaab364..82bc9f3 100644
--- a/ambari-web/app/controllers/main/admin/access_controller.js
+++ b/ambari-web/app/controllers/main/admin/access_controller.js
@@ -25,7 +25,7 @@ App.MainAdminAccessController = Em.Controller.extend(App.UserPref, {
    * Show jobs by default
    * @type {bool}
    */
-  showJobs: true,
+  showJobs: false,
 
   /**
    * User pref key
@@ -57,9 +57,9 @@ App.MainAdminAccessController = Em.Controller.extend(App.UserPref, {
 
   getUserPrefErrorCallback: function () {
     if (App.get('isAdmin')) {
-      this.postUserPref(this.get('persistKey'), true);
+      this.postUserPref(this.get('persistKey'), false);
     }
-    this.set('showJobs', true);
+    this.set('showJobs', false);
     return true;
   }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/controllers/main/jobs/hive_job_details_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/jobs/hive_job_details_controller.js b/ambari-web/app/controllers/main/jobs/hive_job_details_controller.js
deleted file mode 100644
index 1e2df7e..0000000
--- a/ambari-web/app/controllers/main/jobs/hive_job_details_controller.js
+++ /dev/null
@@ -1,87 +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 jobsUtils = require('utils/jobs');
-
-App.MainHiveJobDetailsController = Em.Controller.extend({
-  name : 'mainHiveJobDetailsController',
-
-  content : null,
-  loaded : false,
-  loadTimeout: null,
-  job: null,
-  sortingColumn: null,
-
-  loadJobDetails : function() {
-    var self = this;
-    var timeout = this.get('loadTimeout');
-    var yarnService = App.YARNService.find().objectAt(0);
-    if (yarnService != null) {
-      var content = this.get('content');
-      if (content != null) {
-        jobsUtils.refreshJobDetails(content, function() {
-          self.set('content', self.get('job'));
-          self.set('loaded', true);
-        }, function(errorId) {
-          switch (errorId) {
-          case 'job.dag.noId':
-            App.showAlertPopup(Em.I18n.t('jobs.hive.tez.dag.error.noDagId.title'), Em.I18n.t('jobs.hive.tez.dag.error.noDagId.message'));
-            break;
-          case 'job.dag.noname':
-            App.showAlertPopup(Em.I18n.t('jobs.hive.tez.dag.error.noDag.title'), Em.I18n.t('jobs.hive.tez.dag.error.noDag.message'));
-            break;
-          case 'job.dag.id.noDag':
-            App.showAlertPopup(Em.I18n.t('jobs.hive.tez.dag.error.noDagForId.title'), Em.I18n.t('jobs.hive.tez.dag.error.noDagForId.message'));
-            break;
-          case 'job.dag.id.loaderror':
-          case 'job.dag.name.loaderror':
-            break;
-          default:
-            break;
-          }
-          self.routeToJobs();
-        });
-      }
-    } else {
-      clearTimeout(timeout);
-      timeout = setTimeout(function() {
-        self.loadJobDetails();
-      }, 300);
-    }
-  },
-
-  /**
-   * path to page visited before
-   */
-  referer : '',
-  /**
-   * open dashboard page
-   */
-  routeHome : function() {
-    App.router.transitionTo('main.dashboard.index');
-  },
-
-  /**
-   * open jobs page
-   *
-   * @param event
-   */
-  routeToJobs : function() {
-    App.router.transitionTo('main.jobs.index');
-  }
-});

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/controllers/main/jobs_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/jobs_controller.js b/ambari-web/app/controllers/main/jobs_controller.js
deleted file mode 100644
index caeac05..0000000
--- a/ambari-web/app/controllers/main/jobs_controller.js
+++ /dev/null
@@ -1,497 +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.MainJobsController = Em.Controller.extend({
-/*
- * https://github.com/emberjs/ember.js/issues/1221 prevents this controller
- * from being an Ember.ArrayController. Doing so will keep the UI flashing
- * whenever any of the 'sortProperties' or 'sortAscending' properties are set.
- * 
- *  To bypass this issue this controller will be a regular controller. Also,
- *  for memory-leak issues and sorting purposes, we are decoupling the backend
- *  model and the UI model. There will be simple Ember POJOs for the UI which
- *  will be periodically updated from backend Jobs model. 
- */
-  
-  name:'mainJobsController',
-
-  /**
-   * Unsorted ArrayProxy
-   */
-  content: App.HiveJob.find(),
-  
-  /**
-   * Sorted ArrayProxy
-   */
-  sortedContent: [],
-
-  contentAndSortObserver : function() {
-    Ember.run.once(this, 'contentAndSortUpdater');
-    if(App.HiveJob.find().findProperty('id', this.get('lastJobID'))) {
-      this.set('hasNewJobs', false);
-    }
-  }.observes('content.length', 'content.@each.id', 'content.@each.startTime', 'content.@each.endTime', 'sortProperties', 'sortAscending'),
-  
-  contentAndSortUpdater: function() {
-    this.set('sortingDone', false);
-    var content = this.get('content');
-    var sortedContent = content.toArray();
-    var sortProperty = this.get('sortProperty');
-    var sortAscending = this.get('sortAscending');
-    sortedContent.sort(function(r1, r2) {
-      var r1id = r1.get(sortProperty);
-      var r2id = r2.get(sortProperty);
-      if (r1id < r2id)
-        return sortAscending ? -1 : 1;
-      if (r1id > r2id)
-        return sortAscending ? 1 : -1;
-      return 0;
-    });
-    var sortedArray = this.get('sortedContent');
-    var count = 0;
-    sortedContent.forEach(function(sortedJob){
-      if(sortedArray.length <= count) {
-        sortedArray.pushObject(Ember.Object.create());
-      }
-      sortedArray[count].set('failed', sortedJob.get('failed'));
-      sortedArray[count].set('hasTezDag', sortedJob.get('hasTezDag'));
-      sortedArray[count].set('queryText', sortedJob.get('queryText'));
-      sortedArray[count].set('name', sortedJob.get('name'));
-      sortedArray[count].set('user', sortedJob.get('user'));
-      sortedArray[count].set('id', sortedJob.get('id'));
-      sortedArray[count].set('startTimeDisplay', sortedJob.get('startTimeDisplay'));
-      sortedArray[count].set('endTimeDisplay', sortedJob.get('endTimeDisplay'));
-      sortedArray[count].set('durationDisplay', sortedJob.get('durationDisplay'));
-      count ++;
-    });
-    if(sortedArray.length > count) {
-      for(var c = sortedArray.length-1; c >= count; c--){
-        sortedArray.removeObject(sortedArray[c]);
-      }
-    }
-    sortedContent.length = 0;
-    this.set('sortingDone', true);
-  },
-
-  navIDs: {
-    backIDs: [],
-    nextID: ''
-  },
-  lastJobID: '',
-  hasNewJobs: false,
-  loaded : false,
-  loading : false,
-  resetPagination: false,
-  loadJobsTimeout: null,
-  loadTimeout: null,
-  jobsUpdateInterval: 6000,
-  jobsUpdate: null,
-  sortingColumn: null,
-  sortProperty: 'id',
-  sortAscending: true,
-  sortingDone: true,
-  jobsMessage: Em.I18n.t('jobs.loadingTasks'),
-
-  sortingColumnObserver: function () {
-    if(this.get('sortingColumn')){
-      this.set('sortProperty', this.get('sortingColumn').get('name'));
-      this.set('sortAscending', this.get('sortingColumn').get('status') == "sorting_desc" ? false : true );
-    }
-  }.observes('sortingColumn.name','sortingColumn.status'),
-
-  updateJobsByClick: function () {
-    this.set('navIDs.backIDs', []);
-    this.set('navIDs.nextID', '');
-    this.get('filterObject').set('nextFromId', '');
-    this.get('filterObject').set('backFromId', '');
-    this.get('filterObject').set('fromTs', '');
-    this.set('hasNewJobs', false);
-    this.set('resetPagination', true);
-    this.loadJobs();
-  },
-
-  updateJobs: function (controllerName, funcName) {
-    clearInterval(this.get('jobsUpdate'));
-    var self = this;
-    var interval = setInterval(function () {
-      App.router.get(controllerName)[funcName]();
-    }, this.jobsUpdateInterval);
-    this.set('jobsUpdate', interval);
-  },
-
-  totalOfJobs: 0,
-  setTotalOfJobs: function () {
-    if(this.get('totalOfJobs') < this.get('content.length')){
-      this.set('totalOfJobs', this.get('content.length'));
-    }
-  }.observes('content.length'),
-
-  filterObject: Ember.Object.create({
-    id: "",
-    isIdFilterApplied: false,
-    jobsLimit: 10,
-    user: "",
-    windowStart: "",
-    windowEnd: "",
-    nextFromId: "",
-    backFromId: "",
-    fromTs: "",
-    isAnyFilterApplied: false,
-
-    onApplyIdFilter: function () {
-      if(this.get('id') == ""){
-        this.set('isIdFilterApplied', false);
-      }else{
-        this.set('isIdFilterApplied', true);
-      }
-    }.observes('id'),
-
-    /**
-     * Direct binding to startTime filter field
-     */
-    startTime: "",
-    onStartTimeChange:function(){
-      var time = "";
-      var curTime = new Date().getTime();
-      switch (this.get('startTime')) {
-        case 'Past 1 hour':
-          time = curTime - 3600000;
-          break;
-        case 'Past 1 Day':
-          time = curTime - 86400000;
-          break;
-        case 'Past 2 Days':
-          time = curTime - 172800000;
-          break;
-        case 'Past 7 Days':
-          time = curTime - 604800000;
-          break;
-        case 'Past 14 Days':
-          time = curTime - 1209600000;
-          break;
-        case 'Past 30 Days':
-          time = curTime - 2592000000;
-          break;
-        case 'Custom':
-          this.showCustomDatePopup();
-          break;
-        case 'Any':
-          time = "";
-          break;
-      }
-      if(this.get('startTime') != "Custom"){
-        this.set("windowStart", time);
-        this.set("windowEnd", "");
-      }
-    }.observes("startTime"),
-
-    // Fields values from Select Custom Dates form
-    customDateFormFields: Ember.Object.create({
-      startDate: null,
-      hoursForStart: null,
-      minutesForStart: null,
-      middayPeriodForStart: null,
-      endDate: null,
-      hoursForEnd: null,
-      minutesForEnd: null,
-      middayPeriodForEnd: null
-    }),
-
-    errors: Ember.Object.create({
-      isStartDateError: false,
-      isEndDateError: false
-    }),
-
-    errorMessages: Ember.Object.create({
-      startDate: '',
-      endDate: ''
-    }),
-
-    showCustomDatePopup: function () {
-      var self = this;
-      var windowEnd = "";
-      var windowStart = "";
-      App.ModalPopup.show({
-        header: Em.I18n.t('jobs.table.custom.date.header'),
-        onPrimary: function () {
-          self.validate();
-          if(self.get('errors.isStartDateError') || self.get('errors.isEndDateError')){
-            return false;
-          }
-
-          var windowStart = self.createCustomStartDate();
-          var windowEnd = self.createCustomEndDate();
-
-          self.set("windowStart", windowStart.getTime());
-          self.set("windowEnd", windowEnd.getTime());
-          this.hide();
-        },
-        onSecondary: function () {
-          self.set('startTime','Any');
-          this.hide();
-        },
-        bodyClass: App.JobsCustomDatesSelectView.extend({
-          controller: self
-        })
-      });
-    },
-
-    createCustomStartDate : function () {
-      var startDate = this.get('customDateFormFields.startDate');
-      var hoursForStart = this.get('customDateFormFields.hoursForStart');
-      var minutesForStart = this.get('customDateFormFields.minutesForStart');
-      var middayPeriodForStart = this.get('customDateFormFields.middayPeriodForStart');
-      if (startDate && hoursForStart && minutesForStart && middayPeriodForStart) {
-        return new Date(startDate + ' ' + hoursForStart + ':' + minutesForStart + ' ' + middayPeriodForStart);
-      }
-      return null;
-    },
-
-    createCustomEndDate : function () {
-      var endDate = this.get('customDateFormFields.endDate');
-      var hoursForEnd = this.get('customDateFormFields.hoursForEnd');
-      var minutesForEnd = this.get('customDateFormFields.minutesForEnd');
-      var middayPeriodForEnd = this.get('customDateFormFields.middayPeriodForEnd');
-      if (endDate && hoursForEnd && minutesForEnd && middayPeriodForEnd) {
-        return new Date(endDate + ' ' + hoursForEnd + ':' + minutesForEnd + ' ' + middayPeriodForEnd);
-      }
-      return null;
-    },
-
-    clearErrors: function () {
-      var errorMessages = this.get('errorMessages');
-      Em.keys(errorMessages).forEach(function (key) {
-        errorMessages.set(key, '');
-      }, this);
-      var errors = this.get('errors');
-      Em.keys(errors).forEach(function (key) {
-        errors.set(key, false);
-      }, this);
-    },
-
-    // Validation for every field in customDateFormFields
-    validate: function () {
-      var formFields = this.get('customDateFormFields');
-      var errors = this.get('errors');
-      var errorMessages = this.get('errorMessages');
-      this.clearErrors();
-      // Check if feild is empty
-      Em.keys(errorMessages).forEach(function (key) {
-        if (!formFields.get(key)) {
-          errors.set('is' + key.capitalize() + 'Error', true);
-          errorMessages.set(key, Em.I18n.t('jobs.customDateFilter.error.required'));
-        }
-      }, this);
-      // Check that endDate is after startDate
-      var startDate = this.createCustomStartDate();
-      var endDate = this.createCustomEndDate();
-      if (startDate && endDate && (startDate > endDate)) {
-        errors.set('isEndDateError', true);
-        errorMessages.set('endDate', Em.I18n.t('jobs.customDateFilter.error.date.order'));
-      }
-    },
-
-    /**
-     * Create link for server request
-     * @return {String}
-     */
-    createJobsFiltersLink: function() {
-      var link = "?fields=events,primaryfilters,otherinfo&secondaryFilter=tez:true";
-      var numberOfAppliedFilters = 0;
-
-      if(this.get("id") !== "") {
-        link = "/" + this.get("id") + link;
-        numberOfAppliedFilters++;
-      }
-
-      link += "&limit=" + (parseInt(this.get("jobsLimit")) + 1);
-
-      if(this.get("user") !== ""){
-        link += "&primaryFilter=user:" + this.get("user");
-        numberOfAppliedFilters++;
-      }
-      if(this.get("backFromId") != ""){
-        link += "&fromId=" + this.get("backFromId");
-      }
-      if(this.get("nextFromId") != ""){
-        link += "&fromId=" + this.get("nextFromId");
-      }
-      if(this.get("fromTs") != ""){
-        link += "&fromTs=" + this.get("fromTs");
-      }
-      if(this.get("startTime") !== "" && this.get("startTime") !== "Any"){
-        link += this.get("windowStart") !== "" ? ("&windowStart=" + this.get("windowStart")) : "";
-        link += this.get("windowEnd") !== "" ? ("&windowEnd=" + this.get("windowEnd")) : "";
-        numberOfAppliedFilters++;
-      }
-
-      if(numberOfAppliedFilters > 0){
-        this.set('isAnyFilterApplied', true);
-      }else{
-        this.set('isAnyFilterApplied', false);
-      }
-
-      return link;
-    }
-  }),
-
-  columnsName: Ember.ArrayController.create({
-    content: [
-      { name: Em.I18n.t('jobs.column.id'), index: 0 },
-      { name: Em.I18n.t('jobs.column.user'), index: 1 },
-      { name: Em.I18n.t('jobs.column.start.time'), index: 2 },
-      { name: Em.I18n.t('jobs.column.end.time'), index: 3 },
-      { name: Em.I18n.t('jobs.column.duration'), index: 4 }
-    ],
-    columnsCount: function () {
-      return this.get('content.length') + 1;
-    }.property('content.length')
-  }),
-
-  lastIDSuccessCallback: function(data, jqXHR, textStatus) {
-    if(!data.entities[0]){
-      return;
-    }
-    var lastReceivedID = data.entities[0].entity;
-    if(this.get('lastJobID') == '') {
-      this.set('lastJobID', lastReceivedID);
-      if (this.get('loaded') && App.HiveJob.find().get('length') < 1) {
-        this.set('hasNewJobs', true);
-      }
-    } else if (this.get('lastJobID') !== lastReceivedID) {
-      this.set('lastJobID', lastReceivedID);
-      if(!App.HiveJob.find().findProperty('id', lastReceivedID)) {
-        this.set('hasNewJobs', true);
-      }
-    }
-  },
-
-  lastIDErrorCallback: function(data, jqXHR, textStatus) {
-    console.debug(jqXHR);
-  },
-
-  checkDataLoadingError: function (jqXHR){
-    var atsComponent = App.HostComponent.find().findProperty('componentName','APP_TIMELINE_SERVER');
-    if(atsComponent && atsComponent.get('workStatus') != "STARTED") {
-      this.set('jobsMessage', Em.I18n.t('jobs.error.ats.down'));
-    }else if (jqXHR && jqXHR.status == 400) {
-      this.set('jobsMessage', Em.I18n.t('jobs.error.400'));
-    }else if ((!jqXHR && this.get('loaded') && !this.get('loading')) || (jqXHR && jqXHR.status == 500)) {
-      this.set('jobsMessage', Em.I18n.t('jobs.nothingToShow'));
-    }else{
-      this.set('jobsMessage', Em.I18n.t('jobs.loadingTasks'));
-    }
-  },
-
-  loadJobs : function() {
-    var self = this,
-      timeout = this.get('loadTimeout'),
-      yarnService = App.YARNService.find().objectAt(0),
-      atsComponent = App.HostComponent.find().findProperty('componentName','APP_TIMELINE_SERVER'),
-      atsInValidState = !!atsComponent && atsComponent.get('workStatus') === "STARTED",
-      retryLoad = this.checkDataLoadingError();
-    if (yarnService != null && atsInValidState) {
-      this.set('loading', true);
-      var historyServerHostName = yarnService.get('appTimelineServer.hostName'),
-        filtersLink = this.get('filterObject').createJobsFiltersLink(),
-        hiveQueriesUrl = App.get('testMode') ? "/data/jobs/hive-queries.json" : "/proxy?url=http://" + historyServerHostName
-        + ":" + yarnService.get('ahsWebPort') + "/ws/v1/timeline/HIVE_QUERY_ID" + filtersLink;
-      App.ajax.send({
-        name: 'jobs.lastID',
-        sender: self,
-        data: {
-          historyServerHostName: historyServerHostName,
-          ahsWebPort: yarnService.get('ahsWebPort')
-        },
-        success: 'lastIDSuccessCallback',
-        error : 'lastIDErrorCallback'
-      });
-      App.HttpClient.get(hiveQueriesUrl, App.hiveJobsMapper, {
-        complete : function(data, jqXHR, textStatus) {
-          self.set('loading', false);
-          if(self.get('loaded') == false || self.get('resetPagination') == true){
-            self.initializePagination();
-            self.set('resetPagination', false);
-          }
-          self.set('loaded', true);
-        }
-      }, function (jqXHR, textStatus) {
-        App.hiveJobsMapper.map({entities : []});
-        self.checkDataLoadingError(jqXHR);
-      });
-    }else{
-      this.checkDataLoadingError();
-      clearTimeout(timeout);
-      timeout = setTimeout(function(){
-        self.loadJobs();
-      }, 300);
-    }
-  },
-
-  initializePagination: function() {
-    var back_link_IDs = this.get('navIDs.backIDs.[]');
-    if(!back_link_IDs.contains(this.get('lastJobID'))) {
-      back_link_IDs.push(this.get('lastJobID'));
-    }
-    this.set('filterObject.backFromId', this.get('lastJobID'));
-    this.get('filterObject').set('fromTs', App.dateTime());
-  },
-
-  navigateNext: function() {
-    this.set("filterObject.backFromId", '');
-    var back_link_IDs = this.get('navIDs.backIDs.[]');
-    var lastBackID = this.get('navIDs.nextID');
-    if(!back_link_IDs.contains(lastBackID)) {
-      back_link_IDs.push(lastBackID);
-    }
-    this.set('navIDs.backIDs.[]', back_link_IDs);
-    this.set("filterObject.nextFromId", this.get('navIDs.nextID'));
-    this.set('navIDs.nextID', '');
-    this.loadJobs();
-  },
-
-  navigateBack: function() {
-    this.set("filterObject.nextFromId", '');
-    var back_link_IDs = this.get('navIDs.backIDs.[]');
-    back_link_IDs.pop();
-    var lastBackID = back_link_IDs[back_link_IDs.length - 1]
-    this.set('navIDs.backIDs.[]', back_link_IDs);
-    this.set("filterObject.backFromId", lastBackID);
-    this.loadJobs();
-  },
-
-  refreshLoadedJobs : function() {
-    var timeout = this.get('loadJobsTimeout');
-    var self = this;
-
-    clearTimeout(timeout);
-    timeout = setTimeout(function(){
-      self.loadJobs();
-    }, 300);
-
-    this.set('loadJobsTimeout', timeout);
-  }.observes(
-      'filterObject.id',
-      'filterObject.jobsLimit',
-      'filterObject.user',
-      'filterObject.windowStart',
-      'filterObject.windowEnd'
-  )
-})

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/initialize.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/initialize.js b/ambari-web/app/initialize.js
index 14473eb..a53e6af 100644
--- a/ambari-web/app/initialize.js
+++ b/ambari-web/app/initialize.js
@@ -40,7 +40,6 @@ require('utils/action_sequence');
 
 require('mappers');
 
-require('mappers/jobs/hive_job_mapper');
 require('utils/http_client');
 require('utils/host_progress_popup');
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/mappers.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers.js b/ambari-web/app/mappers.js
index 3435ac1..80c7255 100644
--- a/ambari-web/app/mappers.js
+++ b/ambari-web/app/mappers.js
@@ -21,7 +21,6 @@ require('mappers/server_data_mapper');
 require('mappers/stack_service_mapper');
 require('mappers/hosts_mapper');
 require('mappers/cluster_mapper');
-require('mappers/jobs_mapper');
 require('mappers/runs_mapper');
 require('mappers/racks_mapper');
 require('mappers/users_mapper');
@@ -31,5 +30,4 @@ require('mappers/target_cluster_mapper');
 require('mappers/dataset_mapper');
 require('mappers/component_config_mapper');
 require('mappers/components_state_mapper');
-require('mappers/jobs/hive_jobs_mapper');
 require('mappers/service_config_version_mapper');
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/mappers/jobs/hive_job_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/jobs/hive_job_mapper.js b/ambari-web/app/mappers/jobs/hive_job_mapper.js
deleted file mode 100644
index 58d3e90..0000000
--- a/ambari-web/app/mappers/jobs/hive_job_mapper.js
+++ /dev/null
@@ -1,216 +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');
-
-/**
- * Maps a Hive job response from server into an existing Hive Job.
- *
- * This will only update an existing Hive Job and not create a new one. It will
- * populate all fields (stages, Tez DAG, etc.) except runtime information like
- * <ul>
- * <li>tezDag.id
- * <li>tezDag.vertices.state
- * <li>tezDag.vertices.startTime
- * <li>tezDag.vertices.endTime
- * <li>tezDag.vertices.tasksCount
- * <li>tezDag.vertices.file*
- * <li>tezDag.vertices.hdfs*
- * <li>tezDag.vertices.recordReadCount
- * <li>tezDag.vertices.recordWriteCount
- * </ul>
- */
-App.hiveJobMapper = App.QuickDataMapper.create({
-  model : App.HiveJob,
-  map : function(json) {
-    var model = this.get('model');
-    if (!model) {
-      return;
-    }
-    var hiveJob = {};
-    if (json && json.entity) {
-      var hiveJob = {};
-      hiveJob.id = json.entity;
-      hiveJob.name = hiveJob.id;
-      hiveJob.startTime = json.starttime;
-      if (typeof(json.endtime) == "undefined") {
-        var i = 0;
-        while (typeof(hiveJob.endTime) == "undefined" &&  json.events && json.events[i]) {
-          if (json.events[i].eventtype == 'QUERY_COMPLETED') {
-            hiveJob.endTime = json.events[i].timestamp;
-          };
-          i++;
-        };
-      } else {
-        hiveJob.endTime = json.endtime;
-      };
-      json.otherinfo.query = $.parseJSON(json.otherinfo.query);
-      if (json.otherinfo.query && json.otherinfo.query.queryText) {
-        hiveJob.query_text = json.otherinfo.query.queryText;
-      }
-      hiveJob.stages = [];
-      var stagePlans = json.otherinfo.query.queryPlan["STAGE PLANS"];
-      for ( var stage in stagePlans) {
-        var stageValue = stagePlans[stage];
-        var stageItem = {};
-        stageItem.id = stage;
-        stageItem.description = '. ';
-        for (var item in stageValue) {
-          stageItem.description += item;
-        };
-        hiveJob.stages.push(stageItem);
-        if (stageValue.Tez != null && hiveJob.tezDag == null) {
-          var dagName = stageValue.Tez['DagName:'];
-          // Vertices
-          var vertices = [];
-          var vertexIds = [];
-          var vertexIdMap = {};
-          for ( var vertexName in stageValue.Tez["Vertices:"]) {
-            var vertex = stageValue.Tez["Vertices:"][vertexName];
-            var vertexObj = {
-              id : dagName + "/" + vertexName,
-              name : vertexName,
-              incoming_edges : [],
-              outgoing_edges : []
-            };
-            vertexIds.push(vertexObj.id);
-            var operatorExtractor = function(obj) {
-              var ops = [];
-              if ($.isArray(obj)) {
-                obj.forEach(function(o) {
-                  ops = ops.concat(operatorExtractor(o));
-                });
-              } else {
-                for ( var key in obj) {
-                  ops.push(key);
-                  if (obj[key].children != null) {
-                    ops = ops.concat(operatorExtractor(obj[key].children));
-                  }
-                }
-              }
-              return ops;
-            }
-            if (vertex["Map Operator Tree:"] != null) {
-              vertexObj.type = App.TezDagVertexType.MAP;
-              vertexObj.operations = operatorExtractor(vertex["Map Operator Tree:"]);
-              vertexObj.operation_plan = JSON.stringify(vertex["Map Operator Tree:"], undefined, "  ");
-            } else if (vertex["Reduce Operator Tree:"] != null) {
-              vertexObj.type = App.TezDagVertexType.REDUCE;
-              vertexObj.operations = operatorExtractor(vertex["Reduce Operator Tree:"]);
-              vertexObj.operation_plan = JSON.stringify(vertex["Reduce Operator Tree:"], undefined, "  ");
-            } else if (vertex["Vertex:"] != null && vertexName==vertex['Vertex:']) {
-              vertexObj.type = App.TezDagVertexType.UNION;
-            }
-            vertexIdMap[vertexObj.id] = vertexObj;
-            vertices.push(vertexObj);
-          }
-          // Edges
-          var edges = [];
-          var edgeIds = [];
-          for ( var childVertex in stageValue.Tez["Edges:"]) {
-            var childVertices = stageValue.Tez["Edges:"][childVertex];
-            if (!$.isArray(childVertices)) {
-              // Single edge given as object instead of array
-              childVertices = [ childVertices ];
-            }
-            childVertices.forEach(function(e) {
-              var parentVertex = e.parent;
-              if (e.type == 'CONTAINS') {
-                var parentVertexNode = vertexIdMap[dagName + "/" + parentVertex];
-                if (parentVertexNode != null && parentVertexNode.type == App.TezDagVertexType.UNION) {
-                  // We flip the edges for Union vertices
-                  var tmp = childVertex;
-                  childVertex = parentVertex;
-                  parentVertex = tmp;
-                }
-              }
-              var edgeObj = {
-                id : dagName + "/" + parentVertex + "-" + childVertex,
-                from_vertex_id : dagName + "/" + parentVertex,
-                to_vertex_id : dagName + "/" + childVertex
-              };
-              vertexIdMap[edgeObj.from_vertex_id].outgoing_edges.push(edgeObj.id);
-              vertexIdMap[edgeObj.to_vertex_id].incoming_edges.push(edgeObj.id);
-              edgeIds.push(edgeObj.id);
-              switch (e.type) {
-              case "BROADCAST_EDGE":
-                edgeObj.edge_type = App.TezDagEdgeType.BROADCAST;
-                break;
-              case "SIMPLE_EDGE":
-                edgeObj.edge_type = App.TezDagEdgeType.SCATTER_GATHER;
-                break;
-              case "CONTAINS":
-                edgeObj.edge_type = App.TezDagEdgeType.CONTAINS;
-                break;
-              default:
-                break;
-              }
-              edges.push(edgeObj);
-            });
-          }
-          // Create records
-          var tezDag = {
-            id : dagName,
-            name : dagName,
-            stage : stage,
-            vertices : vertexIds,
-            edges : edgeIds
-          }
-          // Once the DAG is loaded, we do not need to
-          // reload as the structure does not change. Reloading
-          // here causes missing data (got from other calls)
-          // to propagate into UI - causing flashing.
-          var newVertices = [];
-          var newEdges = [];
-          vertices.forEach(function(v) {
-            var vertexRecord = App.TezDagVertex.find(v.id);
-            if (!vertexRecord.get('isLoaded')) {
-              newVertices.push(v);
-            }
-          });
-          edges.forEach(function(e) {
-            var edgeRecord = App.TezDagEdge.find(e.id);
-            if (!edgeRecord.get('isLoaded')) {
-              newEdges.push(e);
-            }
-          });
-          App.store.loadMany(App.TezDagVertex, newVertices);
-          App.store.loadMany(App.TezDagEdge, newEdges);
-          var dagRecord = App.TezDag.find(tezDag.id);
-          if (!dagRecord.get('isLoaded')) {
-            App.store.load(App.TezDag, tezDag);
-          }
-          hiveJob.tezDag = tezDag.id;
-        }
-      }
-      if(App.HiveJob.find().get('content').length == 0){
-        App.store.load(model, hiveJob);
-      }
-      var hiveJobRecord = App.HiveJob.find(hiveJob.id);
-      if (hiveJobRecord != null) {
-        hiveJobRecord.set('stages', hiveJob.stages.sortProperty('id'));
-        hiveJobRecord.set('startTime', hiveJob.startTime);
-        hiveJobRecord.set('endTime', hiveJob.endTime);
-        if (hiveJob.tezDag != null) {
-          // Some hive queries dont use Tez
-          hiveJobRecord.set('tezDag', App.TezDag.find(hiveJob.tezDag));
-        }
-      }
-    }
-  },
-  config : {}
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/mappers/jobs/hive_jobs_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/jobs/hive_jobs_mapper.js b/ambari-web/app/mappers/jobs/hive_jobs_mapper.js
deleted file mode 100644
index 7377b8d..0000000
--- a/ambari-web/app/mappers/jobs/hive_jobs_mapper.js
+++ /dev/null
@@ -1,100 +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.hiveJobsMapper = App.QuickDataMapper.create({
-  model : App.HiveJob,
-  map : function(json) {
-    var model = this.get('model');
-    if (!model) {
-      return;
-    }
-    var hiveJobs = []
-    if (json) {
-      if(!json.entities) {
-        json.entities = [];
-        if(json.entity){
-          json.entities = [json];
-        }
-      }
-      var currentEntityMap = {};
-      json.entities.forEach(function(entity) {
-        currentEntityMap[entity.entity] = entity.entity;
-        var hiveJob = {
-          id : entity.entity,
-          name : entity.entity,
-          user : entity.primaryfilters.user
-        }
-        hiveJob.has_tez_dag = false;
-        hiveJob.query_text = '';
-        if (entity.otherinfo && entity.otherinfo.query) {
-          // Explicit false match needed for when failure hook not set
-          hiveJob.failed = entity.otherinfo.status===false;
-          hiveJob.has_tez_dag = entity.otherinfo.query.match("\"Tez\".*\"DagName:\"");
-          var queryJson = $.parseJSON(entity.otherinfo.query);
-          if (queryJson && queryJson.queryText) {
-            hiveJob.query_text = queryJson.queryText;
-          }
-        }
-        if (entity.events != null) {
-          entity.events.forEach(function(event) {
-            switch (event.eventtype) {
-            case "QUERY_SUBMITTED":
-              hiveJob.start_time = event.timestamp;
-              break;
-            case "QUERY_COMPLETED":
-              hiveJob.end_time = event.timestamp;
-              break;
-            default:
-              break;
-            }
-          });
-        }
-        if (!hiveJob.start_time && entity.starttime > 0) {
-          hiveJob.start_time = entity.starttime;
-        }
-        if (!hiveJob.end_time && entity.endtime > 0) {
-          hiveJob.end_time = entity.endtime;
-        }
-        hiveJobs.push(hiveJob);
-        hiveJob = null;
-        entity = null;
-      });
-
-      if(hiveJobs.length > App.router.get('mainJobsController.filterObject.jobsLimit')) {
-        var lastJob = hiveJobs.pop();
-        if(App.router.get('mainJobsController.navIDs.nextID') != lastJob.id) {
-          App.router.set('mainJobsController.navIDs.nextID', lastJob.id);
-        }
-        currentEntityMap[lastJob.id] = null;
-      }
-
-      // Delete IDs not seen from server
-      var hiveJobsModel = model.find().toArray();
-      hiveJobsModel.forEach(function(job) {
-        if (job && !currentEntityMap[job.get('id')]) {
-          this.deleteRecord(job);
-        }
-      }, this);
-    }
-    App.store.loadMany(model, hiveJobs);
-    json = null;
-    hiveJobs = null;
-  },
-  config : {}
-});

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/models.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models.js b/ambari-web/app/models.js
index 461cdfd..49b0498 100644
--- a/ambari-web/app/models.js
+++ b/ambari-web/app/models.js
@@ -54,7 +54,4 @@ require('models/slave_component');
 require('classes/run_class');
 require('classes/job_class');
 require('models/config_group');
-require('models/jobs/tez_dag');
-require('models/jobs/job');
-require('models/jobs/hive_job');
 require('models/service_config_version');

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/models/jobs/hive_job.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/jobs/hive_job.js b/ambari-web/app/models/jobs/hive_job.js
deleted file mode 100644
index 419dd41..0000000
--- a/ambari-web/app/models/jobs/hive_job.js
+++ /dev/null
@@ -1,29 +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.HiveJob = App.AbstractJob.extend({
-  jobType : App.JobType.HIVE,
-  queryText : DS.attr('string'),
-  stages : DS.attr('array'),
-  hasTezDag: DS.attr('boolean'),
-  tezDag : DS.belongsTo('App.TezDag'),
-  failed: DS.attr('boolean')
-});
-
-App.HiveJob.FIXTURES = [];

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/models/jobs/job.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/jobs/job.js b/ambari-web/app/models/jobs/job.js
deleted file mode 100644
index 44142fc..0000000
--- a/ambari-web/app/models/jobs/job.js
+++ /dev/null
@@ -1,80 +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 dateUtils = require('utils/date');
-
-/**
- * Base class of all Jobs.
- *
- * This class is meant to be extended and not instantiated directly.
- */
-App.AbstractJob = DS.Model.extend({
-  id : DS.attr('string'),
-  name : DS.attr('string'),
-  user : DS.attr('string'),
-  startTime : DS.attr('number'),
-  endTime : DS.attr('number'),
-
-  startTimeDisplay : function() {
-    var startTime = this.get('startTime');
-    if (startTime > 0) {
-      return dateUtils.dateFormat(startTime);
-    } else {
-      return "";
-    }
-  }.property('startTime'),
-
-  endTimeDisplay : function() {
-    var endTime = this.get('endTime');
-    if (endTime > 0) {
-      return dateUtils.dateFormat(endTime);
-    } else {
-      return "";
-    }
-  }.property('endTime'),
-
-  /**
-   * Provides the duration of this job. If the job has not started, duration
-   * will be given as 0. If the job has not ended, duration will be till now.
-   * 
-   * @return {Number} Duration in milliseconds.
-   */
-  duration : function() {
-    var startTime = this.get('startTime');
-    var endTime = this.get('endTime');
-    if(endTime < startTime || endTime == undefined) {
-      endTime =  App.dateTime();
-    }
-    return dateUtils.duration(startTime, endTime);
-  }.property('startTime', 'endTime'),
-
-  durationDisplay : function() {
-    return dateUtils.timingFormat(this.get('duration'), true);
-  }.property('duration'),
-
-  /**
-   * Type of this job. Should be one of constants defined in App.JobType
-   */
-  jobType : DS.attr('string')
-});
-
-App.JobType = {
-  HIVE : "hive"
-};
-
-App.AbstractJob.FIXTURES = [];

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/models/jobs/tez_dag.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/jobs/tez_dag.js b/ambari-web/app/models/jobs/tez_dag.js
deleted file mode 100644
index 461c227..0000000
--- a/ambari-web/app/models/jobs/tez_dag.js
+++ /dev/null
@@ -1,189 +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 dateUtils = require('utils/date');
-var numberUtils = require('utils/number_utils');
-
-App.TezDag = DS.Model.extend({
-  id : DS.attr('string'),
-  /**
-   * When DAG is actually running on server, a unique ID is assigned.
-   */
-  instanceId : DS.attr('string'),
-  name : DS.attr('string'),
-  yarnApplicationId: DS.attr('string'),
-  stage : DS.attr('string'),
-  vertices : DS.hasMany('App.TezDagVertex'),
-  edges : DS.hasMany('App.TezDagEdge')
-});
-
-App.TezDagEdge = DS.Model.extend({
-  id : DS.attr('string'),
-  instanceId : DS.attr('string'),
-  fromVertex : DS.belongsTo('App.TezDagVertex'),
-  toVertex : DS.belongsTo('App.TezDagVertex'),
-  /**
-   * Type of this edge connecting vertices. Should be one of constants defined
-   * in 'App.TezDagEdgeType'.
-   */
-  edgeType : DS.attr('string')
-});
-
-App.TezDagVertex = DS.Model.extend({
-  id : DS.attr('string'),
-  /**
-   * When DAG vertex is actually running on server, a unique ID is assigned.
-   */
-  instanceId : DS.attr('string'),
-  name : DS.attr('string'),
-
-  /**
-   * State of this vertex. Should be one of constants defined in
-   * App.TezDagVertexState.
-   */
-  state : DS.attr('string'),
-
-  /**
-   * Vertex type has to be one of the types defined in 'App.TezDagVertexType'
-   * @return {string}
-   */
-  type : DS.attr('string'),
-
-  /**
-   * A vertex can have multiple incoming edges.
-   */
-  incomingEdges : DS.hasMany('App.TezDagEdge'),
-
-  /**
-   * This vertex can have multiple outgoing edges.
-   */
-  outgoingEdges : DS.hasMany('App.TezDagEdge'),
-
-  startTime : DS.attr('number'),
-  endTime : DS.attr('number'),
-
-  /**
-   * Provides the duration of this job. If the job has not started, duration
-   * will be given as 0. If the job has not ended, duration will be till now.
-   *
-   * @return {Number} Duration in milliseconds.
-   */
-  duration : function() {
-    return dateUtils.duration(this.get('startTime'), this.get('endTime'))
-  }.property('startTime', 'endTime'),
-
-  /**
-   * Each Tez vertex can perform arbitrary application specific computations
-   * inside. The application can provide a list of operations it has provided in
-   * this vertex.
-   *
-   * Array of strings. [{string}]
-   */
-  operations : DS.attr('array'),
-
-  /**
-   * Provides additional information about the 'operations' performed in this
-   * vertex. This is shown directly to the user.
-   */
-  operationPlan : DS.attr('string'),
-
-  /**
-   * Number of actual Map/Reduce tasks in this vertex
-   */
-  tasksCount : DS.attr('number'),
-
-  tasksNumber: function () {
-    return this.get('tasksCount') ? this.get('tasksCount') : 0;
-  }.property('tasksCount'),
-
-  /**
-   * Local filesystem usage metrics for this vertex
-   */
-  fileReadBytes : DS.attr('number'),
-  fileWriteBytes : DS.attr('number'),
-  fileReadOps : DS.attr('number'),
-  fileWriteOps : DS.attr('number'),
-
-  /**
-   * Spilled records
-   */
-  spilledRecords : DS.attr('number'),
-
-  /**
-   * HDFS usage metrics for this vertex
-   */
-  hdfsReadBytes : DS.attr('number'),
-  hdfsWriteBytes : DS.attr('number'),
-  hdfsReadOps : DS.attr('number'),
-  hdfsWriteOps : DS.attr('number'),
-
-  /**
-   * Record metrics for this vertex
-   */
-  recordReadCount : DS.attr('number'),
-  recordWriteCount : DS.attr('number'),
-
-  totalReadBytes : function() {
-    return this.get('fileReadBytes') + this.get('hdfsReadBytes');
-  }.property('fileReadBytes', 'hdfsReadBytes'),
-
-  totalWriteBytes : function() {
-    return this.get('fileWriteBytes') + this.get('hdfsWriteBytes');
-  }.property('fileWriteBytes', 'hdfsWriteBytes'),
-
-  totalReadBytesDisplay : function() {
-    return numberUtils.bytesToSize(this.get('totalReadBytes'));
-  }.property('totalReadBytes'),
-
-  totalWriteBytesDisplay : function() {
-    return numberUtils.bytesToSize(this.get('totalWriteBytes'));
-  }.property('totalWriteBytes'),
-
-  durationDisplay : function() {
-    return dateUtils.timingFormat(this.get('duration'), true);
-  }.property('duration')
-});
-
-App.TezDagVertexState = {
-  NEW : "NEW",
-  INITIALIZING : "INITIALIZING",
-  INITED : "INITED",
-  RUNNING : "RUNNING",
-  SUCCEEDED : "SUCCEEDED",
-  FAILED : "FAILED",
-  KILLED : "KILLED",
-  ERROR : "ERROR",
-  TERMINATING : "TERMINATING",
-  JOBFAILED: "JOB FAILED"
-};
-
-App.TezDagVertexType = {
-  MAP: 'MAP',
-  REDUCE: 'REDUCE',
-  UNION: 'UNION'
-};
-
-App.TezDagEdgeType = {
-  SCATTER_GATHER : "SCATTER_GATHER",
-  BROADCAST : "BROADCAST",
-  CONTAINS: "CONTAINS"
-};
-
-App.TezDag.FIXTURES = [];
-App.TezDagEdge.FIXTURES = [];
-App.TezDagVertex.FIXTURES = [];
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/routes/main.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/main.js b/ambari-web/app/routes/main.js
index 42dd211..ab4b0b3 100644
--- a/ambari-web/app/routes/main.js
+++ b/ambari-web/app/routes/main.js
@@ -186,47 +186,6 @@ module.exports = Em.Route.extend({
     }
   }),
 
-  jobs: Em.Route.extend({
-    route: '/jobs',
-    enter: function (router) {
-      if (!App.router.get('mainAdminAccessController.showJobs') && !App.get('isAdmin')) {
-        Em.run.next(function () {
-          router.transitionTo('main.dashboard.index');
-        });
-      }
-    },
-    exit: function (router) {
-      clearInterval(router.get('mainJobsController').jobsUpdate);
-    },
-    index: Ember.Route.extend({
-      route: '/',
-      connectOutlets: function (router) {
-        if (!App.get('isHadoop2Stack')) {
-          Em.run.next(function () {
-            router.transitionTo('main.dashboard.index');
-          });
-        } else {
-          router.get('mainJobsController').updateJobs('mainJobsController', 'refreshLoadedJobs');
-          router.get('mainController').connectOutlet('mainJobs');
-        }
-      }
-    }),
-    jobDetails: Em.Route.extend({
-      route: '/:job_id',
-      connectOutlets: function (router, job) {
-        if (job) {
-          router.get('mainHiveJobDetailsController').set('loaded', false);
-          router.get('mainController').connectOutlet('mainHiveJobDetails', job);
-          router.get('mainHiveJobDetailsController').loadJobDetails();
-          router.get('mainJobsController').updateJobs('mainHiveJobDetailsController', 'loadJobDetails');
-        }
-      },
-      exit: function (router) {
-        router.get('mainHiveJobDetailsController').set('loaded', false);
-      }
-    })
-  }),
-
   mirroring: Em.Route.extend({
     route: '/mirroring',
     index: Ember.Route.extend({

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/templates/main/admin/access.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/access.hbs b/ambari-web/app/templates/main/admin/access.hbs
index a4a870a..9e85a06 100644
--- a/ambari-web/app/templates/main/admin/access.hbs
+++ b/ambari-web/app/templates/main/admin/access.hbs
@@ -20,10 +20,6 @@
       <strong>{{t common.access}}</strong>
   </div>
   <div class="acces-values">
-      <label>
-        {{view Ember.Checkbox checkedBinding="controller.showJobs" class="checkbox"}}
-        {{t admin.access.showJobs}}
-      </label>
   </div>
   <div class="control-group">
       <div class="controls">

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/templates/main/jobs.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/jobs.hbs b/ambari-web/app/templates/main/jobs.hbs
deleted file mode 100644
index 304f8fa..0000000
--- a/ambari-web/app/templates/main/jobs.hbs
+++ /dev/null
@@ -1,101 +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="jobs">
-      <div class="jobs_head">
-        <div>{{t menu.item.jobs}}</div>
-        {{#if controller.hasNewJobs}}
-          <div class="new-jobs-link">
-            <a href="javascript:void(null);" {{action updateJobsByClick target="controller"}}>{{t jobs.new_jobs.info}}</a>
-          </div>
-        {{/if}}
-        <div class="jobs-type">
-         {{t jobs.type}} : <span class="label label-info">{{t jobs.type.hive}}</span>
-        </div>
-      </div>
-      <table id="jobs-table" class="table advanced-header-table table-bordered table-striped">
-          <thead>
-          {{#view view.sortView classNames="label-row" contentBinding="view.content"}}
-              <th></th>
-              {{view view.parentView.idSort}}
-              {{view view.parentView.userSort}}
-              {{view view.parentView.startTimeSort}}
-              {{view view.parentView.endTimeSort}}
-              {{view view.parentView.durationSort}}
-          {{/view}}
-
-          <tr id="filter-row" class="first">
-              <th></th>
-              <th>{{view view.jobsIdFilterView}}</th>
-              <th>{{view view.userFilterView}}</th>
-              <th class="start-time">{{view view.startTimeFilterView}}</th>
-              <th></th>
-              <th></th>
-          </tr>
-          </thead>
-          <tbody>
-          {{#if view.noDataToShow}}
-            <tr>
-              <td class="no-data" {{bindAttr colspan="controller.columnsName.columnsCount"}}>
-                {{controller.jobsMessage}}
-              </td>
-            </tr>
-          {{else}}
-            {{#each job in controller.sortedContent}}
-              <tr>
-                <td>
-                  {{#if job.failed}}
-                    <i class="icon-remove-sign job-link" {{bindAttr title="view.jobFailMessage"}}></i>
-                  {{/if}}
-                </td>
-                <td>
-                  {{view view.jobNameView jobBinding="job"}}
-                </td>
-                <td>
-                  {{job.user}}
-                </td>
-                <td>
-                  {{job.startTimeDisplay}}
-                </td>
-                <td>
-                  {{job.endTimeDisplay}}
-                </td>
-                <td>
-                  {{job.durationDisplay}}
-                </td>
-              </tr>
-            {{/each}}
-          {{/if}}
-          </tbody>
-      </table>
-
-      <div class="page-bar">
-          <div id="filtered-jobs">
-            {{view.filteredJobs}} - <a href="javascript:void(null);" {{action clearFilters target="view"}}>{{t jobs.filtered.clear}}</a>
-          </div>
-          <div class="items-on-page">
-              <label>{{t jobs.show.up.to}}: {{view view.rowsPerPageSelectView selectionBinding="view.displayLength"}}</label>
-          </div>
-        <div class="paging_two_button">
-          {{view view.jobsPaginationLeft}}
-          {{view view.jobsPaginationRight}}
-        </div>
-      </div>
-  </div>
-

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/templates/main/jobs/custom_dates_popup.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/jobs/custom_dates_popup.hbs b/ambari-web/app/templates/main/jobs/custom_dates_popup.hbs
deleted file mode 100644
index 1b1d920..0000000
--- a/ambari-web/app/templates/main/jobs/custom_dates_popup.hbs
+++ /dev/null
@@ -1,39 +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 class="jobs-custom-dates">
-  <div>
-    <label>{{t jobs.customDateFilter.startTime}}</label>
-    {{view Ember.TextField valueBinding="customDateFormFields.startDate" class="input-small datepicker"}}
-    {{view Ember.Select contentBinding="view.hourOptions" selectionBinding="customDateFormFields.hoursForStart" class="input-mini"}}
-    {{view Ember.Select contentBinding="view.minuteOptions" selectionBinding="customDateFormFields.minutesForStart" class="input-mini"}}
-    {{view Ember.Select contentBinding="view.middayPeriodOptions" selectionBinding="customDateFormFields.middayPeriodForStart" class="input-mini"}}
-    <span class="help-inline">{{errorMessages.startDate}}</span>
-  </div>
-  <div>
-
-  </div>
-  <div>
-    <label>{{t jobs.customDateFilter.endTime}}</label>
-    {{view Ember.TextField valueBinding="customDateFormFields.endDate" class="input-small datepicker"}}
-    {{view Ember.Select contentBinding="view.hourOptions" selectionBinding="customDateFormFields.hoursForEnd" class="input-mini"}}
-    {{view Ember.Select contentBinding="view.minuteOptions" selectionBinding="customDateFormFields.minutesForEnd" class="input-mini"}}
-    {{view Ember.Select contentBinding="view.middayPeriodOptions" selectionBinding="customDateFormFields.middayPeriodForEnd" class="input-mini"}}
-    <span class="help-inline">{{errorMessages.endDate}}</span>
-  </div>
-</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/templates/main/jobs/hive_job_details.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/jobs/hive_job_details.hbs b/ambari-web/app/templates/main/jobs/hive_job_details.hbs
deleted file mode 100644
index 7a4eb3b..0000000
--- a/ambari-web/app/templates/main/jobs/hive_job_details.hbs
+++ /dev/null
@@ -1,215 +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="hive-job-details">
-
-  {{#if controller.loaded}}
-    <!-- Top Bar -->
-    <div class="top-bar">
-      <a {{action "routeToJobs" target="controller"}} href="#">{{t menu.item.jobs}}</a> > {{view.content.name}}
-      <a {{action "toggleShowQuery" target="view"}} href="#" id="toggle-query">{{view.toggleShowQueryText}}</a>
-      <div class="pull-right">Job Type: <span class="label label-info">{{view.content.jobType}}</span></div>
-      <div class="alert alert-info query-info">
-        <table id="job-more-details-table">
-          <tr>
-            <td>
-              {{t jobs.hive.query}}
-            </td>
-            <td>
-              {{view.content.queryText}}
-            </td>
-          </tr>
-          <tr>
-            <td>
-              {{t jobs.hive.yarnApplication}}
-            </td>
-            <td>
-              {{#if view.yarnApplicationIdLink}}
-                <a {{bindAttr href="view.yarnApplicationIdLink"}} target="_blank">
-                  {{view.content.tezDag.yarnApplicationId}}
-                </a>
-              {{else}}
-                {{view.content.tezDag.yarnApplicationId}}
-              {{/if}}
-            </td>
-          </tr>
-          <tr>
-            <td>
-              {{t jobs.hive.stages}}
-            </td>
-            <td>
-              <ol>
-                {{#each stage in view.content.stages}}
-                  <li>{{stage.id}}{{stage.description}}.</li>
-                {{/each}}
-              </ol>
-            </td>
-          </tr>
-        </table>
-      </div>
-    </div>
-
-    <!-- Sections -->
-    <div class="row-fluid">
-      <div class="span12 sections">
-        <!-- Section LHS -->
-        <div id="tez-dag-lhs" {{bindAttr class="view.isGraphMaximized:span12:span6 :sections-lhs"}}>
-          <div id="tez-dag-section" class="box">
-            <div id="tez-dag-section-top-bar"> &nbsp;
-              {{t jobs.hive.tez.dag.summary.metric}}
-              <div class="btn-group  display-inline-block">
-                <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
-                  {{view.summaryMetricTypeDisplay}}
-                  <span class="caret"></span>
-                </a>
-                <ul class="dropdown-menu">
-                  <!-- dropdown menu links -->
-                  {{#each type in view.summaryMetricTypesDisplay}}
-                    <li>
-                      <a title="{{type}}" href="#" {{action "doSelectSummaryMetricType" type target="view"}}>{{type}}</a>
-                    </li>
-                  {{/each}}
-                </ul>
-              </div>
-            <div id="tez-dag-section-top-bar-actions" class="pull-right">
-              <div class="btn-group">
-                <a id="tez-dag-zoom-in-button" {{bindAttr class="view.canGraphZoomIn::disabled :btn"}} {{action "doGraphZoomIn" target="view"}}>
-                  <i class="icon-zoom-in"></i>
-                </a>
-                <a id="tez-dag-zoom-out-button" {{bindAttr class="view.canGraphZoomOut::disabled :btn"}} {{action "doGraphZoomOut" target="view"}}>
-                  <i class="icon-zoom-out"></i>
-                </a>
-                {{#if view.isGraphMaximized}}
-                  <a id="tez-dag-resize-small-button" class="btn" {{action "doGraphMinimize" target="view"}}>
-                    <i class="icon-resize-small"></i>
-                  </a>
-                {{else}}
-                  <a id="tez-dag-resize-full-button" class="btn" {{action "doGraphMaximize" target="view"}}>
-                    <i class="icon-resize-full"></i>
-                  </a>
-                {{/if}}
-              </div>
-            </div>
-            </div>
-            <div id="tez-dag-section-body">
-              {{view App.MainHiveJobDetailsTezDagView controllerBinding="controller" selectedVertexBinding="view.selectedVertex" 
-                summaryMetricTypeBinding="view.summaryMetricType" zoomScaleBinding="view.zoomScale" 
-                zoomScaleFromBinding="view.zoomScaleFrom" zoomScaleToBinding="view.zoomScaleTo"}}
-            </div>
-          </div>
-        </div>
-
-        <!-- Section RHS -->
-        <div id="tez-vertices-rhs" {{bindAttr class="view.isGraphMaximized:hidden:span6 :sections-rhs"}}>
-
-          <!-- Section RHS Vertices -->
-          <div id="tez-vertices-table-section">
-            <div id="tez-vertices-table-container" class="section">
-              <table class="table table-hover table-bordered table-striped">
-                {{#view App.MainHiveJobDetailsVerticesTableView contentBinding="view.sortedVertices" doSelectVertexBinding="view.doSelectVertex" selectedVertexBinding="view.selectedVertex"}}
-                  <thead>
-                    {{#view view.sortView contentBinding="view.content"}}
-                      {{view view.parentView.nameSort}}
-                      {{view view.parentView.tasksSort}}
-                      {{view view.parentView.inputSort}}
-                      {{view view.parentView.outputSort}}
-                      {{view view.parentView.durationSort}}
-                    {{/view}}
-                  </thead>
-                  <tbody>
-                    {{#each vertex in view.content}}
-                      <tr {{bindAttr class="vertex.isSelected:info"}}>
-                        <td>
-                          <a title="{{vertex.name}}" href="#" {{action "doSelectVertex" vertex target="view"}}>{{vertex.name}}</a>
-                        </td>
-                        <td>{{vertex.tasksNumber}}</td>
-                        <td>{{vertex.totalReadBytesDisplay}}</td>
-                        <td>{{vertex.totalWriteBytesDisplay}}</td>
-                        <td>{{vertex.durationDisplay}}</td>
-                      </tr>
-                    {{/each}}
-                  </tbody>
-                {{/view}}
-              </table>
-            </div>
-          </div>
-
-          <!-- Section RHS Vertex -->
-          {{#if view.selectedVertex}}
-            <div id="section tez-vertex-details-section">
-              <div class="box">
-                <div class="box-header">
-                  <h4>{{view.selectedVertex.name}}</h4>
-                </div>
-                <div id="tez-vertex-details-section-body">
-                  <table class="table no-borders table-condensed">
-                    <tr>
-                      <td>{{t common.status}}</td>
-                      <td>{{view.selectedVertexIODisplay.status}}</td>
-                      <td></td>
-                    </tr>
-                    <tr>
-                      <td>{{t common.time.start}}</td>
-                      <td>{{view.selectedVertexIODisplay.started}}</td>
-                      <td></td>
-                    </tr>
-                    <tr>
-                      <td>{{t common.time.end}}</td>
-                      <td>{{view.selectedVertexIODisplay.ended}}</td>
-                      <td></td>
-                    </tr>
-                    <tr>
-                      <td>{{t jobs.hive.tez.tasks}}</td>
-                      <td>{{view.selectedVertex.tasksCount}}</td>
-                      <td></td>
-                    </tr>
-                    <tr>
-                      <td>{{t jobs.hive.tez.hdfs}}</td>
-                      <td>{{view.selectedVertexIODisplay.hdfs.read.ops}} / {{view.selectedVertexIODisplay.hdfs.read.bytes}}</td>
-                      <td>{{view.selectedVertexIODisplay.hdfs.write.ops}} / {{view.selectedVertexIODisplay.hdfs.write.bytes}}</td>
-                    </tr>
-                    <tr>
-                      <td>{{t jobs.hive.tez.localFiles}}</td>
-                      <td>{{view.selectedVertexIODisplay.file.read.ops}} / {{view.selectedVertexIODisplay.file.read.bytes}}</td>
-                      <td>{{view.selectedVertexIODisplay.file.write.ops}} / {{view.selectedVertexIODisplay.file.write.bytes}}</td>
-                    </tr>
-                    <tr>
-                        <td>{{t jobs.hive.tez.spilledRecords}}</td>
-                        <td>{{view.selectedVertex.spilledRecords}}</td>
-                    </tr>
-                    {{#if view.selectedVertexIODisplay.records.read}}
-                      <tr>
-                        <td>{{t jobs.hive.tez.records}}</td>
-                        <td>{{view.selectedVertexIODisplay.records.read}}</td>
-                        <td>{{view.selectedVertexIODisplay.records.write}}</td>
-                      </tr>
-                    {{/if}}
-                  </table>
-                </div>
-              </div>
-            </div>
-          {{/if}}
-        </div>
-      </div>
-    </div>
-  {{else}}
-    <div class="alert alert-info">
-      <h4>{{t app.loadingPlaceholder}}</h4>
-    </div>
-  {{/if}}
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/templates/main/jobs/hive_job_details_tez_dag.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/jobs/hive_job_details_tez_dag.hbs b/ambari-web/app/templates/main/jobs/hive_job_details_tez_dag.hbs
deleted file mode 100644
index 4d8d9e7..0000000
--- a/ambari-web/app/templates/main/jobs/hive_job_details_tez_dag.hbs
+++ /dev/null
@@ -1,44 +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="tez-dag-section-body-dag">
-  <svg id="tez-dag-svg" stroke="black" strokeWidth="2">
-    <defs>
-      <marker id="arrow" viewBox="0 -5 10 10" refX="4" markerWidth="3" markerHeight="3" orient="auto">
-        <path d="M0,-5L10,0L0,5"></path>
-      </marker>
-      <filter id="shadow" width="200%" height="200%">
-        <feGaussianBlur in="SourceAlpha" stdDeviation="3"/>
-        <feOffset dx="2" dy="2" result="offsetblur"/>
-        <feMerge> 
-          <feMergeNode/>
-          <feMergeNode in="SourceGraphic"/>
-        </feMerge>
-      </filter>
-      <clipPath id="operatorClipPath">
-        <rect x="0" y="0" width="50" height="16">
-        </rect>
-      </clipPath>
-      <font-face xmlns="http://www.w3.org/2000/svg" font-family="FontAwesome" unicode-range="U+0-7F">
-        <font-face-src>
-          <font-face-uri xlink:href="font/fontawesome-webfont.svg" xmlns:xlink="http://www.w3.org/1999/xlink"/>
-        </font-face-src>
-      </font-face>
-    </defs>
-  </svg>
-</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/templates/main/jobs/hover_op_table.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/jobs/hover_op_table.hbs b/ambari-web/app/templates/main/jobs/hover_op_table.hbs
deleted file mode 100644
index 22fa336..0000000
--- a/ambari-web/app/templates/main/jobs/hover_op_table.hbs
+++ /dev/null
@@ -1,39 +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.
-}}
-
-<p>{{content.operationName}}</p>
-<table id="hover-op-table" class="table table-bordered">
-    <thead>
-    <tr>
-        <th>{{t common.name}}</th>
-        <th>{{t common.value}}</th>
-    </tr>
-    </thead>
-    <tbody>
-    {{#each keys in content.operatorPlanObj}}
-        <tr>
-            <td>
-              {{keys.name}}
-            </td>
-            <td>
-              {{keys.value}}
-            </td>
-        </tr>
-    {{/each}}
-    </tbody>
-</table>

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/templates/main/jobs/user_filter.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/jobs/user_filter.hbs b/ambari-web/app/templates/main/jobs/user_filter.hbs
deleted file mode 100644
index 4b93eb2..0000000
--- a/ambari-web/app/templates/main/jobs/user_filter.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.
-}}
-<button class="btn single-btn-group filter-btn" {{action "clickFilterButton" target="view"}}>
-  {{t common.user}} <i class="icon-filter"></i>
-</button>
-<ul class="dropdown-menu filter-components">
-  <li id="title-bar">{{t apps.filters.filterComponents}}
-      <a class="close" {{action "closeFilter" target="view"}}>X</a>
-  </li>
-  {{#each user in view.users}}
-      <li>
-          <label class="checkbox">{{view Ember.Checkbox checkedBinding="user.checked"}} {{user.name}}</label>
-      </li>
-  {{/each}}
-
-    <li id="button-bar">
-        <button class="btn btn-inverse" {{action "applyFilter" target="view"}}>{{t common.apply}}</button>
-    </li>
-</ul>

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/utils/jobs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/jobs.js b/ambari-web/app/utils/jobs.js
deleted file mode 100644
index 8d8ee3f..0000000
--- a/ambari-web/app/utils/jobs.js
+++ /dev/null
@@ -1,263 +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');
-module.exports = {
-
-  /**
-   * Refreshes the latest information for a given job
-   *
-   * @param {App.AbstractJob}
-   *          job
-   * @param {Function}
-   *          successCallback
-   * @param {Funtion}
-   *          errorCallback(errorId) Called in error cases where there is no
-   *          data from server. 'errorId' can be one of
-   *          <ul>
-   *            <li>job.dag.noId</li>
-   *            <li>job.dag.noname</li>
-   *            <li>job.dag.id.noDag</li>
-   *            <li>job.dag.id.loaderror</li>
-   *            <li>job.dag.name.loaderror</li>
-   *          </ul>
-   */
-  refreshJobDetails : function(job, successCallback, errorCallback) {
-    this.refreshHiveJobDetails(job, successCallback, errorCallback);
-  },
-
-  /**
-   * Refreshes latest information of a Hive Job.
-   *
-   * @param {App.HiveJob}
-   *          hiveJob
-   * @param {Function}
-   *          successCallback
-   * @param {Function}
-   *          errorCallback @see #refreshJobDetails()
-   */
-  refreshHiveJobDetails : function(hiveJob, successCallback, errorCallback) {
-    var self = this;
-    // TODO - to be changed to history server when implemented in stack.
-    var yarnService = App.YARNService.find().objectAt(0);
-    var historyServerHostName = yarnService.get('appTimelineServer.hostName');
-    var ahsWebPort = yarnService.get('ahsWebPort');
-    var hiveJobId = hiveJob.get('id');
-    // First refresh query
-    var hiveQueriesUrl = App.get('testMode') ? "/data/jobs/hive-query-2.json" : "/proxy?url=http://" + historyServerHostName
-        + ":" + ahsWebPort + "/ws/v1/timeline/HIVE_QUERY_ID/" + hiveJob.get('id') + "?fields=events,otherinfo";
-    App.HttpClient.get(hiveQueriesUrl, App.hiveJobMapper, {
-      complete : function(jqXHR, textStatus) {
-        // Now get the Tez DAG ID from the DAG name
-        var hiveRecord = App.HiveJob.find(hiveJobId);
-        App.router.get('mainHiveJobDetailsController').set('job', hiveRecord);
-        var tezDagName = hiveRecord.get('tezDag.name');
-        if (tezDagName != null) {
-          var sender = {
-            dagNameToIdSuccess : function(data) {
-              if (data && data.entities && data.entities.length > 0) {
-                var dagId = data.entities[0].entity;
-                App.TezDag.find(tezDagName).set('instanceId', dagId);
-                self.refreshTezDagDetails(tezDagName, successCallback, errorCallback);
-              }else{
-                console.log('No Tez DAG was found for DAG name of ' + tezDagName);
-                errorCallback('job.dag.noId');
-              }
-            },
-            dagNameToIdError : function(jqXHR, url, method, showStatus) {
-              App.ajax.defaultErrorHandler(jqXHR, url, method, showStatus);
-              errorCallback('job.dag.name.loaderror');
-            }
-          }
-          App.ajax.send({
-            name : 'jobs.tezDag.NametoID',
-            sender : sender,
-            data : {
-              historyServerHostName : historyServerHostName,
-              tezDagName : tezDagName,
-              ahsWebPort: ahsWebPort
-            },
-            success : 'dagNameToIdSuccess',
-            error : 'dagNameToIdError'
-          });
-        } else {
-          console.log('No Tez DAG name to ask ID for. Job ID: ' + hiveJobId);
-          errorCallback('job.dag.noname');
-        }
-      }
-    }, function () {
-      App.router.transitionTo('main.jobs.index');
-    });
-  },
-
-  /**
-   * Refreshes runtime information of a Tez DAG based on events generated. The
-   * instance ID of the Tez DAG should be set.
-   *
-   * @param {string}
-   *          tezDagId ID of the Tez DAG. Example: 'HIVE-Q2:1'
-   * @param {Function}
-   *          successCallback
-   * @param {Function}
-   *          errorCallback @see #refreshJobDetails()
-   */
-  refreshTezDagDetails : function(tezDagId, successCallback, errorCallback) {
-    var self = this;
-    var yarnService = App.YARNService.find().objectAt(0);
-    var ahsWebPort = yarnService.get('ahsWebPort');
-    var historyServerHostName = yarnService.get('appTimelineServer.hostName');
-    var tezDag = App.TezDag.find(tezDagId);
-    if (tezDag) {
-      var tezDagInstanceId = tezDag.get('instanceId');
-      var sender = {
-        loadTezDagSuccess : function(data) {
-          if (data) {
-            if (data.otherinfo && data.otherinfo.applicationId) {
-              tezDag.set('yarnApplicationId', data.otherinfo.applicationId);
-            }
-            if (data.relatedentities && data.relatedentities.TEZ_VERTEX_ID != null) {
-              var count = data.relatedentities.TEZ_VERTEX_ID.length;
-              data.relatedentities.TEZ_VERTEX_ID.forEach(function(v) {
-                self.refreshTezDagVertex(tezDagId, v, function() {
-                  if (--count <= 0) {
-                    // all vertices succeeded
-                    successCallback();
-                  }
-                });
-              });
-            }
-          }
-        },
-        loadTezDagError : function(jqXHR, url, method, showStatus) {
-          App.ajax.defaultErrorHandler(jqXHR, url, method, showStatus);
-          errorCallback('job.dag.id.loaderror');
-        }
-      }
-      App.ajax.send({
-        name : 'jobs.tezDag.tezDagId',
-        sender : sender,
-        data : {
-          historyServerHostName : historyServerHostName,
-          tezDagId : tezDagInstanceId,
-          ahsWebPort: ahsWebPort
-        },
-        success : 'loadTezDagSuccess',
-        error : 'loadTezDagError'
-      });
-    } else {
-      console.log('Unable to find DAG for ID: ' + tezDagId);
-      errorCallback('job.dag.id.noDag');
-    }
-  },
-
-  /**
-   * Refreshes runtime information of the given vertex.
-   *
-   * @param {string}
-   *          tezDagId ID of the Tez DAG. Exmaple: 'HIVE-Q2:1'
-   * @param {string}
-   *          tezVertexInstanceID Instance ID of the vertex to refresh. Example
-   *          'vertex_1390516007863_0001_1_00'
-   * @param {Function}
-   *          successCallback
-   */
-  refreshTezDagVertex : function(tezDagId, tezVertexInstanceId, successCallback) {
-    var yarnService = App.YARNService.find().objectAt(0);
-    var ahsWebPort = yarnService.get('ahsWebPort');
-    var historyServerHostName = yarnService.get('appTimelineServer.hostName');
-    var tezDag = App.TezDag.find(tezDagId);
-    var hiveJob = App.HiveJob.find().findProperty('tezDag', tezDag);
-    var hiveJobFailed = hiveJob.get('failed');
-    var hiveJobEndTime = hiveJob.get('endTime');
-    var sender = {
-      loadTezDagVertexSuccess : function(data) {
-        if (data && data.otherinfo) {
-          var vertexRecord = App.TezDagVertex.find(tezDagId + "/" + data.otherinfo.vertexName);
-          if (vertexRecord != null) {
-            vertexRecord.set('startTime', data.otherinfo.startTime);
-            if (data.otherinfo.endTime == undefined && hiveJobFailed) {
-              vertexRecord.set('endTime', hiveJobEndTime);
-            } else {
-              vertexRecord.set('endTime', data.otherinfo.endTime);
-            };
-            vertexRecord.set('tasksCount', data.otherinfo.numTasks);
-            if (data.otherinfo.status == null && hiveJobFailed) {
-              vertexRecord.set('state', Em.I18n.t('jobs.hive.failed'));
-            } else {
-              vertexRecord.set('state', data.otherinfo.status);
-            };
-            if (data.otherinfo.counters && data.otherinfo.counters.counterGroups) {
-              data.otherinfo.counters.counterGroups.forEach(function(cGroup) {
-                var cNameToPropetyMap = {};
-                switch (cGroup.counterGroupName) {
-                case 'org.apache.tez.common.counters.FileSystemCounter':
-                  cNameToPropetyMap = {
-                    'FILE_BYTES_READ' : 'fileReadBytes',
-                    'FILE_BYTES_WRITTEN' : 'fileWriteBytes',
-                    'FILE_READ_OPS' : 'fileReadOps',
-                    'FILE_WRITE_OPS' : 'fileWriteOps',
-                    'HDFS_BYTES_READ' : 'hdfsReadBytes',
-                    'HDFS_BYTES_WRITTEN' : 'hdfsWriteBytes',
-                    'HDFS_READ_OPS' : 'hdfsReadOps',
-                    'HDFS_WRITE_OPS' : 'hdfsWriteOps'
-                  };
-                  break;
-                case 'org.apache.tez.common.counters.TaskCounter':
-                  cNameToPropetyMap = {
-                     'SPILLED_RECORDS' : 'spilledRecords'
-                    };
-                  break;
-                case 'HIVE':
-                  cNameToPropetyMap = {
-                    'RECORDS_READ' : 'recordReadCount',
-                    'RECORDS_WRITE' : 'recordWriteCount'
-                  };
-                  break;
-                default:
-                  break;
-                }
-                if (cGroup.counters) {
-                  cGroup.counters.forEach(function(counter) {
-                    var prop = cNameToPropetyMap[counter.counterName];
-                    if (prop != null) {
-                      vertexRecord.set(prop, counter.counterValue);
-                    }
-                  });
-                }
-              });
-            }
-            successCallback();
-          }
-        }
-      },
-      loadTezDagVertexError : function(jqXHR, url, method, showStatus) {
-        App.ajax.defaultErrorHandler(jqXHR, url, method, showStatus);
-      }
-    }
-    App.ajax.send({
-      name : 'jobs.tezDag.tezDagVertexId',
-      sender : sender,
-      data : {
-        historyServerHostName : historyServerHostName,
-        tezDagVertexId : tezVertexInstanceId,
-        ahsWebPort: ahsWebPort
-      },
-      success : 'loadTezDagVertexSuccess',
-      error : 'loadTezDagVertexError'
-    });
-  }
-};

http://git-wip-us.apache.org/repos/asf/ambari/blob/2f5ee092/ambari-web/app/views.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views.js b/ambari-web/app/views.js
index 8790fed..21eeb16 100644
--- a/ambari-web/app/views.js
+++ b/ambari-web/app/views.js
@@ -243,10 +243,6 @@ 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/jobs_view');
-require('views/main/jobs/select_custom_date_view');
-require('views/main/jobs/hive_job_details_view');
-require('views/main/jobs/hive_job_details_tez_dag_view');
 require('views/main/apps/item_view');
 require('views/main/apps/item/bar_view');
 require('views/main/apps/item/dag_view');