You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by yu...@apache.org on 2013/05/03 01:22:13 UTC

svn commit: r1478605 - in /incubator/ambari/trunk: ./ ambari-web/app/ ambari-web/app/controllers/main/host/ ambari-web/app/controllers/main/service/ ambari-web/app/controllers/main/service/info/ ambari-web/app/data/ ambari-web/app/utils/ ambari-web/app...

Author: yusaku
Date: Thu May  2 23:22:11 2013
New Revision: 1478605

URL: http://svn.apache.org/r1478605
Log:
AMBARI-2070. Changing service directories should popup a confirmation/warning dialog upon save. (yusaku)

Modified:
    incubator/ambari/trunk/CHANGES.txt
    incubator/ambari/trunk/ambari-web/app/controllers/main/host/details.js
    incubator/ambari/trunk/ambari-web/app/controllers/main/service/info/configs.js
    incubator/ambari/trunk/ambari-web/app/controllers/main/service/item.js
    incubator/ambari/trunk/ambari-web/app/data/config_properties.js
    incubator/ambari/trunk/ambari-web/app/messages.js
    incubator/ambari/trunk/ambari-web/app/utils/host_progress_popup.js
    incubator/ambari/trunk/ambari-web/app/views/common/modal_popup.js

Modified: incubator/ambari/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/CHANGES.txt?rev=1478605&r1=1478604&r2=1478605&view=diff
==============================================================================
--- incubator/ambari/trunk/CHANGES.txt (original)
+++ incubator/ambari/trunk/CHANGES.txt Thu May  2 23:22:11 2013
@@ -283,6 +283,9 @@ Trunk (unreleased changes):
 
  IMPROVEMENTS
 
+ AMBARI-2070. Changing service directories should popup a confirmation/warning
+ dialog upon save. (yusaku)
+
  AMBARI-2061. HBase Heatmaps: clean up labels and units. (yusaku)
 
  AMBARI-2042. Update Ambari logo. (yusaku)

