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/03/08 00:32:49 UTC

svn commit: r1454167 - in /incubator/ambari/trunk: ./ ambari-web/app/ ambari-web/app/controllers/main/admin/ ambari-web/app/controllers/wizard/stack_upgrade/ ambari-web/app/routes/ ambari-web/app/templates/wizard/stack_upgrade/ ambari-web/app/views/wiz...

Author: yusaku
Date: Thu Mar  7 23:32:49 2013
New Revision: 1454167

URL: http://svn.apache.org/r1454167
Log:
AMBARI-1580. Stack Upgrade Wizard - resume upon page refresh / login. (yusaku)

Modified:
    incubator/ambari/trunk/CHANGES.txt
    incubator/ambari/trunk/ambari-web/app/controllers/main/admin/stack_upgrade_controller.js
    incubator/ambari/trunk/ambari-web/app/controllers/wizard/stack_upgrade/step2_controller.js
    incubator/ambari/trunk/ambari-web/app/controllers/wizard/stack_upgrade/step3_controller.js
    incubator/ambari/trunk/ambari-web/app/messages.js
    incubator/ambari/trunk/ambari-web/app/router.js
    incubator/ambari/trunk/ambari-web/app/routes/stack_upgrade.js
    incubator/ambari/trunk/ambari-web/app/templates/wizard/stack_upgrade/step3.hbs
    incubator/ambari/trunk/ambari-web/app/views/wizard/stack_upgrade/step3_view.js

Modified: incubator/ambari/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/CHANGES.txt?rev=1454167&r1=1454166&r2=1454167&view=diff
==============================================================================
--- incubator/ambari/trunk/CHANGES.txt (original)
+++ incubator/ambari/trunk/CHANGES.txt Thu Mar  7 23:32:49 2013
@@ -105,6 +105,9 @@ Trunk (unreleased changes):
 
  IMPROVEMENTS
 
+ AMBARI-1580. Stack Upgrade Wizard - resume upon page refresh / login.
+ (yusaku)
+
  AMBARI-1578. Add host wizard - support assignment of "ZooKeeper Server"
  and "HBase Master". (yusaku)
 

Modified: incubator/ambari/trunk/ambari-web/app/controllers/main/admin/stack_upgrade_controller.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/controllers/main/admin/stack_upgrade_controller.js?rev=1454167&r1=1454166&r2=1454167&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/controllers/main/admin/stack_upgrade_controller.js (original)
+++ incubator/ambari/trunk/ambari-web/app/controllers/main/admin/stack_upgrade_controller.js Thu Mar  7 23:32:49 2013
@@ -48,7 +48,7 @@ App.StackUpgradeController = App.WizardC
    * @return Object
    */
   getCluster: function(){
-    return jQuery.extend({}, this.get('clusterStatusTemplate'), {name: App.get('ClusterName')});
+    return jQuery.extend({}, this.get('clusterStatusTemplate'), {name: App.router.getClusterName()});
   },
   /**
    * return new object extended from upgradeOptionsTemplate
@@ -67,25 +67,30 @@ App.StackUpgradeController = App.WizardC
   upgradeOptionsTemplate:{
     localRepo: false
   },
-  stopServices: function(){
-    var method = App.testMode ? "GET" : "PUT";
-    var url = '';
-    var data = '';
+  /**
+   * run stop services before upgrade phase
+   */
+  stopServices: function () {
+    var clusterName = this.get('content.cluster.name');
+    var url = App.apiPrefix + '/clusters/' + clusterName + '/services?ServiceInfo/state=STARTED';
+    var data = '{"ServiceInfo": {"state": "INSTALLED"}}';
+    var method = (App.testMode) ? 'GET' : 'PUT';
     $.ajax({
       type: method,
       url: url,
-      data: data,
       async: false,
+      data: data,
       dataType: 'text',
       timeout: App.timeout,
       success: function (data) {
-
+        var jsonData = jQuery.parseJSON(data);
+        console.log("TRACE: Step3 -> In success function for the stopService call");
+        console.log("TRACE: Step3 -> value of the url is: " + url);
+        console.log("TRACE: Step3 -> value of the received data is: " + jsonData);
       },
-
-      error: function (request, ajaxOptions, error) {
-
+      error: function () {
+        console.log("Call to stop services failed");
       },
-
       statusCode: require('data/statusCodes')
     });
   },
@@ -113,6 +118,5 @@ App.StackUpgradeController = App.WizardC
   finish: function () {
     this.clear();
     this.setCurrentStep('1');
-    App.router.get('updateController').updateAll();
   }
 });

