浏览代码

AMBARI-6189. Wizards should not persist tasks logs data to server. (akovalenko)

Aleksandr Kovalenko 11 年之前
父节点
当前提交
2301fa04ef

+ 1 - 0
ambari-web/app/controllers.js

@@ -30,6 +30,7 @@ require('controllers/main/admin');
 require('controllers/main/admin/highAvailability_controller');
 require('controllers/main/admin/highAvailability/wizard_controller');
 require('controllers/main/admin/highAvailability/progress_controller');
+require('controllers/main/admin/highAvailability/progress_popup_controller');
 require('controllers/main/admin/highAvailability/rollback_controller');
 require('controllers/main/admin/highAvailability/step1_controller');
 require('controllers/main/admin/highAvailability/step2_controller');

+ 40 - 59
ambari-web/app/controllers/main/admin/highAvailability/progress_controller.js

@@ -27,12 +27,11 @@ App.HighAvailabilityProgressPageController = App.HighAvailabilityWizardControlle
   clusterDeployState: 'HIGH_AVAILABILITY_DEPLOY',
   tasks: [],
   commands: [],
-  currentRequestIds: [],
+  currentRequestIds: [], //todo: replace with using requestIds from tasks
   logs: [],
   currentTaskId: null,
   POLL_INTERVAL: 4000,
   isSubmitDisabled: true,
-  serviceTimestamp: null,
   isRollback: false,
 
   loadStep: function () {
@@ -48,11 +47,10 @@ App.HighAvailabilityProgressPageController = App.HighAvailabilityWizardControlle
     console.warn('func: clearStep');
     this.set('isSubmitDisabled', true);
     this.set('tasks', []);
-    this.set('logs', []);
     this.set('currentRequestIds', []);
   },
 
-  initializeTasks: function() {
+  initializeTasks: function () {
     console.warn('func: initializeTasks');
     var commands = this.get('commands');
     var currentStep = App.router.get('highAvailabilityWizardController.currentStep');
@@ -68,32 +66,28 @@ App.HighAvailabilityProgressPageController = App.HighAvailabilityWizardControlle
         displayName: Em.I18n.t('admin.highAvailability.wizard.step' + currentStep + '.task' + i + '.title'),
         progress: 0,
         isRunning: false,
-        hosts: []
+        requestIds: []
       }));
     }
   },
 