Modified: incubator/ambari/trunk/ambari-web/app/controllers/main/host/details.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/controllers/main/host/details.js?rev=1478605&r1=1478604&r2=1478605&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/controllers/main/host/details.js (original)
+++ incubator/ambari/trunk/ambari-web/app/controllers/main/host/details.js Thu May  2 23:22:11 2013
@@ -95,7 +95,7 @@ App.MainHostDetailsController = Em.Contr
 
       self.sendCommandToServer('/hosts/' + self.get('content.hostName') + '/host_components/' + component.get('componentName').toUpperCase(),{
         RequestInfo : {
-          "context" : Em.I18n.t('requestInfo.startHostComponent') + " " + component.get('componentName').toUpperCase()
+          "context" : Em.I18n.t('requestInfo.startHostComponent') + " " + component.get('displayName')
         },
         Body:{
           HostRoles:{
@@ -136,7 +136,7 @@ App.MainHostDetailsController = Em.Contr
     App.showConfirmationPopup(function() {
       self.sendCommandToServer('/hosts/' + self.get('content.hostName') + '/host_components/' + component.get('componentName').toUpperCase(),{
             RequestInfo : {
-              "context" : Em.I18n.t('requestInfo.upgradeHostComponent') + " " + component.get('componentName').toUpperCase()
+              "context" : Em.I18n.t('requestInfo.upgradeHostComponent') + " " + component.get('displayName')
             },
             Body:{
               HostRoles:{
@@ -176,7 +176,7 @@ App.MainHostDetailsController = Em.Contr
       var component = event.context;
       self.sendCommandToServer('/hosts/' + self.get('content.hostName') + '/host_components/' + component.get('componentName').toUpperCase(),{
         RequestInfo : {
-          "context" : Em.I18n.t('requestInfo.stopHostComponent')+ " " + component.get('componentName').toUpperCase()
+          "context" : Em.I18n.t('requestInfo.stopHostComponent')+ " " + component.get('displayName')
         },
         Body:{
           HostRoles:{
@@ -215,6 +215,7 @@ App.MainHostDetailsController = Em.Contr
     var self = this;
     var component = event.context;
     var componentName = component.get('componentName').toUpperCase().toString();
+    var displayName = component.get('displayName');
 
     App.ModalPopup.show({
       primary: Em.I18n.t('yes'),
@@ -230,7 +231,7 @@ App.MainHostDetailsController = Em.Contr
         this.hide();
         self.sendCommandToServer('/hosts?Hosts/host_name=' + self.get('content.hostName'), {
             RequestInfo: {
-              "context": Em.I18n.t('requestInfo.installHostComponent') + " " + componentName
+              "context": Em.I18n.t('requestInfo.installHostComponent') + " " + displayName
             },
             Body: {
               host_components: [
@@ -249,7 +250,7 @@ App.MainHostDetailsController = Em.Contr
 
             self.sendCommandToServer('/host_components?HostRoles/host_name=' + self.get('content.hostName') + '\&HostRoles/component_name=' + componentName + '\&HostRoles/state=INIT', {
                 RequestInfo: {
-                  "context": Em.I18n.t('requestInfo.installNewHostComponent') + " " + componentName
+                  "context": Em.I18n.t('requestInfo.installNewHostComponent') + " " + displayName
                 },
                 Body: {
                   HostRoles: {
@@ -291,6 +292,7 @@ App.MainHostDetailsController = Em.Contr
     var self = this;
     var component = event.context;
     var componentName = component.get('componentName').toUpperCase().toString();
+    var displayName = component.get('displayName');
 
     App.ModalPopup.show({
       primary: Em.I18n.t('yes'),
@@ -306,7 +308,7 @@ App.MainHostDetailsController = Em.Contr
         this.hide();
         self.sendCommandToServer('/hosts/' + self.get('content.hostName') + '/host_components/' + component.get('componentName').toUpperCase(), {
             RequestInfo: {
-              "context": Em.I18n.t('requestInfo.installHostComponent') + " " + componentName
+              "context": Em.I18n.t('requestInfo.installHostComponent') + " " + displayName
             },
             Body: {
               HostRoles: {

Modified: incubator/ambari/trunk/ambari-web/app/controllers/main/service/info/configs.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/controllers/main/service/info/configs.js?rev=1478605&r1=1478604&r2=1478605&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/controllers/main/service/info/configs.js (original)
+++ incubator/ambari/trunk/ambari-web/app/controllers/main/service/info/configs.js Thu May  2 23:22:11 2013
@@ -634,116 +634,161 @@ App.MainServiceInfoConfigsController = E
     }
     var header;
     var message;
+    var messageClass;
     var value;
     var flag = false;
     var runningHosts = null;
     var runningComponentCount = 0;
+
+    var dfd = $.Deferred();
+    var self = this;
+    var serviceName = this.get('content.serviceName');
+    var displayName = this.get('content.displayName');
+
     if (App.supports.hostOverrides || 
-        (this.get('content.serviceName') !== 'HDFS' && this.get('content.isStopped') === true) || 
-        ((this.get('content.serviceName') === 'HDFS') && this.get('content.isStopped') === true && (!App.Service.find().someProperty('id', 'MAPREDUCE') || App.Service.find('MAPREDUCE').get('isStopped')))) {
-      var result = this.saveServiceConfigProperties();
-      App.router.get('clusterController').updateClusterData();
-      flag = result.flag;
-      if (result.flag === true) {
-        header = App.supports.hostOverrides ? Em.I18n.t('services.service.config.restartService') : Em.I18n.t('services.service.config.startService');
-        message = Em.I18n.t('services.service.config.saveConfig');
+        (serviceName !== 'HDFS' && this.get('content.isStopped') === true) ||
+        ((serviceName === 'HDFS') && this.get('content.isStopped') === true && (!App.Service.find().someProperty('id', 'MAPREDUCE') || App.Service.find('MAPREDUCE').get('isStopped')))) {
+
+      var dirChanged = false;
+
+      if (serviceName === 'HDFS') {
+        var hdfsConfigs = self.get('stepConfigs').findProperty('serviceName', 'HDFS').get('configs');
+        if (
+          hdfsConfigs.findProperty('name', 'dfs_name_dir').get('isNotDefaultValue') ||
+          hdfsConfigs.findProperty('name', 'fs_checkpoint_dir').get('isNotDefaultValue') ||
+          hdfsConfigs.findProperty('name', 'dfs_data_dir').get('isNotDefaultValue')
+        ) {
+          dirChanged = true;
+        }
+      } else if (serviceName === 'MAPREDUCE') {
+        var mapredConfigs = self.get('stepConfigs').findProperty('serviceName', 'MAPREDUCE').get('configs');
+        if (
+          mapredConfigs.findProperty('name', 'mapred_local_dir').get('isNotDefaultValue') ||
+          mapredConfigs.findProperty('name', 'mapred_system_dir').get('isNotDefaultValue')
+        ) {
+          dirChanged = true;
+        }
+      }
+
+      if (dirChanged) {
+        App.showConfirmationPopup(function() {
+          dfd.resolve();
+        }, Em.I18n.t('services.service.config.confirmDirectoryChange').format(displayName));
       } else {
-        header = Em.I18n.t('common.failure');
-        message = result.message;
-        value = result.value;
+        dfd.resolve();
       }
+
+      dfd.done(function() {
+        var result = self.saveServiceConfigProperties();
+        App.router.get('clusterController').updateClusterData();
+        flag = result.flag;
+        if (result.flag === true) {
+          header = Em.I18n.t('services.service.config.saved');
+          message = Em.I18n.t('services.service.config.saved.message');
+          messageClass = 'alert alert-success';
+        } else {
+          header = Em.I18n.t('common.failure');
+          message = result.message;
+          messageClass = 'alert alert-error';
+          value = result.value;
+        }
+      });
     } else {
       var rhc;
       if (this.get('content.serviceName') !== 'HDFS' || (this.get('content.serviceName') === 'HDFS' && !App.Service.find().someProperty('id', 'MAPREDUCE'))) {
         rhc = this.getRunningHostComponents([this.get('content')]);
-        header = Em.I18n.t('services.service.config.stopService');
+        header = Em.I18n.t('services.service.config.notSaved');
         message = Em.I18n.t('services.service.config.msgServiceStop');
       } else {
         rhc = this.getRunningHostComponents([this.get('content'), App.Service.find('MAPREDUCE')]);
-        header = Em.I18n.t('services.service.config.stopService');
+        header = Em.I18n.t('services.service.config.notSaved');
         message = Em.I18n.t('services.service.config.msgHDFSMapRServiceStop');
       }
+      messageClass = 'alert alert-error';
       runningHosts = rhc.runningHosts;
       runningComponentCount = rhc.runningComponentCount;
+      dfd.resolve();
     }
-    
-    var self = this;
-    App.ModalPopup.show({
-      header: header,
-      primary: Em.I18n.t('ok'),
-      secondary: null,
-      onPrimary: function () {
-        this.hide();
-        if (flag) {
-          self.loadStep();
-        }
-      },
-      bodyClass: Ember.View.extend({
-        flag: flag,
-        message: message,
-        runningHosts: runningHosts,
-        runningComponentCount: runningComponentCount,
-        siteProperties: value,
-        getDisplayMessage: function () {
-          var displayMsg = [];
-          var siteProperties = this.get('siteProperties');
-          if (siteProperties) {
-            siteProperties.forEach(function (_siteProperty) {
-              var displayProperty = _siteProperty.siteProperty;
-              var displayNames = _siteProperty.displayNames;
-              /////////
-              if (displayNames && displayNames.length) {
-                if (displayNames.length === 1) {
-                  displayMsg.push(displayProperty + Em.I18n.t('as') + displayNames[0]);
-                } else {
-                  var name;
-                  displayNames.forEach(function (_name, index) {
-                    if (index === 0) {
-                      name = _name;
-                    } else if (index === siteProperties.length - 1) {
-                      name = name + Em.I18n.t('and') + _name;
-                    } else {
-                      name = name + ', ' + _name;
-                    }
-                  }, this);
-                  displayMsg.push(displayProperty + Em.I18n.t('as') + name);
 
-                }
-              } else {
-                displayMsg.push(displayProperty);
-              }
-            }, this);
+    dfd.done(function () {
+      App.ModalPopup.show({
+        header: header,
+        primary: Em.I18n.t('ok'),
+        secondary: null,
+        onPrimary: function () {
+          this.hide();
+          if (flag) {
+            self.loadStep();
           }
-          return displayMsg;
+        },
+        bodyClass: Ember.View.extend({
+          flag: flag,
+          message: message,
+          messageClass: messageClass,
+          runningHosts: runningHosts,
+          runningComponentCount: runningComponentCount,
+          siteProperties: value,
+          getDisplayMessage: function () {
+            var displayMsg = [];
+            var siteProperties = this.get('siteProperties');
+            if (siteProperties) {
+              siteProperties.forEach(function (_siteProperty) {
+                var displayProperty = _siteProperty.siteProperty;
+                var displayNames = _siteProperty.displayNames;
+                /////////
+                if (displayNames && displayNames.length) {
+                  if (displayNames.length === 1) {
+                    displayMsg.push(displayProperty + Em.I18n.t('as') + displayNames[0]);
+                  } else {
+                    var name;
+                    displayNames.forEach(function (_name, index) {
+                      if (index === 0) {
+                        name = _name;
+                      } else if (index === siteProperties.length - 1) {
+                        name = name + Em.I18n.t('and') + _name;
+                      } else {
+                        name = name + ', ' + _name;
+                      }
+                    }, this);
+                    displayMsg.push(displayProperty + Em.I18n.t('as') + name);
+
+                  }
+                } else {
+                  displayMsg.push(displayProperty);
+                }
+              }, this);
+            }
+            return displayMsg;
 
-        }.property('siteProperties'),
-        getRunningHostsMessage: function () {
-          return Em.I18n.t('services.service.config.stopService.runningHostComponents').format(this.get('runningComponentCount'), this.get('runningHosts.length'));
-        }.property('runningComponentCount', 'runningHosts.length'), 
-        template: Ember.Handlebars.compile([
-          '<h5>{{view.message}}</h5>',
-          '{{#unless view.flag}}',
-          ' <br/>',
-          ' <div class="pre-scrollable" style="max-height: 250px;">',
-          '   <ul>',
-          '   {{#each val in view.getDisplayMessage}}',
-          '     <li>',
-          '       {{val}}',
-          '     </li>',
-          '   {{/each}}',
-          '   </ul>',
-          ' </div>',
-          '{{/unless}}',
-          '{{#if view.runningHosts}}',
-          ' <i class="icon-warning-sign"></i>  {{view.getRunningHostsMessage}}',
-          ' <table class="table-striped running-host-components-table">',
-          '   <tr><th>{{t common.host}}</th><th>{{t common.components}}</th></tr>',
-          '   {{#each host in view.runningHosts}}',
-          '     <tr><td>{{host.name}}</td><td>{{host.components}}</td></tr>',
-          '   {{/each}}',
-          ' </table>',
-          '{{/if}}'
-        ].join('\n'))
+          }.property('siteProperties'),
+          getRunningHostsMessage: function () {
+            return Em.I18n.t('services.service.config.stopService.runningHostComponents').format(this.get('runningComponentCount'), this.get('runningHosts.length'));
+          }.property('runningComponentCount', 'runningHosts.length'),
+          template: Ember.Handlebars.compile([
+            '<div class="{{unbound view.messageClass}}" style="margin-bottom:0">{{view.message}}</div>',
+            '{{#unless view.flag}}',
+            ' <br/>',
+            ' <div class="pre-scrollable" style="max-height: 250px;">',
+            '   <ul>',
+            '   {{#each val in view.getDisplayMessage}}',
+            '     <li>',
+            '       {{val}}',
+            '     </li>',
+            '   {{/each}}',
+            '   </ul>',
+            ' </div>',
+            '{{/unless}}',
+            '{{#if view.runningHosts}}',
+            ' <i class="icon-warning-sign"></i>  {{view.getRunningHostsMessage}}',
+            ' <table class="table-striped running-host-components-table">',
+            '   <tr><th>{{t common.host}}</th><th>{{t common.components}}</th></tr>',
+            '   {{#each host in view.runningHosts}}',
+            '     <tr><td>{{host.name}}</td><td>{{host.components}}</td></tr>',
+            '   {{/each}}',
+            ' </table>',
+            '{{/if}}'
+          ].join('\n'))
+        })
       })
     });
   },

Modified: incubator/ambari/trunk/ambari-web/app/controllers/main/service/item.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/controllers/main/service/item.js?rev=1478605&r1=1478604&r2=1478605&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/controllers/main/service/item.js (original)
+++ incubator/ambari/trunk/ambari-web/app/controllers/main/service/item.js Thu May  2 23:22:11 2013
@@ -95,9 +95,9 @@ App.MainServiceItemController = Em.Contr
   startStopPopupPrimary: function(serviceHealth) {
     var requestInfo = "";
     if(serviceHealth == "STARTED"){
-      requestInfo = 'Start service ' + this.get('content.serviceName').toUpperCase() ;
+      requestInfo = 'Start ' + this.get('content.displayName');
     }else{
-      requestInfo = 'Stop service ' + this.get('content.serviceName').toUpperCase() ;
+      requestInfo = 'Stop ' + this.get('content.displayName');
     }
 
     App.ajax.send({

Modified: incubator/ambari/trunk/ambari-web/app/data/config_properties.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/data/config_properties.js?rev=1478605&r1=1478604&r2=1478605&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/data/config_properties.js (original)
+++ incubator/ambari/trunk/ambari-web/app/data/config_properties.js Thu May  2 23:22:11 2013
@@ -576,7 +576,7 @@ module.exports =
       "defaultValue": "",
       "defaultDirectory": "/hadoop/mapred",
       "displayType": "directories",
-      "isReconfigurable": false,
+      "isReconfigurable": true,
       "isVisible": true,
       "domain": "tasktracker-global",
       "serviceName": "MAPREDUCE",
@@ -812,9 +812,8 @@ module.exports =
       "description": "",
       "defaultValue": "/mapred/system",
       "displayType": "directories",
-      "isReconfigurable": false,
+      "isReconfigurable": true,
       "isVisible": true,
-      "isRequired": false,
       "domain": "global",
       "serviceName": "MAPREDUCE",
       "category": "Advanced"

Modified: incubator/ambari/trunk/ambari-web/app/messages.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/messages.js?rev=1478605&r1=1478604&r2=1478605&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/messages.js (original)
+++ incubator/ambari/trunk/ambari-web/app/messages.js Thu May  2 23:22:11 2013
@@ -135,20 +135,20 @@ Em.I18n.translations = {
   'requestInfo.startServices':'Start Services',
   'requestInfo.stopAllServices':'Stop All Services',
   'requestInfo.startAllServices':'Start All Services',
-  'requestInfo.startHostComponent':'Start Component',
+  'requestInfo.startHostComponent':'Start',
   'requestInfo.startHostComponents':'Start Components',
-  'requestInfo.upgradeHostComponent':'Upgrade Component',
-  'requestInfo.stopHostComponent':'Stop Component',
-  'requestInfo.installHostComponent':'Install Component',
-  'requestInfo.installNewHostComponent':'Install New Component',
-  'requestInfo.stopService':'Stop Service',
-  'requestInfo.startService':'Start Service',
+  'requestInfo.upgradeHostComponent':'Upgrade',
+  'requestInfo.stopHostComponent':'Stop',
+  'requestInfo.installHostComponent':'Install',
+  'requestInfo.installNewHostComponent':'Install',
+  'requestInfo.stopService':'Stop',
+  'requestInfo.startService':'Start',
 
   'hostPopup.noServicesToShow':'No services to show',
   'hostPopup.noHostsToShow':'No hosts to show',
   'hostPopup.noTasksToShow':'No tasks to show',
 
-  'question.sure':'Are you sure {0}?',
+  'question.sure':'Are you sure?',
 
   'popup.highlight':'click to highlight',
   'popup.confirmation.commonHeader':'Confirmation',
@@ -283,7 +283,7 @@ Em.I18n.translations = {
     'Please confirm the host list and remove any hosts that you do not want to include in the cluster.',
   'installer.step3.hostLog.popup.header':'Registration log for {0}',
   'installer.step3.hosts.remove.popup.header':'Remove Hosts',
-  'installer.step3.hosts.remove.popup.body':' you want to remove the selected host(s)',
+  'installer.step3.hosts.remove.popup.body':'Are you sure you want to remove the selected host(s)?',
   'installer.step3.hostInformation.popup.header':'Error in retrieving host Information',
   'installer.step3.hostInformation.popup.body' : 'All bootstrapped hosts registered but unable to retrieve cpu and memory related information',
   'installer.step3.hostWarningsPopup.details':'Show Details',
@@ -734,19 +734,19 @@ Em.I18n.translations = {
   'services.service.info.summary.nagios.noAlerts':'No alerts',
   'services.service.info.summary.nagios.alerts':'Nagios service required for viewing alerts',
 
-  'services.service.config.startService':'Start Service',
-  'services.service.config.restartService':'Restart Service',
+  'services.service.config.saved':'Saved Configurations Changes',
+  'services.service.config.notSaved':'Unable to Save Configuration Changes',
   'services.service.config.restartService.TooltipMessage':'<b>Restart Service</b><br>Stale configuration used by {0} components on {1} hosts:{2}',
-  'services.service.config.saveConfig':'Service configuration applied successfully',
-  'services.service.config.stopService':'Stop Service',
-  'services.service.config.msgServiceStop':'Stop the service and wait till it stops completely. Thereafter you can apply configuration changes',
-  'services.service.config.msgHDFSMapRServiceStop':'Stop HDFS and MapReduce. Wait till both of them stops completely. Thereafter you can apply configuration changes',
+  'services.service.config.saved.message':'Service configuration saved successfully.',
+  'services.service.config.msgServiceStop':'Could not save configuration changes.  Please stop the service first. You will be able to save configuration changes after all of its components are stopped.',
+  'services.service.config.msgHDFSMapRServiceStop':'Could not save configuration changes.  Please stop both HDFS and MapReduce first.  You will be able to save configuration changes after all HDFS and MapReduce components are stopped.',
   'services.service.config.failCreateConfig' : 'Failure in creating service configuration',
-  'services.service.config.failSaveConfig':'Failure in applying service configuration',
-  'services.service.config.failSaveConfigHostExceptions':'Failure in applying service configuration host exceptions',
+  'services.service.config.failSaveConfig':'Failure in saving service configuration',
+  'services.service.config.failSaveConfigHostExceptions':'Failure in saving service configuration host exceptions',
   'services.service.config.addPropertyWindow.errorMessage':'This is required',
-  'services.service.config.addPropertyWindow.error.derivedKey':'Cannot add a known derived property',
+  'services.service.config.addPropertyWindow.error.derivedKey':'This property is already defined',
   'services.service.config.stopService.runningHostComponents':'{0} components on {1} hosts are still running',
+  'services.service.config.confirmDirectoryChange':'You are about to make changes to service directories that are core to {0}. Before you proceed, be absolutely certain of the implications and that you have taken necessary manual steps, if any, for the changes. Are you sure you want to proceed?',
 
   'services.add.header':'Add Service Wizard',
   'services.reassign.header':'Reassign Master Wizard',

Modified: incubator/ambari/trunk/ambari-web/app/utils/host_progress_popup.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/utils/host_progress_popup.js?rev=1478605&r1=1478604&r2=1478605&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/utils/host_progress_popup.js (original)
+++ incubator/ambari/trunk/ambari-web/app/utils/host_progress_popup.js Thu May  2 23:22:11 2013
@@ -117,7 +117,7 @@ App.HostPopup = Em.Object.create({
     numRunning = allServices.filterProperty("status", App.format.taskStatus("IN_PROGRESS")).length;
     numRunning += allServices.filterProperty("status", App.format.taskStatus("QUEUED")).length;
     numRunning += allServices.filterProperty("status", App.format.taskStatus("PENDING")).length;
-    this.set("popupHeaderName", numRunning + " Background operations Running");
+    this.set("popupHeaderName", numRunning + " Background Operations Running");
   },
 
   /**

Modified: incubator/ambari/trunk/ambari-web/app/views/common/modal_popup.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/views/common/modal_popup.js?rev=1478605&r1=1478604&r2=1478605&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/views/common/modal_popup.js (original)
+++ incubator/ambari/trunk/ambari-web/app/views/common/modal_popup.js Thu May  2 23:22:11 2013
@@ -129,7 +129,7 @@ App.showReloadPopup = function(){
  * @param {String} body - additional text constant. Will be placed in the popup-body
  * @return {*}
  */
-App.showConfirmationPopup = function(primary, body) {
+App.showConfirmationPopup = function(primary, body, template) {
   if (!primary) {
     return false;
   }
@@ -137,7 +137,7 @@ App.showConfirmationPopup = function(pri
     primary: Em.I18n.t('yes'),
     secondary: Em.I18n.t('no'),
     header: Em.I18n.t('popup.confirmation.commonHeader'),
-    body: Em.I18n.t('question.sure').format(body || ''),
+    body: body || 'Are you sure?',
     onPrimary: function() {
       this.hide();
       primary();