Modified: incubator/ambari/trunk/ambari-web/app/controllers/wizard/stack_upgrade/step2_controller.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/controllers/wizard/stack_upgrade/step2_controller.js?rev=1454167&r1=1454166&r2=1454167&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/controllers/wizard/stack_upgrade/step2_controller.js (original)
+++ incubator/ambari/trunk/ambari-web/app/controllers/wizard/stack_upgrade/step2_controller.js Thu Mar  7 23:32:49 2013
@@ -34,7 +34,6 @@ App.StackUpgradeStep2Controller = Em.Con
    */
   upgradeAction: function(event){
     if(this.isAllServicesRunning()){
-      App.db.setUpgradeOptions(this.get('content.upgradeOptions'));
       App.router.send('next');
     } else {
       this.showWarningPopup();

Modified: incubator/ambari/trunk/ambari-web/app/controllers/wizard/stack_upgrade/step3_controller.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/controllers/wizard/stack_upgrade/step3_controller.js?rev=1454167&r1=1454166&r2=1454167&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/controllers/wizard/stack_upgrade/step3_controller.js (original)
+++ incubator/ambari/trunk/ambari-web/app/controllers/wizard/stack_upgrade/step3_controller.js Thu Mar  7 23:32:49 2013
@@ -41,15 +41,18 @@ App.StackUpgradeStep3Controller = Em.Con
    * overall status of Upgrade
    * FAILED - some service is FAILED
    * SUCCESS - every services are SUCCESS
-   * WARNING - some service is WARNING
+   * WARNING - some service is WARNING and all the rest are SUCCESS
+   * IN_PROGRESS - when all services is stopped
    */
-  status: function () {
-    //TODO set saveClusterStatus()
+  status: 'PENDING',
+  onStatus: function () {
     var services = this.get('services');
+    var status = this.get('isServicesStopped') ? 'IN_PROGRESS' : 'PENDING';
     var withoutWarning = [];
     if (services.someProperty('status', 'FAILED')) {
       this.set('isPolling', false);
-      return 'FAILED';
+      status =  'FAILED';
+      this.setClusterStatus('STACK_UPGRADE_FAILED');
     }
     if (services.someProperty('status', 'WARNING')) {
       withoutWarning = services.filter(function(service){
@@ -59,15 +62,31 @@ App.StackUpgradeStep3Controller = Em.Con
       });
       if(withoutWarning.everyProperty('status', 'SUCCESS')){
         this.set('isPolling', false);
-        return "WARNING";
+        status = "WARNING";
+        this.setClusterStatus('STACK_UPGRADED');
       }
     }
     if (services.everyProperty('status', 'SUCCESS')) {
       this.set('isPolling', false);
-      return 'SUCCESS';
+      status = 'SUCCESS';
+      this.set('content.cluster.isCompleted', true);
+      App.router.get(this.get('content.controllerName')).save('cluster');
+      this.setClusterStatus('STACK_UPGRADED');
+    }
+    this.set('status', status);
+  }.observes('services.@each.status'),
+  setClusterStatus: function(state){
+    if(!App.testMode){
+      App.clusterStatus.setClusterStatus({
+        clusterName: this.get('content.cluster.name'),
+        clusterState: state,
+        wizardControllerName: 'stackUpgradeController',
+        localdb: App.db.data
+      });
     }
-    return 'IN_PROGRESS';
-  }.property('services.@each.status'),
+  },
+  // provide binding for Host Popup data
+  serviceTimestamp: null,
   /**
    * The dependence of the status of service to status of the tasks
    * FAILED - any task is TIMEDOUT, ABORTED, FAILED (depends on component is master)
@@ -78,7 +97,7 @@ App.StackUpgradeStep3Controller = Em.Con
    */
   services: [],
   /**
-   * load installed services on cluster
+   * load services, which installed on cluster
    */
   loadServices: function(){
     var installedServices = App.testMode ? this.get('mockServices') : this.get('content.servicesInfo');
@@ -126,16 +145,17 @@ App.StackUpgradeStep3Controller = Em.Con
    */
   loadHosts: function(service){
     var hostComponents = App.HostComponent.find().filterProperty('service.serviceName', service.get('serviceName'));
-    var hostNames = hostComponents.mapProperty('host.hostName').uniq();
-    var hosts = [];
-    hostNames.forEach(function(hostName){
-      hosts.push(Em.Object.create({
-        name: hostName,
+    var hosts = hostComponents.mapProperty('host').uniq();
+    var result = [];
+    hosts.forEach(function(host){
+      result.push(Em.Object.create({
+        name: host.get('hostName'),
+        publicName: host.get('publicHostName'),
         logTasks: [],
-        components: hostComponents.filterProperty('host.hostName', hostName).mapProperty('componentName')
+        components: hostComponents.filterProperty('host.hostName', host.get('hostName')).mapProperty('componentName')
       }));
     });
-    return hosts;
+    return result;
   },
   /**
    * upgrade status SUCCESS - submit button enabled with label "Done"
@@ -157,15 +177,33 @@ App.StackUpgradeStep3Controller = Em.Con
   isServicesStopped: function(){
     return this.get('servicesStopProgress') === 100;
   }.property('servicesStopProgress'),
+  isServicesStopFailed: function(){
+    return this.get('servicesStopProgress') === false;
+  }.property('servicesStopProgress'),
   installedServices: App.Service.find(),
   /**
    * progress of stopping services process
+   * check whether service stop fails
    */
   servicesStopProgress: function(){
     var services = App.testMode ? this.get('mockServices') : this.get('installedServices').toArray();
-    var progress = (services.filterProperty('workStatus', 'STOPPING').length / services.length) * 0.2;
-    return Math.round((progress + services.filterProperty('workStatus', 'INSTALLED').length / services.length) * 100);
+    var progress = 0;
+    var stopFailed = false;
+    services.forEach(function(service){
+      if(!stopFailed){
+        stopFailed = service.get('hostComponents').filterProperty('isMaster').someProperty('workStatus', 'STOP_FAILED');
+      }
+    });
+    if(stopFailed){
+      return false;
+    } else {
+      progress = (services.filterProperty('workStatus', 'STOPPING').length / services.length) * 0.2;
+      return Math.round((progress + services.filterProperty('workStatus', 'INSTALLED').length / services.length) * 100);
+    }
   }.property('installedServices.@each.workStatus', 'mockServices.@each.workStatus'),
+  retryStopService: function(){
+    App.router.get(this.get('content.controllerName')).stopServices();
+  },
   /**
    * restart upgrade if fail or warning occurred
    * @param event
@@ -235,12 +273,14 @@ App.StackUpgradeStep3Controller = Em.Con
     Em.Object.create({
       serviceName: 'GANGLIA',
       displayName: 'Ganglia',
-      workStatus: 'STARTED'
+      workStatus: 'STARTED',
+      hostComponents: []
     }),
     Em.Object.create({
       serviceName: 'HDFS',
       displayName: 'HDFS',
-      workStatus: 'STARTED'
+      workStatus: 'STARTED',
+      hostComponents: []
     })
   ],
   simulateAttempt:0,
@@ -301,10 +341,10 @@ App.StackUpgradeStep3Controller = Em.Con
           dataType: 'json',
           success: function (data) {
             var result = self.parseTasks(data);
-            if (!App.testMode) {
-              self.doPoll();
-            } else {
+            if (App.testMode) {
               self.simulatePolling();
+            } else {
+              self.doPoll(url);
             }
           },
           error: function () {
@@ -351,6 +391,7 @@ App.StackUpgradeStep3Controller = Em.Con
         console.log('None tasks matched to service ' + service);
       }
     }, this);
+    this.set('serviceTimestamp', new Date().getTime());
     return true;
   },
   /**
@@ -472,25 +513,40 @@ App.StackUpgradeStep3Controller = Em.Con
     this.set('simulateAttempt', 0);
   },
   /**
-   * run necessary operations depending on cluster status
+   * navigate to show current process depending on cluster status
    */
   navigateStep: function(){
-    if (App.testMode) {
-      this.set('content.cluster.status', 'PENDING');
-      this.set('content.cluster.isCompleted', false);
-    }
     var clusterStatus = this.get('content.cluster.status');
+    var status = 'PENDING';
     if (this.get('content.cluster.isCompleted') === false) {
-      if (this.get('isServicesStopped') === false) {
-        //services stopping yet
-
-      } else if (clusterStatus === 'UPGRADE_FAILED') {
-
-      } else {
+      if (this.get('isServicesStopped')){
         this.startPolling();
+        if (clusterStatus === 'STACK_UPGRADING'){
+          // IN_PROGRESS
+          status = 'IN_PROGRESS';
+        } else if (clusterStatus === 'STACK_UPGRADE_FAILED'){
+          // FAILED
+          status = 'FAILED';
+          // poll only one time
+          this.set('isPolling', false);
+        } else {
+          // WARNING
+          status = 'WARNING';
+          // poll only one time
+          this.set('isPolling', false);
+        }
+      } else {
+        // services are stopping yet
       }
     } else {
-
+      status = 'SUCCESS';
+    }
+    if (App.testMode) {
+      if(!this.get('isServicesStopped')){
+        this.simulateStopService();
+      }
+    } else {
+      this.set('status', status);
     }
   }
 });
\ No newline at end of file

Modified: incubator/ambari/trunk/ambari-web/app/messages.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/messages.js?rev=1454167&r1=1454166&r2=1454167&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/messages.js (original)
+++ incubator/ambari/trunk/ambari-web/app/messages.js Thu Mar  7 23:32:49 2013
@@ -438,6 +438,9 @@ Em.I18n.translations = {
   'installer.stackUpgrade.step3.service.failedUpgrade':'{0} failed to upgrade',
   'installer.stackUpgrade.step3.service.stopped':'All Services stopped',
   'installer.stackUpgrade.step3.service.stopping':'All Services stopping',
+  'installer.stackUpgrade.step3.service.stopFail':'All Services failed to stop',
+  'installer.stackUpgrade.step3.retry.upgrade':'Retry Upgrade',
+  'installer.stackUpgrade.step3.retry.services':'Retry stopping services',
 
   'form.create':'Create',
   'form.save':'Save',
@@ -749,6 +752,10 @@ Em.I18n.translations = {
   'hosts.host.healthStatusCategory.red': "Master Down",
   'hosts.host.healthStatusCategory.orange': "Slave Down",
   'hosts.host.healthStatusCategory.yellow': "No Heartbeat",
+  'hosts.decommission.popup.body':'Are you sure?',
+  'hosts.decommission.popup.header':'Confirmation',
+  'hosts.delete.popup.body':'Are you sure?',
+  'hosts.delete.popup.header':'Confirmation',
   'hosts.cant.do.popup.header':'Operation not allowed',
   'hosts.cant.do.popup.masterList.body':'You cannot delete this host because it is hosting following master services: {0}.',
   'hosts.cant.do.popup.workingList.body':'You cannot delete this host because following slave services are not fully stopped or decommissioned: {0}.',

Modified: incubator/ambari/trunk/ambari-web/app/router.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/router.js?rev=1454167&r1=1454166&r2=1454167&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/router.js (original)
+++ incubator/ambari/trunk/ambari-web/app/router.js Thu Mar  7 23:32:49 2013
@@ -258,7 +258,7 @@ App.Router = Em.Router.extend({
     }
     App.clusterStatus.updateFromServer();
     var clusterStatusOnServer = App.clusterStatus.get('value');
-    if (clusterStatusOnServer && (clusterStatusOnServer.clusterState === 'CLUSTER_STARTED_5' || clusterStatusOnServer.clusterState === 'ADD_HOSTS_COMPLETED_5' )) {
+    if (clusterStatusOnServer && (clusterStatusOnServer.clusterState === 'CLUSTER_STARTED_5' || clusterStatusOnServer.clusterState === 'ADD_HOSTS_COMPLETED_5' || clusterStatusOnServer.clusterState === 'STACK_UPGRADE_COMPLETED')) {
       return 'main.index';
     } else if (clusterStatusOnServer && clusterStatusOnServer.wizardControllerName === App.router.get('addHostController.name')) {
       // if wizardControllerName == "addHostController", then it means someone closed the browser or the browser was crashed when we were last in Add Hosts wizard

Modified: incubator/ambari/trunk/ambari-web/app/routes/stack_upgrade.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/routes/stack_upgrade.js?rev=1454167&r1=1454166&r2=1454167&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/routes/stack_upgrade.js (original)
+++ incubator/ambari/trunk/ambari-web/app/routes/stack_upgrade.js Thu Mar  7 23:32:49 2013
@@ -42,22 +42,6 @@ module.exports = Em.Route.extend({
         }
       });
 
-
-     /* App.clusterStatus.updateFromServer();
-       var currentClusterStatus = App.clusterStatus.get('value');
-
-       if (currentClusterStatus) {
-       switch (currentClusterStatus.clusterState) {
-       case 'UPGRADING_STACK' :
-       case 'STACK_UPGRADED' :
-       stackUpgradeController.setCurrentStep('3');
-       App.db.data = currentClusterStatus.localdb;
-       break;
-       default:
-       break;
-       }
-       }*/
-
       router.transitionTo('step' + stackUpgradeController.get('currentStep'));
     });
   },
@@ -87,12 +71,19 @@ module.exports = Em.Route.extend({
     next: function(router){
       var controller = router.get('stackUpgradeController');
       var stepController = router.get('stackUpgradeStep3Controller');
+      controller.save('upgradeOptions');
       router.transitionTo('step3');
       if(App.testMode){
         stepController.simulateStopService();
       } else {
         controller.stopServices();
       }
+      App.clusterStatus.setClusterStatus({
+        clusterName: controller.get('content.cluster.name'),
+        clusterState: 'PENDING',
+        wizardControllerName: 'stackUpgradeController',
+        localdb: App.db.data
+      });
     }
   }),
 
@@ -111,21 +102,20 @@ module.exports = Em.Route.extend({
       var stepController = router.get('stackUpgradeStep3Controller');
       stepController.clearStep();
       controller.finish();
-      App.router.get('updateController').set('isWorking', true);
       $(context.currentTarget).parents("#modal").find(".close").trigger('click');
-      //App.set('currentStackVersion', controller.get('content.upgradeVersion'));
-
-      // We need to do recovery based on whether we are in Add Host or Installer wizard
-     /* App.clusterStatus.setClusterStatus({
-        clusterName: this.get('clusterName'),
-        clusterState: 'STACK_UPGRADED',
-        wizardControllerName: App.router.get('stackUpgradeController.name'),
+      App.clusterStatus.setClusterStatus({
+        clusterName: controller.get('content.cluster.name'),
+        clusterState: 'STACK_UPGRADE_COMPLETED',
+        wizardControllerName: 'stackUpgradeController',
         localdb: App.db.data
-      });*/
-
+      });
+      App.router.get('updateController').updateAll();
+      //App.set('currentStackVersion', controller.get('content.upgradeVersion'));
     }
   }),
   backToCluster: function(router, context){
+    var controller = router.get('stackUpgradeController');
+    controller.finish();
     $(context.currentTarget).parents("#modal").find(".close").trigger('click');
   },
 

Modified: incubator/ambari/trunk/ambari-web/app/templates/wizard/stack_upgrade/step3.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/templates/wizard/stack_upgrade/step3.hbs?rev=1454167&r1=1454166&r2=1454167&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/templates/wizard/stack_upgrade/step3.hbs (original)
+++ incubator/ambari/trunk/ambari-web/app/templates/wizard/stack_upgrade/step3.hbs Thu Mar  7 23:32:49 2013
@@ -17,56 +17,66 @@
 }}
 <div id="deploy">
     <div {{bindAttr class="view.statusClass :alert"}}>{{view.statusMessage}}</div>
-  {{#if showRetry}}
-    <div class="box">
-        <a class="btn btn-primary"
-           href="#" {{action retry target="controller"}}><i class="icon-repeat icon-white"></i>
-          {{t common.retry}}
-        </a>
-    </div>
-  {{/if}}
     <div class="service">
-        {{#if isServicesStopped}}
-            <div class="item">
-                <i class="text-success icon-ok"></i>
-                <a href="javascript:void(0)">{{t installer.stackUpgrade.step3.service.stopped}}</a>
-            </div>
-        {{else}}
-            <div class="item">
+      <div>
+      {{#if isServicesStopFailed}}
+          <div class="box">
+              <a class="btn btn-primary"
+                {{action retryStopService target="controller" href="true"}}><i class="icon-repeat icon-white"></i>
+                {{t installer.stackUpgrade.step3.retry.services}}
+              </a>
+          </div>
+          <div class="item">
+              <i class="text-error icon-exclamation-sign"></i>
+              <a href="javascript:void(0)">{{t installer.stackUpgrade.step3.service.stopFail}}</a>
+          </div>
+      {{else}}
+          <div class="item">
+            {{#if isServicesStopped}}
+              <i class="text-success icon-ok"></i>
+              <a href="javascript:void(0)">{{t installer.stackUpgrade.step3.service.stopped}}</a>
+            {{else}}
                 <i class="text-info icon-cog"></i>
-                <a href="true">{{t installer.stackUpgrade.step3.service.stopping}}</a>
+                <a href="javascript:void(0)">{{t installer.stackUpgrade.step3.service.stopping}}</a>
+            {{/if}}
+          </div>
+          <div {{bindAttr class="isServicesStopped:hide :row :span12" }}>
+              <div class="progress-bar span4">
+                  <div {{bindAttr class="isServicesStopped::progress-striped isServicesStopped::active :progress-info :progress"}}>
+                      <div class="bar" {{bindAttr style="view.servicesStopWidth"}}></div>
+                  </div>
+              </div>
+              <div class="span1">{{servicesStopProgress}}&#37;</div>
+              <div class="span7"></div>
+          </div>
+      {{/if}}
+      {{#if showRetry}}
+          <div class="box">
+              <a class="btn btn-primary" {{action retry target="controller" href="true"}}>
+                <i class="icon-repeat icon-white"></i>
+                {{t installer.stackUpgrade.step3.retry.upgrade}}
+              </a>
+          </div>
+      {{/if}}
+      </div>
+      {{#each service in services}}
+        {{#view view.serviceView contentBinding="service"}}
+            <div class="item">
+                <i {{bindAttr class="view.icon view.iconColor"}}></i>
+                <a href="javascript:void(0)" {{action "hostsLogPopup" service.name target="view"}}>{{service.message}}</a>
             </div>
-            <div class="row span12">
+            <div {{bindAttr class="view.inProgress::hide :row :span12" }}>
                 <div class="progress-bar span4">
-                    <div {{bindAttr class="isServicesStopped::progress-striped isServicesStopped::active :progress-info :progress"}}>
-                        <div class="bar" {{bindAttr style="view.servicesStopWidth"}}></div>
+                    <div {{bindAttr class="view.isServiceCompleted::progress-striped view.isServiceCompleted::active view.barColor :progress"}}>
+                        <div class="bar" {{bindAttr style="view.barWidth"}}></div>
                     </div>
                 </div>
-                <div class="span1">{{servicesStopProgress}}&#37;</div>
-                <div class="span7"></div>
+                <div class="span1">{{service.progress}}&#37;</div>
+                <div class="span7">{{service.detailMessage}}</div>
             </div>
-        {{/if}}
-    {{#each service in services}}
-      {{#view view.serviceView contentBinding="service"}}
-      <div class="item">
-          <i {{bindAttr class="view.icon view.iconColor"}}></i>
-          <a href="true" {{action "hostsLogPopup" service.name view.bindingProperty target="view"}}>{{service.message}}</a>
-      </div>
-      {{#if view.inProgress}}
-      <div class="row span12">
-          <div class="progress-bar span4">
-              <div {{bindAttr class="view.isServiceCompleted::progress-striped view.isServiceCompleted::active view.barColor :progress"}}>
-                  <div class="bar" {{bindAttr style="view.barWidth"}}></div>
-              </div>
-          </div>
-          <div class="span1">{{service.progress}}&#37;</div>
-          <div class="span7">{{service.detailMessage}}</div>
-      </div>
-      {{/if}}
-      {{/view}}
-    {{/each}}
+        {{/view}}
+      {{/each}}
     </div>
-</div>
     <div class="btn-area">
       {{#if submitButton}}
           <a class="btn btn-success pull-right" {{action finish}}>{{submitButton}}</a>

Modified: incubator/ambari/trunk/ambari-web/app/views/wizard/stack_upgrade/step3_view.js
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/views/wizard/stack_upgrade/step3_view.js?rev=1454167&r1=1454166&r2=1454167&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-web/app/views/wizard/stack_upgrade/step3_view.js (original)
+++ incubator/ambari/trunk/ambari-web/app/views/wizard/stack_upgrade/step3_view.js Thu Mar  7 23:32:49 2013
@@ -97,7 +97,6 @@ App.StackUpgradeStep3View = Em.View.exte
     inProgress: function(){
       return this.get('content.status') === "IN_PROGRESS";
     }.property('content.status'),
-    bindingProperty: 'App.router.stackUpgradeStep3Controller.services',
     /**
      * open popup with list of hosts, that associated to service
      * @param event
@@ -105,7 +104,6 @@ App.StackUpgradeStep3View = Em.View.exte
     hostsLogPopup: function(event){
       //TODO show popup with hosts
       var serviceName = event.contexts[0];
-      var bindingProperty = event.contexts[1];
     }
   })
 });
\ No newline at end of file