-  services: function(){
-    return this.get('tasks');
-  }.property('tasks'),
-
   loadTasks: function () {
     console.warn('func: loadTasks');
     var self = this;
-    var loadedStauses = this.get('content.tasksStatuses');
-    var loadedLogs = this.get('content.logs');
-    if (loadedStauses && loadedLogs && loadedStauses.length === this.get('tasks').length) {
-      this.get('tasks').forEach(function(task,i){
-        self.setTaskStatus(task.get('id'), loadedStauses[i]);
-        self.restoreTaskLog(task.get('id'), loadedLogs[i]);
+    var loadedStatuses = this.get('content.tasksStatuses');
+    var loadedRequestIds = this.get('content.tasksRequestIds');
+    if (loadedStatuses && loadedStatuses.length === this.get('tasks').length) {
+      this.get('tasks').forEach(function (task, i) {
+        self.setTaskStatus(task.get('id'), loadedStatuses[i]);
+        self.setRequestIds(task.get('id'), loadedRequestIds[i]);
       });
-      if (loadedStauses.contains('IN_PROGRESS')) {
-        var curTaskId = this.get('tasks')[loadedStauses.indexOf('IN_PROGRESS')].get('id');
+      if (loadedStatuses.contains('IN_PROGRESS')) {
+        var curTaskId = this.get('tasks')[loadedStatuses.indexOf('IN_PROGRESS')].get('id');
         this.set('currentRequestIds', this.get('content.requestIds'));
         this.set('currentTaskId', curTaskId);
         this.doPolling();
-      }else if (loadedStauses.contains('QUEUED')){
-        var curTaskId = this.get('tasks')[loadedStauses.indexOf('QUEUED')].get('id');
+      } else if (loadedStatuses.contains('QUEUED')) {
+        var curTaskId = this.get('tasks')[loadedStatuses.indexOf('QUEUED')].get('id');
         this.set('currentTaskId', curTaskId);
         this.runTask(curTaskId);
       }
@@ -105,27 +99,8 @@ App.HighAvailabilityProgressPageController = App.HighAvailabilityWizardControlle
     this.get('tasks').findProperty('id', taskId).set('status', status);
   },
 
-  restoreTaskLog: function (taskId, log) {
-    console.warn('func: restoreTaskLog');
-    this.get('tasks').findProperty('id', taskId).set('hosts', log);
-  },
-
-  setTaskLogs: function (taskId, tasks) {
-    console.warn('func: setTaskLogs');
-    var hosts = [];
-    var uniqHosts = tasks.mapProperty('Tasks.host_name').uniq();
-    uniqHosts.forEach(function (host) {
-      var curHostTasks = tasks.filterProperty('Tasks.host_name', host);
-      hosts.push(
-       {
-          name: host,
-          publicName: host,
-          logTasks: curHostTasks
-        }
-      );
-    });
-    this.get('tasks').findProperty('id', taskId).set('hosts', hosts);
-    this.set('serviceTimestamp', App.dateTime());
+  setRequestIds: function (taskId, requestIds) {
+    this.get('tasks').findProperty('id', taskId).set('requestIds', requestIds);
   },
 
   retryTask: function () {
@@ -158,12 +133,12 @@ App.HighAvailabilityProgressPageController = App.HighAvailabilityWizardControlle
         App.router.transitionTo('main.admin.index');
         location.reload();
       },
-      secondary : Em.I18n.t('no'),
-      onSecondary: function(){
+      secondary: Em.I18n.t('no'),
+      onSecondary: function () {
         this.hide();
       },
       bodyClass: Ember.View.extend({
-        template: Ember.Handlebars.compile( Em.I18n.t('admin.highAvailability.confirmManualRollbackBody'))
+        template: Ember.Handlebars.compile(Em.I18n.t('admin.highAvailability.confirmManualRollbackBody'))
       })
     });
   },
@@ -181,7 +156,7 @@ App.HighAvailabilityProgressPageController = App.HighAvailabilityWizardControlle
         App.router.transitionTo('main.admin.highAvailabilityRollback');
         this.hide();
       },
-      secondary : Em.I18n.t('common.cancel'),
+      secondary: Em.I18n.t('common.cancel'),
       body: Em.I18n.t('admin.highAvailability.confirmRollbackBody')
     });
   },
