Pārlūkot izejas kodu

AMBARI-1132. Stopping service doesn't cause blinking status until refresh. (Srimanth Gunturi via yusaku)

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/trunk@1431832 13f79535-47bb-0310-9956-ffa450edef68
Yusaku Sako 12 gadi atpakaļ
vecāks
revīzija
772c737ed7

+ 3 - 0
CHANGES.txt

@@ -675,6 +675,9 @@ AMBARI-666 branch (unreleased changes)
 
   BUG FIXES
 
+  AMBARI-1132. Stopping service doesn't cause blinking status until refresh.
+  (Srimanth Gunturi via yusaku)
+
   AMBARI-1143. tmpfs filesystem being added to the list in the dir used by
   Ambari. (Arun Kandregula via yusaku) 
 

+ 4 - 0
ambari-web/app/mappers/service_mapper.js

@@ -127,6 +127,7 @@ App.servicesMapper = App.QuickDataMapper.create({
     // page must be careful because, it will randomly
     // pick a host.
     work_status: 'host_components[0].HostRoles.state',
+    desired_status: 'host_components[0].HostRoles.desired_state',
     host_id: 'host_components[0].HostRoles.host_name'
   },
 
@@ -134,6 +135,7 @@ App.servicesMapper = App.QuickDataMapper.create({
   config3: {
     id: 'id',
     work_status: 'HostRoles.state',
+    desired_status: 'HostRoles.desired_state',
     component_name: 'HostRoles.component_name',
     host_id: 'HostRoles.host_name',
     service_id: 'component[0].ServiceComponentInfo.service_name'
@@ -207,6 +209,7 @@ App.servicesMapper = App.QuickDataMapper.create({
         if (component && component.get('isLoaded')) { // UPDATE
           if (componentJson.work_status) {
             component.set('workStatus', componentJson.work_status);
+            component.set('desiredStatus', componentJson.desired_status);
           }
           if (componentJson.host_id) {
             component.set('host', App.Host.find(componentJson.host_id));
@@ -235,6 +238,7 @@ App.servicesMapper = App.QuickDataMapper.create({
         if (component && component.get('isLoaded')) { // UPDATE
           if (hcJson.work_status) {
             component.set('workStatus', hcJson.work_status);
+            component.set('desiredStatus', hcJson.desired_status);
           }
           if (hcJson.component_name) {
             component.set('componentName', hcJson.component_name);

+ 6 - 2
ambari-web/app/mappers/status_mapper.js

@@ -24,12 +24,14 @@ App.statusMapper = App.QuickDataMapper.create({
 
   config2:{
     id:'ServiceComponentInfo.component_name',
-    work_status:'host_components[0].HostRoles.state'
+    work_status:'host_components[0].HostRoles.state',
+    desired_status: 'host_components[0].HostRoles.desired_state'
   },
 
   config3:{
     id:'id',
-    work_status:'HostRoles.state'
+    work_status:'HostRoles.state',
+    desired_status: 'HostRoles.desired_state'
   },
 
   map:function (json) {
@@ -71,6 +73,7 @@ App.statusMapper = App.QuickDataMapper.create({
         var component = components.findProperty('id', item.id);
         if(component){
           component.set('workStatus', item.work_status);
+          component.set('desiredStatus', item.desired_status);
         }
       })
 
@@ -89,6 +92,7 @@ App.statusMapper = App.QuickDataMapper.create({
         var hostComponent = hostComponents.findProperty('id', item.id);
         if(hostComponent){
           hostComponent.set('workStatus', item.work_status);
+          hostComponent.set('desiredStatus', item.desired_status);
         }
       })
     }

+ 3 - 1
ambari-web/app/models/component.js

@@ -33,7 +33,9 @@ App.Component = DS.Model.extend({
   //host_id: DS.attr('string'),
 
   workStatus: DS.attr('string'),
-
+  
+  desiredStatus: DS.attr('string'),
+  
   isMaster: function () {
     switch (this.get('componentName')) {
       case 'NAMENODE':

+ 1 - 0
ambari-web/app/models/host_component.js

@@ -20,6 +20,7 @@ var App = require('app');
 
 App.HostComponent = DS.Model.extend({
   workStatus: DS.attr('string'),
+  desiredStatus: DS.attr('string'),
   componentName: DS.attr('string'),
   host: DS.belongsTo('App.Host'),
   service: DS.belongsTo('App.Service'),

+ 6 - 0
ambari-web/app/models/service.js

@@ -40,10 +40,16 @@ App.Service = DS.Model.extend({
   healthStatus: function () {
     var components = this.get('components').filterProperty('isMaster', true);
     if (components.everyProperty('workStatus', App.Component.Status.started)) {
+      if (components.someProperty('desiredStatus', App.Component.Status.stopped)) {
+        return 'red-blinking';
+      }
       return 'green';
     } else if (components.someProperty('workStatus', App.Component.Status.starting)) {
       return 'green-blinking';
     } else if (components.someProperty('workStatus', App.Component.Status.stopped)) {
+      if (components.someProperty('desiredStatus', App.Component.Status.started)) {
+        return 'green-blinking';
+      }
       return 'red';
     } else {
       return 'red-blinking';