@@ -189,13 +164,13 @@ App.HighAvailabilityProgressPageController = App.HighAvailabilityWizardControlle
   onTaskStatusChange: function () {
     console.warn('func: onTaskStatusChange1');
     var statuses = this.get('tasks').mapProperty('status');
-    var logs = this.get('tasks').mapProperty('hosts');
+    var tasksRequestIds = this.get('tasks').mapProperty('requestIds');
     var requestIds = this.get('currentRequestIds');
-    console.warn('func: onTaskStatusChange5',statuses, logs, requestIds);
+    console.warn('func: onTaskStatusChange5', statuses, tasksRequestIds, requestIds);
     // save task info
     App.router.get(this.get('content.controllerName')).saveTasksStatuses(statuses);
+    App.router.get(this.get('content.controllerName')).saveTasksRequestIds(tasksRequestIds);
     App.router.get(this.get('content.controllerName')).saveRequestIds(requestIds);
-    App.router.get(this.get('content.controllerName')).saveLogs(logs);
     // call saving of cluster status asynchronous
     // synchronous executing cause problems in Firefox
     App.clusterStatus.setClusterStatus({
@@ -209,7 +184,7 @@ App.HighAvailabilityProgressPageController = App.HighAvailabilityWizardControlle
    * Method that called after saving persist data to server.
    * Switch task according its status.
    */
-  statusChangeCallback: function() {
+  statusChangeCallback: function () {
     if (!this.get('tasks').someProperty('status', 'IN_PROGRESS') && !this.get('tasks').someProperty('status', 'QUEUED') && !this.get('tasks').someProperty('status', 'FAILED')) {
       var nextTask = this.get('tasks').findProperty('status', 'PENDING');
       if (nextTask) {
@@ -227,19 +202,19 @@ App.HighAvailabilityProgressPageController = App.HighAvailabilityWizardControlle
       console.warn('func: onTaskStatusChange4');
       this.set('status', 'FAILED');
       this.get('tasks').findProperty('status', 'FAILED').set('showRetry', true);
-      if(App.supports.autoRollbackHA){
+      if (App.supports.autoRollbackHA) {
         this.get('tasks').findProperty('status', 'FAILED').set('showRollback', true);
       }
     }
-    this.get('tasks').filterProperty('status','COMPLETED').setEach('showRetry', false);
-    this.get('tasks').filterProperty('status','COMPLETED').setEach('showRollback', false);
+    this.get('tasks').filterProperty('status', 'COMPLETED').setEach('showRetry', false);
+    this.get('tasks').filterProperty('status', 'COMPLETED').setEach('showRollback', false);
   },
 
   /**
    * Run command of appropriate task
    */
   runTask: function (taskId) {
-    console.warn('func: runTask',taskId);
+    console.warn('func: runTask', taskId);
     this[this.get('tasks').findProperty('id', taskId).get('command')]();
   },
 
@@ -393,12 +368,12 @@ App.HighAvailabilityProgressPageController = App.HighAvailabilityWizardControlle
       this.get('currentRequestIds').push(data.Requests.id);
       var tasksCount = arguments[2].taskNum || 1;
       if (tasksCount === this.get('currentRequestIds').length) {
+        this.setRequestIds(this.get('currentTaskId'), this.get('currentRequestIds'));
         console.warn('func: startPolling2');
         this.doPolling();
       }
     } else {
       console.warn('func: startPolling3');
-      this.setTaskLogs(this.get('currentTaskId'), []);
       this.onTaskCompleted();
     }
   },
@@ -423,7 +398,7 @@ App.HighAvailabilityProgressPageController = App.HighAvailabilityWizardControlle
 
   parseLogs: function (logs) {
     console.warn('func: parseLogs');
-    this.get('logs').push(logs.tasks);
+    this.get('logs').pushObject(logs.tasks);
     if (this.get('currentRequestIds').length === this.get('logs').length) {
       var tasks = [];
       this.get('logs').forEach(function (logs) {
@@ -431,10 +406,9 @@ App.HighAvailabilityProgressPageController = App.HighAvailabilityWizardControlle
       }, this);
       var self = this;
       var currentTaskId = this.get('currentTaskId');
-      this.setTaskLogs(currentTaskId, tasks);
       if (!tasks.someProperty('Tasks.status', 'PENDING') && !tasks.someProperty('Tasks.status', 'QUEUED') && !tasks.someProperty('Tasks.status', 'IN_PROGRESS')) {
         this.set('currentRequestIds', []);
-        if (tasks.someProperty('Tasks.status', 'FAILED')  || tasks.someProperty('Tasks.status', 'TIMEDOUT') || tasks.someProperty('Tasks.status', 'ABORTED')) {
+        if (tasks.someProperty('Tasks.status', 'FAILED') || tasks.someProperty('Tasks.status', 'TIMEDOUT') || tasks.someProperty('Tasks.status', 'ABORTED')) {
           this.setTaskStatus(currentTaskId, 'FAILED');
         } else {
           this.setTaskStatus(currentTaskId, 'COMPLETED');
@@ -442,9 +416,9 @@ App.HighAvailabilityProgressPageController = App.HighAvailabilityWizardControlle
       } else {
         var actionsPerHost = tasks.length;
         var completedActions = tasks.filterProperty('Tasks.status', 'COMPLETED').length
-          + tasks.filterProperty('Tasks.status', 'FAILED').length
-          + tasks.filterProperty('Tasks.status', 'ABORTED').length
-          + tasks.filterProperty('Tasks.status', 'TIMEDOUT').length;
+            + tasks.filterProperty('Tasks.status', 'FAILED').length
+            + tasks.filterProperty('Tasks.status', 'ABORTED').length
+            + tasks.filterProperty('Tasks.status', 'TIMEDOUT').length;
         var queuedActions = tasks.filterProperty('Tasks.status', 'QUEUED').length;
         var inProgressActions = tasks.filterProperty('Tasks.status', 'IN_PROGRESS').length;
         var progress = Math.ceil(((queuedActions * 0.09) + (inProgressActions * 0.35) + completedActions ) / actionsPerHost * 100);
@@ -456,6 +430,13 @@ App.HighAvailabilityProgressPageController = App.HighAvailabilityWizardControlle
     }
   },
 
+  showHostProgressPopup: function (event) {
+    var popupTitle = event.contexts[0].title;
+    var requestIds = event.contexts[0].requestIds;
+    var hostProgressPopupController = App.router.get('highAvailabilityProgressPopupController');
+    hostProgressPopupController.initPopup(popupTitle, requestIds, this);
+  },
+
   done: function () {
     if (!this.get('isSubmitDisabled')) {
       this.removeObserver('tasks.@each.status', this, 'onTaskStatusChange');

+ 177 - 0
ambari-web/app/controllers/main/admin/highAvailability/progress_popup_controller.js

@@ -0,0 +1,177 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+App.HighAvailabilityProgressPopupController = Ember.Controller.extend({
+
+  name: 'highAvailabilityProgressPopupController',
+
+  /**
+   * Id of current request
+   * @type {Array}
+   */
+  requestIds: [],
+
+  /**
+   * Title for popup header
+   * @type {String}
+   */
+  popupTitle: '',
+
+  /**
+   * Array with Hosts tasks data used in <code>App.HostPopup</code>
+   * @type {Array}
+   */
+  services: [],
+
+  /**
+   * Timestamp used in <code>App.HostPopup</code>
+   * @type {Number}
+   */
+  serviceTimestamp: null,
+
+  /**
+   * Progress controller. Used to get tasks data.
+   * @type {App.HighAvailabilityProgressPageController}
+   */
+  progressController: null,
+
+  /**
+   * Requests data with tasks
+   * @type {Array}
+   */
+  hostsData: [],
+
+  /**
+   * Get info for <code>requestIds</code> and initialize <code>App.HostPopup</code>
+   * @param popupTitle {String}
+   * @param requestIds {Array}
+   * @param progressController {App.HighAvailabilityProgressPageController}
+   */
+  initPopup: function (popupTitle, requestIds, progressController) {
+    this.set('progressController', progressController);
+    this.set('popupTitle', popupTitle);
+    this.set('requestIds', requestIds);
+    this.set('hostsData', []);
+    this.getHosts();
+  },
+
+  /**
+   * Send AJAX request to get hosts tasks data
+   */
+  getHosts: function () {
+    var requestIds = this.get('requestIds');
+    requestIds.forEach(function (requestId) {
+      App.ajax.send({
+        name: 'admin.high_availability.polling',
+        sender: this,
+        data: {
+          requestId: requestId
+        },
+        success: 'onGetHostsSuccess'
+      })
+    }, this);
+  },
+
+  /**
+   * Callback for <code>getHosts</code> request
+   * @param data
+   */
+  onGetHostsSuccess: function (data) {
+    var hostsData = this.get('hostsData');
+    hostsData.push(data);
+    if (this.get('requestIds.length') === this.get('hostsData.length')) {
+      var popupTitle = this.get('popupTitle');
+      this.calculateHostsData(hostsData);
+      App.HostPopup.initPopup(popupTitle, this);
+      if (this.isRequestRunning(hostsData)) {
+        this.addObserver('progressController.logs.length', this, 'getDataFromProgressController');
+      }
+    }
+  },
+
+  /**
+   * Convert data to format used in <code>App.HostPopup</code>
+   * @param data {Array}
+   */
+  calculateHostsData: function (data) {
+    var hosts = [];
+    var hostsMap = {};
+    var popupTitle = this.get('popupTitle');
+    data.forEach(function (request) {
+      request.tasks.forEach(function (task) {
+        var host = hosts.findProperty('name', task.Tasks.host_name);
+        if (hostsMap[host]) {
+          hostsMap[host].logTasks.push(task);
+        } else {
+          hostsMap[host] = {
+            name: task.Tasks.host_name,
+            publicName: task.Tasks.host_name,
+            logTasks: [task]
+          };
+        }
+      });
+    });
+    for (var host in hostsMap) {
+      hosts.push(hostsMap[host]);
+    }
+    this.set('services', [
+      {name: popupTitle, hosts: hosts}
+    ]);
+    this.set('serviceTimestamp', App.dateTime());
+    if (!this.isRequestRunning(data)) {
+      this.removeObserver('progressController.logs.length', this, 'getDataFromProgressController');
+    }
+  },
+
+  /**
+   * Get hosts tasks data from <code>progressController</code>
+   */
+  getDataFromProgressController: function () {
+    var data = this.get('hostsData');
+    var tasksData = this.get('progressController.logs');
+    if (tasksData.length) {
+      var tasks = [];
+      tasksData.forEach(function (logs) {
+        tasks.pushObjects(logs);
+      }, this);
+      data.forEach(function (request) {
+        tasks = tasks.filterProperty('Tasks.request_id', request.Requests.id);
+        request.tasks = tasks;
+      });
+      this.calculateHostsData(data);
+    }
+  },
+
+  /**
+   * Identify whether request is running by task counters
+   * @param requests {Array}
+   * @return {Boolean}
+   */
+  isRequestRunning: function (requests) {
+    var result = false;
+    requests.forEach(function (request) {
+      if ((request.Requests.task_count -
+          (request.Requests.aborted_task_count + request.Requests.completed_task_count + request.Requests.failed_task_count
+              + request.Requests.timed_out_task_count - request.Requests.queued_task_count)) > 0) {
+        result = true;
+      }
+    });
+    return result;
+  }
+});
+

+ 12 - 12
ambari-web/app/controllers/main/admin/highAvailability/wizard_controller.js

@@ -203,21 +203,11 @@ App.HighAvailabilityWizardController = App.WizardController.extend({
     this.set('content.requestIds', requestIds);
   },
 
-  saveLogs: function(logs){
-    App.db.setHighAvailabilityWizardLogs(logs);
-    this.set('content.logs', logs);
-  },
-
   loadRequestIds: function(){
     var requestIds = App.db.getHighAvailabilityWizardRequestIds();
     this.set('content.requestIds', requestIds);
   },
 
-  loadLogs: function(){
-    var logs = App.db.getHighAvailabilityWizardLogs();
-    this.set('content.logs', logs);
-  },
-
   saveNameServiceId: function(nameServiceId){
     App.db.setHighAvailabilityWizardNameServiceId(nameServiceId);
     this.set('content.nameServiceId', nameServiceId);
@@ -228,6 +218,16 @@ App.HighAvailabilityWizardController = App.WizardController.extend({
     this.set('content.nameServiceId', nameServiceId);
   },
 
+  saveTasksRequestIds: function (requestIds) {
+    App.db.setHighAvailabilityWizardTasksRequestIds(requestIds);
+    this.set('content.tasksRequestIds', requestIds);
+  },
+
+  loadTasksRequestIds: function () {
+    var requestIds = App.db.getHighAvailabilityWizardTasksRequestIds();
+    this.set('content.tasksRequestIds', requestIds);
+  },
+
   /**
    * Load data for all steps until <code>current step</code>
    */
@@ -240,8 +240,8 @@ App.HighAvailabilityWizardController = App.WizardController.extend({
       case '6':
       case '5':
         this.loadTasksStatuses();
+        this.loadTasksRequestIds();
         this.loadRequestIds();
-        this.loadLogs();
       case '4':
       case '3':
         this.loadNameServiceId();
@@ -269,7 +269,7 @@ App.HighAvailabilityWizardController = App.WizardController.extend({
   clearTasksData: function () {
     this.saveTasksStatuses(undefined);
     this.saveRequestIds(undefined);
-    this.saveLogs(undefined);
+    this.saveTasksRequestIds(undefined);
   },
 
   /**

+ 0 - 12
ambari-web/app/controllers/main/admin/rollbackHA/rollback_wizard_controller.js

@@ -60,7 +60,6 @@ App.RollbackHighAvailabilityWizardController = App.WizardController.extend({
     return jQuery.extend({}, this.get('clusterStatusTemplate'), {name: App.router.getClusterName()});
   },
 
-
   /**
    * save status of the cluster.
    * @param clusterStatus object with status,requestId fields.
@@ -89,11 +88,6 @@ App.RollbackHighAvailabilityWizardController = App.WizardController.extend({
     this.set('content.requestIds', requestIds);
   },
 
-  saveLogs: function(logs){
-    App.db.setRollbackHighAvailabilityWizardLogs(logs);
-    this.set('content.logs', logs);
-  },
-
   saveSelectedSNN: function(addNN){
     App.db.setRollBackHighAvailabilityWizardSelectedSNN(addNN);
     this.set('content.selectedAddNN', addNN);
@@ -124,11 +118,6 @@ App.RollbackHighAvailabilityWizardController = App.WizardController.extend({
     this.set('content.requestIds', requestIds);
   },
 
-  loadLogs: function(){
-    var logs = App.db.getRollbackHighAvailabilityWizardLogs();
-    this.set('content.logs', logs);
-  },
-
   /**
    * Load data for all steps until <code>current step</code>
    */
@@ -157,7 +146,6 @@ App.RollbackHighAvailabilityWizardController = App.WizardController.extend({
   clearTasksData: function () {
     this.saveTasksStatuses(undefined);
     this.saveRequestIds(undefined);
-    this.saveLogs(undefined);
   },
 
   /**

+ 12 - 11
ambari-web/app/controllers/main/service/reassign_controller.js

@@ -209,12 +209,23 @@ App.ReassignMasterController = App.WizardController.extend({
     };
     App.db.setMasterToReassign(component);
   },
+
   saveTasksStatuses: function (statuses) {
     App.db.setReassignTasksStatuses(statuses);
     this.set('content.tasksStatuses', statuses);
     console.log('ReassignMasterController.saveTasksStatuses: saved statuses', statuses);
   },
 
+  loadTasksRequestIds: function () {
+    var requestIds = App.db.getReassignTasksRequestIds();
+    this.set('content.tasksRequestIds', requestIds);
+  },
+
+  saveTasksRequestIds: function (requestIds) {
+    App.db.setReassignTasksRequestIds(requestIds);
+    this.set('content.tasksRequestIds', requestIds);
+  },
+
   loadRequestIds: function () {
     var requestIds = App.db.getReassignMasterWizardRequestIds();
     this.set('content.requestIds', requestIds);
@@ -225,16 +236,6 @@ App.ReassignMasterController = App.WizardController.extend({
     this.set('content.requestIds', requestIds);
   },
 
-  saveLogs: function (logs) {
-    App.db.setReassignMasterWizardLogs(logs);
-    this.set('content.logs', logs);
-  },
-
-  loadLogs: function () {
-    var logs = App.db.getReassignMasterWizardLogs();
-    this.set('content.logs', logs);
-  },
-
   saveComponentDir: function (componentDir) {
     App.db.setReassignMasterWizardComponentDir(componentDir);
     this.set('content.componentDir', componentDir);
@@ -288,8 +289,8 @@ App.ReassignMasterController = App.WizardController.extend({
         this.loadComponentDir();
       case '4':
         this.loadTasksStatuses();
+        this.loadTasksRequestIds();
         this.loadRequestIds();
-        this.loadLogs();
       case '3':
         this.loadReassignHosts();
       case '2':

+ 1 - 1
ambari-web/app/routes/reassign_master_routes.js

@@ -161,7 +161,7 @@ module.exports = App.WizardRoute.extend({
     back: Em.Router.transitionTo('step2'),
     next: function (router) {
       App.db.setReassignTasksStatuses(undefined);
-      App.db.setReassignMasterWizardLogs(undefined);
+      App.db.setReassignTasksRequestIds(undefined);
       App.clusterStatus.setClusterStatus({
         clusterName: router.get('reassignMasterController.content.cluster.name'),
         clusterState: 'REASSIGN_MASTER_INSTALLING',

+ 1 - 1
ambari-web/app/templates/main/admin/highAvailability/progress.hbs

@@ -24,7 +24,7 @@
     <div class="item">
       <div {{bindAttr class=":pull-left view.linkClass controller.isHA:span4 controller.isRollback:span3 controller.isReassign:span5"}}>
         <i {{bindAttr class="view.icon view.iconColor"}}></i>
-        <a {{bindAttr class=""}} {{action "hostsLogPopup" task target="view"}} >{{task.title}}</a>
+        <a {{action "showHostProgressPopup" task target="controller"}} >{{task.title}}</a>
       </div>
       <div {{bindAttr class="view.showProgressBar::hide :row :span5 :pull-left" }}>
         <div {{bindAttr class=":progress-bar controller.isRollback::span8 controller.isRollback:span3"}}>

+ 1 - 1
ambari-web/app/utils/ajax/ajax.js

@@ -1007,7 +1007,7 @@ var urls = {
     }
   },
   'admin.high_availability.polling': {
-    'real': '/clusters/{clusterName}/requests/{requestId}?fields=tasks/*',
+    'real': '/clusters/{clusterName}/requests/{requestId}?fields=tasks/*,Requests/*',
     'mock': '',
     'type': 'GET'
   },

+ 30 - 30
ambari-web/app/utils/db.js

@@ -317,6 +317,12 @@ App.db.setReassignTasksStatuses = function (tasksStatuses) {
   localStorage.setObject('ambari', App.db.data);
 };
 
+App.db.setReassignTasksRequestIds = function (requestIds) {
+  App.db.data = localStorage.getObject('ambari');
+  App.db.data.ReassignMaster.tasksRequestIds = requestIds;
+  localStorage.setObject('ambari', App.db.data);
+};
+
 App.db.setStacks = function (stacks) {
   App.db.data = localStorage.getObject('ambari');
   App.db.data.app.stacksVersions = stacks;
@@ -425,21 +431,21 @@ App.db.setHighAvailabilityWizardTasksStatuses = function (tasksStatuses) {
   localStorage.setObject('ambari', App.db.data);
 };
 
-App.db.setHighAvailabilityWizardHdfsUser = function (hdfsUser) {
+App.db.setHighAvailabilityWizardTasksRequestIds = function (requestIds) {
   App.db.data = localStorage.getObject('ambari');
-  App.db.data.HighAvailabilityWizard.hdfsUser = hdfsUser;
+  App.db.data.HighAvailabilityWizard.tasksRequestIds = requestIds;
   localStorage.setObject('ambari', App.db.data);
 };
 
-App.db.setHighAvailabilityWizardRequestIds = function (requestIds) {
+App.db.setHighAvailabilityWizardHdfsUser = function (hdfsUser) {
   App.db.data = localStorage.getObject('ambari');
-  App.db.data.HighAvailabilityWizard.requestIds = requestIds;
+  App.db.data.HighAvailabilityWizard.hdfsUser = hdfsUser;
   localStorage.setObject('ambari', App.db.data);
 };
 
-App.db.setHighAvailabilityWizardLogs = function (logs) {
+App.db.setHighAvailabilityWizardRequestIds = function (requestIds) {
   App.db.data = localStorage.getObject('ambari');
-  App.db.data.HighAvailabilityWizard.logs = logs;
+  App.db.data.HighAvailabilityWizard.requestIds = requestIds;
   localStorage.setObject('ambari', App.db.data);
 };
 
@@ -480,15 +486,15 @@ App.db.setRollbackHighAvailabilityWizardTasksStatuses = function (tasksStatuses)
   localStorage.setObject('ambari', App.db.data);
 };
 
-App.db.setRollbackHighAvailabilityWizardRequestIds = function (requestIds) {
+App.db.setRollbackHighAvailabilityWizardTasksRequestIds = function (requestIds) {
   App.db.data = localStorage.getObject('ambari');
-  App.db.data.RollbackHighAvailabilityWizard.requestIds = requestIds;
+  App.db.data.RollbackHighAvailabilityWizard.tasksRequestIds = requestIds;
   localStorage.setObject('ambari', App.db.data);
 };
 
-App.db.setRollbackHighAvailabilityWizardLogs = function (logs) {
+App.db.setRollbackHighAvailabilityWizardRequestIds = function (requestIds) {
   App.db.data = localStorage.getObject('ambari');
-  App.db.data.RollbackHighAvailabilityWizard.logs = logs;
+  App.db.data.RollbackHighAvailabilityWizard.requestIds = requestIds;
   localStorage.setObject('ambari', App.db.data);
 };
 
@@ -498,12 +504,6 @@ App.db.setReassignMasterWizardRequestIds = function (requestIds) {
   localStorage.setObject('ambari', App.db.data);
 };
 
-App.db.setReassignMasterWizardLogs = function (logs) {
-  App.db.data = localStorage.getObject('ambari');
-  App.db.data.ReassignMaster.logs = logs;
-  localStorage.setObject('ambari', App.db.data);
-};
-
 App.db.setReassignMasterWizardComponentDir = function (componentDir) {
   App.db.data = localStorage.getObject('ambari');
   App.db.data.ReassignMaster.componentDir = componentDir;
@@ -687,6 +687,11 @@ App.db.getReassignTasksStatuses = function () {
   return App.db.data.ReassignMaster.tasksStatuses;
 };
 
+App.db.getReassignTasksRequestIds = function () {
+  App.db.data = localStorage.getObject('ambari');
+  return App.db.data.ReassignMaster.tasksRequestIds;
+};
+
 App.db.getUpgradeOptions = function () {
   console.log('TRACE: Entering db:getUpgradeOptions function');
   App.db.data = localStorage.getObject('ambari');
@@ -749,6 +754,11 @@ App.db.getHighAvailabilityWizardTasksStatuses = function () {
   return App.db.data.HighAvailabilityWizard.tasksStatuses;
 };
 
+App.db.getHighAvailabilityWizardTasksRequestIds = function () {
+  App.db.data = localStorage.getObject('ambari');
+  return App.db.data.ReassignMaster.tasksRequestIds;
+};
+
 App.db.getHighAvailabilityWizardFailedTask = function () {
   App.db.data = localStorage.getObject('ambari');
   return App.db.data.HighAvailabilityWizard.failedTask;
@@ -769,11 +779,6 @@ App.db.getHighAvailabilityWizardRequestIds = function () {
   return App.db.data.HighAvailabilityWizard.requestIds;
 };
 
-App.db.getHighAvailabilityWizardLogs = function () {
-  App.db.data = localStorage.getObject('ambari');
-  return App.db.data.HighAvailabilityWizard.logs;
-};
-
 App.db.getHighAvailabilityWizardNameServiceId = function () {
   App.db.data = localStorage.getObject('ambari');
   return App.db.data.HighAvailabilityWizard.nameServiceId;
@@ -784,14 +789,14 @@ App.db.getRollbackHighAvailabilityWizardTasksStatuses = function () {
   return App.db.data.RollbackHighAvailabilityWizard.tasksStatuses;
 };
 
-App.db.getRollbackHighAvailabilityWizardRequestIds = function () {
+App.db.getRollbackHighAvailabilityWizardTasksRequestIds = function () {
   App.db.data = localStorage.getObject('ambari');
-  return App.db.data.RollbackHighAvailabilityWizard.requestIds;
+  return App.db.data.ReassignMaster.tasksRequestIds;
 };
 
-App.db.getRollbackHighAvailabilityWizardLogs = function () {
+App.db.getRollbackHighAvailabilityWizardRequestIds = function () {
   App.db.data = localStorage.getObject('ambari');
-  return App.db.data.RollbackHighAvailabilityWizard.logs;
+  return App.db.data.RollbackHighAvailabilityWizard.requestIds;
 };
 
 App.db.getRollBackHighAvailabilityWizardAddNNHost = function (host) {
@@ -809,11 +814,6 @@ App.db.getReassignMasterWizardRequestIds = function () {
   return App.db.data.ReassignMaster.requestIds;
 };
 
-App.db.getReassignMasterWizardLogs = function () {
-  App.db.data = localStorage.getObject('ambari');
-  return App.db.data.ReassignMaster.logs;
-};
-
 App.db.getReassignMasterWizardComponentDir = function () {
   App.db.data = localStorage.getObject('ambari');
   return App.db.data.ReassignMaster.componentDir;

+ 6 - 21
ambari-web/app/views/main/admin/highAvailability/progress_view.js

@@ -27,9 +27,9 @@ App.HighAvailabilityProgressPageView = Em.View.extend({
 
   headerTitle: function () {
     var currentStep = App.router.get('highAvailabilityWizardController.currentStep');
-    if(currentStep == 1) {
+    if (currentStep == 1) {
       return  Em.I18n.t('admin.highAvailability.wizard.rollback.header.title');
-    }else {
+    } else {
       return  Em.I18n.t('admin.highAvailability.wizard.step' + currentStep + '.header.title');
     }
   }.property(),
@@ -42,9 +42,9 @@ App.HighAvailabilityProgressPageView = Em.View.extend({
 
   noticeInProgress: function () {
     var currentStep = App.router.get('highAvailabilityWizardController.currentStep');
-    if(currentStep == 1) {
+    if (currentStep == 1) {
       return  Em.I18n.t('admin.highAvailability.rollback.notice.inProgress');
-    }else {
+    } else {
       return  Em.I18n.t('admin.highAvailability.wizard.step' + currentStep + '.notice.inProgress');
     }
   }.property(),
@@ -81,7 +81,7 @@ App.HighAvailabilityProgressPageView = Em.View.extend({
     }.property('content.progress'),
 
     onStatus: function () {
-      var linkClass = !!this.get('content.hosts.length') ? 'active-link' : 'active-text';
+      var linkClass = !!this.get('content.requestIds.length') ? 'active-link' : 'active-text';
       this.set('linkClass', linkClass);
       if (this.get('content.status') === 'IN_PROGRESS') {
         this.set('icon', 'icon-cog');
@@ -101,21 +101,6 @@ App.HighAvailabilityProgressPageView = Em.View.extend({
 
     showProgressBar: function () {
       return this.get('content.status') === "IN_PROGRESS";
-    }.property('content.status'),
-
-    /**
-     * open popup with list of hosts, that associated to service
-     * @param event
-     */
-    hostsLogPopup: function(event){
-      if(!!this.get('content.hosts.length')){
-        var serviceName = event.contexts[0].title;
-        var controller = this.get("controller");
-        App.router.get('applicationController').dataLoading().done(function (initValue) {
-          var popupView = App.HostPopup.initPopup(serviceName, controller);
-          popupView.set ('isNotShowBgChecked', !initValue);
-        })
-      }
-    }
+    }.property('content.status')
   })
 });