You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2014/02/10 19:11:38 UTC

git commit: AMBARI-4569. Health status should ignore host components that are PASSIVE. (ncole)

Updated Branches:
  refs/heads/trunk 84fba7b22 -> 0a79a472e


AMBARI-4569. Health status should ignore host components that are PASSIVE. (ncole)


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

Branch: refs/heads/trunk
Commit: 0a79a472ebcaccda560816e4f744b68cc5a801fa
Parents: 84fba7b
Author: Nate Cole <nc...@hortonworks.com>
Authored: Mon Feb 10 10:55:36 2014 -0500
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Mon Feb 10 12:57:31 2014 -0500

----------------------------------------------------------------------
 .../ambari/server/agent/HeartBeatHandler.java   | 24 ++++---
 .../controller/AmbariManagementController.java  |  3 +-
 .../AmbariManagementControllerImpl.java         | 31 +++-----
 .../server/controller/PassiveStateHelper.java   | 75 ++++++++++++++++++++
 .../internal/ComponentResourceProvider.java     |  2 +-
 .../internal/ServiceResourceProvider.java       |  2 +-
 .../server/agent/TestHeartbeatHandler.java      | 39 ++++++++--
 .../AmbariManagementControllerImplTest.java     | 68 ++++++++++++++----
 .../AmbariManagementControllerTest.java         | 20 +++---
 .../internal/ComponentResourceProviderTest.java |  1 -
 10 files changed, 199 insertions(+), 66 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/0a79a472/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
index ac284b3..4dfa1cf 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
@@ -31,6 +31,7 @@ import org.apache.ambari.server.ServiceNotFoundException;
 import org.apache.ambari.server.actionmanager.ActionManager;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.configuration.Configuration;
+import org.apache.ambari.server.controller.PassiveStateHelper;
 import org.apache.ambari.server.metadata.ActionMetadata;
 import org.apache.ambari.server.state.AgentVersion;
 import org.apache.ambari.server.state.Cluster;
@@ -40,6 +41,7 @@ import org.apache.ambari.server.state.Host;
 import org.apache.ambari.server.state.HostHealthStatus;
 import org.apache.ambari.server.state.HostHealthStatus.HealthStatus;
 import org.apache.ambari.server.state.HostState;
+import org.apache.ambari.server.state.PassiveState;
 import org.apache.ambari.server.state.Service;
 import org.apache.ambari.server.state.ServiceComponent;
 import org.apache.ambari.server.state.ServiceComponentHost;
@@ -242,6 +244,8 @@ public class HeartBeatHandler {
         StackId stackId;
         Cluster cluster = clusterFsm.getCluster(clusterName);
         stackId = cluster.getDesiredStackVersion();
+        
+        PassiveStateHelper psh = injector.getInstance(PassiveStateHelper.class);
 
         List<ServiceComponentHost> scHosts = cluster.getServiceComponentHosts(heartbeat.getHostname());
         for (ServiceComponentHost scHost : scHosts) {
@@ -254,15 +258,17 @@ public class HeartBeatHandler {
 
           String category = componentInfo.getCategory();
 
-          if (category.equals("MASTER")) {
-            ++masterCount;
-            if (status.equals("STARTED")) {
-              ++mastersRunning;
-            }
-          } else if (category.equals("SLAVE")) {
-            ++slaveCount;
-            if (status.equals("STARTED")) {
-              ++slavesRunning;
+          if (PassiveState.ACTIVE == psh.getEffectiveState(scHost)) {
+            if (category.equals("MASTER")) {
+              ++masterCount;
+              if (status.equals("STARTED")) {
+                ++mastersRunning;
+              }
+            } else if (category.equals("SLAVE")) {
+              ++slaveCount;
+              if (status.equals("STARTED")) {
+                ++slavesRunning;
+              }
             }
           }
         }

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a79a472/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementController.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementController.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementController.java
index cab12e9..a6e52b0 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementController.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementController.java
@@ -528,7 +528,6 @@ public interface AmbariManagementController {
    * @return the passive state
    * @throws AmbariException
    */
-  public PassiveState getEffectivePassiveState(Cluster cluster, Service service,
-      ServiceComponentHost sch) throws AmbariException;
+  public PassiveState getEffectivePassiveState(ServiceComponentHost sch) throws AmbariException;
 }
   

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a79a472/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
index 0efc935..af7663b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
@@ -707,7 +707,7 @@ public class AmbariManagementControllerImpl implements
             if (filterBasedConfigStaleness && r.isStaleConfig() != staleConfig) {
               continue;
             }
-            r.setPassiveState(getEffectivePassiveState(cluster, s, sch).name());
+            r.setPassiveState(getEffectivePassiveState(sch).name());
             response.add(r);
           } catch (ServiceComponentHostNotFoundException e) {
             if (request.getServiceName() != null && request.getComponentName() != null) {
@@ -740,7 +740,7 @@ public class AmbariManagementControllerImpl implements
               continue;
             }
             
-            r.setPassiveState(getEffectivePassiveState(cluster, s, sch).name());
+            r.setPassiveState(getEffectivePassiveState(sch).name());
             response.add(r);
           }
         }
@@ -750,26 +750,11 @@ public class AmbariManagementControllerImpl implements
   }
   
   @Override
-  public PassiveState getEffectivePassiveState(Cluster cluster, Service service,
-      ServiceComponentHost sch) throws AmbariException
-      {
-    
-    Map<String, Host> map = clusters.getHostsForCluster(cluster.getClusterName());
-    if (null == map)
-      return PassiveState.ACTIVE;
-    
-    Host host = clusters.getHostsForCluster(cluster.getClusterName()).get(sch.getHostName());
-    if (null == host) // better not
-      throw new HostNotFoundException(cluster.getClusterName(), sch.getHostName());
-    
-    if (PassiveState.PASSIVE == sch.getPassiveState())
-      return PassiveState.PASSIVE;
-
-    if (PassiveState.ACTIVE != service.getPassiveState() ||
-        PassiveState.ACTIVE != host.getPassiveState(cluster.getClusterId()))
-      return PassiveState.IMPLIED;
+  public PassiveState getEffectivePassiveState(ServiceComponentHost sch)
+      throws AmbariException {
+    PassiveStateHelper psh = injector.getInstance(PassiveStateHelper.class);
     
-    return sch.getPassiveState();
+    return psh.getEffectiveState(sch);
   }
   
 
@@ -1502,8 +1487,10 @@ public class AmbariManagementControllerImpl implements
       }
       
       if (null != request.getPassiveState()) {
+        PassiveStateHelper psh = injector.getInstance(PassiveStateHelper.class);
+        
         PassiveState newPassive = PassiveState.valueOf(request.getPassiveState());
-        PassiveState oldPassive = getEffectivePassiveState(cluster, s, sch);
+        PassiveState oldPassive = psh.getEffectiveState(sch);
         
         if (newPassive != oldPassive) {
           if (sc.isClientComponent()) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a79a472/ambari-server/src/main/java/org/apache/ambari/server/controller/PassiveStateHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/PassiveStateHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/PassiveStateHelper.java
new file mode 100644
index 0000000..a6b56cc
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/PassiveStateHelper.java
@@ -0,0 +1,75 @@
+/**
+ * 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.
+ */
+package org.apache.ambari.server.controller;
+
+import java.util.Map;
+
+import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.HostNotFoundException;
+import org.apache.ambari.server.state.Cluster;
+import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.state.Host;
+import org.apache.ambari.server.state.PassiveState;
+import org.apache.ambari.server.state.Service;
+import org.apache.ambari.server.state.ServiceComponentHost;
+
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+
+/**
+ * Used to help manage passive state checks.
+ */
+public class PassiveStateHelper {
+
+  @Inject
+  private Clusters clusters;
+  
+  @Inject
+  public PassiveStateHelper(Injector injector) {
+    injector.injectMembers(this);
+  }
+
+  /**
+   * Gets the effective state for a HostComponents
+   * @param sch the host component
+   * @return the passive state
+   * @throws AmbariException
+   */
+  public PassiveState getEffectiveState(ServiceComponentHost sch) throws AmbariException {
+    Cluster cluster = clusters.getCluster(sch.getClusterName());
+    Service service = cluster.getService(sch.getServiceName());
+    
+    Map<String, Host> map = clusters.getHostsForCluster(cluster.getClusterName());
+    if (null == map)
+      return PassiveState.ACTIVE;
+    
+    Host host = clusters.getHostsForCluster(cluster.getClusterName()).get(sch.getHostName());
+    if (null == host) // better not
+      throw new HostNotFoundException(cluster.getClusterName(), sch.getHostName());
+    
+    if (PassiveState.PASSIVE == sch.getPassiveState())
+      return PassiveState.PASSIVE;
+
+    if (PassiveState.ACTIVE != service.getPassiveState() ||
+        PassiveState.ACTIVE != host.getPassiveState(cluster.getClusterId()))
+      return PassiveState.IMPLIED;
+    
+    return sch.getPassiveState();
+  }
+  
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a79a472/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
index feb0469..600691d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
@@ -736,7 +736,7 @@ public class ComponentResourceProvider extends AbstractControllerResourceProvide
         }
 
         // do not update or alter any HC that is not active
-        PassiveState schPassive = controller.getEffectivePassiveState(cluster, s, sch);
+        PassiveState schPassive = controller.getEffectivePassiveState(sch);
         if (PassiveState.ACTIVE != schPassive) {
           if (LOG.isDebugEnabled()) {
             LOG.debug("Ignoring ServiceComponentHost"

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a79a472/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
index bfc74b1..cc94baa 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
@@ -662,7 +662,7 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
             continue;
           }
           
-          PassiveState schPassive = controller.getEffectivePassiveState(cluster, s, sch);
+          PassiveState schPassive = controller.getEffectivePassiveState(sch);
           if (PassiveState.PASSIVE == schPassive ||
               (requests.size() > 1 && PassiveState.ACTIVE != schPassive)) {
             ignoredScHosts.add(sch);

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a79a472/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
index afec756..12aab4f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
@@ -53,6 +53,7 @@ import java.util.Set;
 import javax.xml.bind.JAXBException;
 
 import com.google.inject.persist.UnitOfWork;
+
 import junit.framework.Assert;
 
 import org.apache.ambari.server.AmbariException;
@@ -70,6 +71,7 @@ import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.Host;
 import org.apache.ambari.server.state.HostHealthStatus;
 import org.apache.ambari.server.state.HostState;
+import org.apache.ambari.server.state.PassiveState;
 import org.apache.ambari.server.state.Service;
 import org.apache.ambari.server.state.ServiceComponentHost;
 import org.apache.ambari.server.state.StackId;
@@ -1387,9 +1389,36 @@ public class TestHeartbeatHandler {
     handler.handleHeartBeat(hb2);
     assertEquals(HostHealthStatus.HealthStatus.ALERT.name(), hostObject.getStatus());
     
+    // mark the installed DN as passive
+    hdfs.getServiceComponent(DATANODE).getServiceComponentHost(
+        DummyHostname1).setPassiveState(PassiveState.PASSIVE);
+    HeartBeat hb2a = new HeartBeat();
+    hb2a.setResponseId(2);
+    hb2a.setNodeStatus(new HostStatus(Status.HEALTHY, DummyHostStatus));
+    hb2a.setHostname(DummyHostname1);
+    componentStatus = new ArrayList<ComponentStatus>();
+    dataNodeStatus = new ComponentStatus();
+    dataNodeStatus.setClusterName(cluster.getClusterName());
+    dataNodeStatus.setServiceName(HDFS);
+    dataNodeStatus.setComponentName(DATANODE);
+    dataNodeStatus.setStatus("INSTALLED");
+    componentStatus.add(dataNodeStatus);
+    nameNodeStatus = new ComponentStatus();
+    nameNodeStatus.setClusterName(cluster.getClusterName());
+    nameNodeStatus.setServiceName(HDFS);
+    nameNodeStatus.setComponentName(NAMENODE);
+    nameNodeStatus.setStatus("STARTED");
+    componentStatus.add(nameNodeStatus);
+    hb2a.setComponentStatus(componentStatus);
+    handler.handleHeartBeat(hb2a);
+    assertEquals(HostHealthStatus.HealthStatus.HEALTHY.name(), hostObject.getStatus());
+    
+    hdfs.getServiceComponent(DATANODE).getServiceComponentHost(
+        DummyHostname1).setPassiveState(PassiveState.ACTIVE);
+    
     //Some masters are down
     HeartBeat hb3 = new HeartBeat();
-    hb3.setResponseId(2);
+    hb3.setResponseId(3);
     hb3.setNodeStatus(new HostStatus(Status.HEALTHY, DummyHostStatus));
     hb3.setHostname(DummyHostname1);
     componentStatus = new ArrayList<ComponentStatus>();
@@ -1410,14 +1439,14 @@ public class TestHeartbeatHandler {
     assertEquals(HostHealthStatus.HealthStatus.UNHEALTHY.name(), hostObject.getStatus());
 
     //All are up
-    hb1.setResponseId(3);
+    hb1.setResponseId(4);
     handler.handleHeartBeat(hb1);
     assertEquals(HostHealthStatus.HealthStatus.HEALTHY.name(), hostObject.getStatus());
 
     //Only one component reported status
     hdfs.getServiceComponent(NAMENODE).getServiceComponentHost(DummyHostname1).setState(State.INSTALLED);
     HeartBeat hb4 = new HeartBeat();
-    hb4.setResponseId(4);
+    hb4.setResponseId(5);
     hb4.setNodeStatus(new HostStatus(Status.HEALTHY, DummyHostStatus));
     hb4.setHostname(DummyHostname1);
     componentStatus = new ArrayList<ComponentStatus>();
@@ -1431,13 +1460,13 @@ public class TestHeartbeatHandler {
     handler.handleHeartBeat(hb4);
     assertEquals(HostHealthStatus.HealthStatus.UNHEALTHY.name(), hostObject.getStatus());
 
-    hb1.setResponseId(5);
+    hb1.setResponseId(6);
     handler.handleHeartBeat(hb1);
     assertEquals(HostHealthStatus.HealthStatus.HEALTHY.name(), hostObject.getStatus());
 
     //Some command reports
     HeartBeat hb5 = new HeartBeat();
-    hb5.setResponseId(6);
+    hb5.setResponseId(7);
     hb5.setNodeStatus(new HostStatus(Status.HEALTHY, DummyHostStatus));
     hb5.setHostname(DummyHostname1);
     CommandReport cr1 = new CommandReport();

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a79a472/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
index ff461f7..272b510 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
@@ -48,6 +48,7 @@ import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.state.Cluster;
 import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.Host;
+import org.apache.ambari.server.state.PassiveState;
 import org.apache.ambari.server.state.Service;
 import org.apache.ambari.server.state.ServiceComponent;
 import org.apache.ambari.server.state.ServiceComponentHost;
@@ -280,18 +281,22 @@ public class AmbariManagementControllerImplTest {
     ServiceComponentHost componentHost = createNiceMock(ServiceComponentHost.class);
     ServiceComponentHostResponse response = createNiceMock(ServiceComponentHostResponse.class);
 
+    PassiveStateHelper passiveHelper = createNiceMock(PassiveStateHelper.class);
+    expect(passiveHelper.getEffectiveState(componentHost)).andReturn(PassiveState.ACTIVE).anyTimes();
+    
     // requests
     ServiceComponentHostRequest request1 = new ServiceComponentHostRequest(
         "cluster1", null, "component1", "host1", null);
 
-
     Set<ServiceComponentHostRequest> setRequests = new HashSet<ServiceComponentHostRequest>();
     setRequests.add(request1);
 
     // expectations
     // constructor init
     injector.injectMembers(capture(controllerCapture));
+    
     expect(injector.getInstance(Gson.class)).andReturn(null);
+    expect(injector.getInstance(PassiveStateHelper.class)).andReturn(passiveHelper);
 
     // getHostComponent
     expect(clusters.getCluster("cluster1")).andReturn(cluster);
@@ -309,7 +314,8 @@ public class AmbariManagementControllerImplTest {
     expect(componentHost.convertToResponse()).andReturn(response);
 
     // replay mocks
-    replay(injector, clusters, cluster, host, response, stack, metaInfo, service, component, componentHost);
+    replay(passiveHelper, injector, clusters, cluster, host, response, stack,
+        metaInfo, service, component, componentHost);
 
     //test
     AmbariManagementController controller = new AmbariManagementControllerImpl(null, clusters, injector);
@@ -414,7 +420,10 @@ public class AmbariManagementControllerImplTest {
     ServiceComponentHost componentHost2 = createNiceMock(ServiceComponentHost.class);
     ServiceComponentHostResponse response1 = createNiceMock(ServiceComponentHostResponse.class);
     ServiceComponentHostResponse response2 = createNiceMock(ServiceComponentHostResponse.class);
-
+    PassiveStateHelper passiveStateHelper = createNiceMock(PassiveStateHelper.class);
+    expect(passiveStateHelper.getEffectiveState(capture(new Capture<ServiceComponentHost>())
+        )).andReturn(PassiveState.ACTIVE).anyTimes();
+    
     // requests
     ServiceComponentHostRequest request1 = new ServiceComponentHostRequest(
         "cluster1", null, "component1", "host1", null);
@@ -435,6 +444,8 @@ public class AmbariManagementControllerImplTest {
     // constructor init
     injector.injectMembers(capture(controllerCapture));
     expect(injector.getInstance(Gson.class)).andReturn(null);
+    expect(injector.getInstance(PassiveStateHelper.class)).andReturn(passiveStateHelper).anyTimes();
+
 
     // getHostComponent
     expect(clusters.getCluster("cluster1")).andReturn(cluster).times(3);
@@ -466,8 +477,9 @@ public class AmbariManagementControllerImplTest {
     expect(componentHost2.convertToResponse()).andReturn(response2);
 
     // replay mocks
-    replay(injector, clusters, cluster, host, stack, metaInfo, service, component, component2, component3,
-        componentHost1, componentHost2, response1, response2);
+    replay(passiveStateHelper, injector, clusters, cluster, host, stack,
+        metaInfo, service, component, component2, component3, componentHost1,
+        componentHost2, response1, response2);
 
     //test
     AmbariManagementController controller = new AmbariManagementControllerImpl(null, clusters, injector);
@@ -509,6 +521,9 @@ public class AmbariManagementControllerImplTest {
     ServiceComponentHost componentHost2 = createNiceMock(ServiceComponentHost.class);
     ServiceComponentHostResponse response1 = createNiceMock(ServiceComponentHostResponse.class);
     ServiceComponentHostResponse response2 = createNiceMock(ServiceComponentHostResponse.class);
+    PassiveStateHelper passiveHelper = createNiceMock(PassiveStateHelper.class);
+    expect(passiveHelper.getEffectiveState(capture(
+        new Capture<ServiceComponentHost>()))).andReturn(PassiveState.ACTIVE).anyTimes();
 
     // requests
     ServiceComponentHostRequest request1 = new ServiceComponentHostRequest(
@@ -530,7 +545,8 @@ public class AmbariManagementControllerImplTest {
     // constructor init
     injector.injectMembers(capture(controllerCapture));
     expect(injector.getInstance(Gson.class)).andReturn(null);
-
+    expect(injector.getInstance(PassiveStateHelper.class)).andReturn(passiveHelper).anyTimes();
+    
     // getHostComponent
     expect(clusters.getCluster("cluster1")).andReturn(cluster).times(3);
     expect(clusters.getClustersForHost("host1")).andReturn(Collections.singleton(cluster)).anyTimes();
@@ -559,8 +575,9 @@ public class AmbariManagementControllerImplTest {
     expect(componentHost2.convertToResponse()).andReturn(response2);
 
     // replay mocks
-    replay(injector, clusters, cluster, host, stack, metaInfo, service, component, component2, component3,
-        componentHost1, componentHost2, response1, response2);
+    replay(passiveHelper, injector, clusters, cluster, host, stack, metaInfo,
+        service, component, component2, component3, componentHost1,
+        componentHost2, response1, response2);
 
     //test
     AmbariManagementController controller = new AmbariManagementControllerImpl(null, clusters, injector);
@@ -603,6 +620,10 @@ public class AmbariManagementControllerImplTest {
     ServiceComponentHost componentHost2 = createNiceMock(ServiceComponentHost.class);
     ServiceComponentHostResponse response1 = createNiceMock(ServiceComponentHostResponse.class);
     ServiceComponentHostResponse response2 = createNiceMock(ServiceComponentHostResponse.class);
+    
+    PassiveStateHelper passiveHelper = createNiceMock(PassiveStateHelper.class);
+    expect(passiveHelper.getEffectiveState(capture(
+        new Capture<ServiceComponentHost>()))).andReturn(PassiveState.ACTIVE).anyTimes();
 
     // requests
     ServiceComponentHostRequest request1 = new ServiceComponentHostRequest(
@@ -624,6 +645,7 @@ public class AmbariManagementControllerImplTest {
     // constructor init
     injector.injectMembers(capture(controllerCapture));
     expect(injector.getInstance(Gson.class)).andReturn(null);
+    expect(injector.getInstance(PassiveStateHelper.class)).andReturn(passiveHelper).anyTimes();
 
     // getHostComponent
     expect(clusters.getCluster("cluster1")).andReturn(cluster).times(3);
@@ -654,8 +676,9 @@ public class AmbariManagementControllerImplTest {
     expect(componentHost2.convertToResponse()).andReturn(response2);
 
     // replay mocks
-    replay(injector, clusters, cluster, host, stack, metaInfo, service, service2, component, component2, component3,
-        componentHost1, componentHost2, response1, response2);
+    replay(passiveHelper, injector, clusters, cluster, host, stack, metaInfo,
+        service, service2, component, component2, component3, componentHost1,
+        componentHost2, response1, response2);
 
     //test
     AmbariManagementController controller = new AmbariManagementControllerImpl(null, clusters, injector);
@@ -698,6 +721,9 @@ public class AmbariManagementControllerImplTest {
     ServiceComponentHost componentHost2 = createNiceMock(ServiceComponentHost.class);
     ServiceComponentHostResponse response1 = createNiceMock(ServiceComponentHostResponse.class);
     ServiceComponentHostResponse response2 = createNiceMock(ServiceComponentHostResponse.class);
+    PassiveStateHelper passiveHelper = createNiceMock(PassiveStateHelper.class);
+    expect(passiveHelper.getEffectiveState(
+        capture(new Capture<ServiceComponentHost>()))).andReturn(PassiveState.ACTIVE).anyTimes();
 
     // requests
     ServiceComponentHostRequest request1 = new ServiceComponentHostRequest(
@@ -719,6 +745,7 @@ public class AmbariManagementControllerImplTest {
     // constructor init
     injector.injectMembers(capture(controllerCapture));
     expect(injector.getInstance(Gson.class)).andReturn(null);
+    expect(injector.getInstance(PassiveStateHelper.class)).andReturn(passiveHelper).anyTimes();
 
     // getHostComponent
     expect(clusters.getCluster("cluster1")).andReturn(cluster).times(3);
@@ -745,8 +772,9 @@ public class AmbariManagementControllerImplTest {
     expect(componentHost2.convertToResponse()).andReturn(response2);
 
     // replay mocks
-    replay(injector, clusters, cluster, host, stack, metaInfo, service, service2, component, component2, component3,
-        componentHost1, componentHost2, response1, response2);
+    replay(passiveHelper, injector, clusters, cluster, host, stack, metaInfo,
+        service, service2, component, component2, component3, componentHost1,
+        componentHost2, response1, response2);
 
     //test
     AmbariManagementController controller = new AmbariManagementControllerImpl(null, clusters, injector);
@@ -901,6 +929,9 @@ public class AmbariManagementControllerImplTest {
     ServiceComponentHost componentHost2 = createNiceMock(ServiceComponentHost.class);
     ServiceComponentHostResponse response1 = createNiceMock(ServiceComponentHostResponse.class);
     ServiceComponentHostResponse response2 = createNiceMock(ServiceComponentHostResponse.class);
+    PassiveStateHelper passiveHelper = createNiceMock(PassiveStateHelper.class);
+    expect(passiveHelper.getEffectiveState(
+        capture(new Capture<ServiceComponentHost>()))).andReturn(PassiveState.ACTIVE).anyTimes();
 
     // requests
     ServiceComponentHostRequest request1 = new ServiceComponentHostRequest(
@@ -919,6 +950,7 @@ public class AmbariManagementControllerImplTest {
     // constructor init
     injector.injectMembers(capture(controllerCapture));
     expect(injector.getInstance(Gson.class)).andReturn(null);
+    expect(injector.getInstance(PassiveStateHelper.class)).andReturn(passiveHelper).anyTimes();
 
     // getHostComponent
     expect(clusters.getCluster("cluster1")).andReturn(cluster);
@@ -937,7 +969,8 @@ public class AmbariManagementControllerImplTest {
     expect(componentHost2.convertToResponse()).andReturn(response2);
 
     // replay mocks
-    replay(injector, clusters, cluster, response1, response2, stack, metaInfo, service, component, componentHost1, componentHost2);
+    replay(passiveHelper, injector, clusters, cluster, response1, response2,
+        stack, metaInfo, service, component, componentHost1, componentHost2);
 
     //test
     AmbariManagementController controller = new AmbariManagementControllerImpl(null, clusters, injector);
@@ -978,6 +1011,9 @@ public class AmbariManagementControllerImplTest {
     ServiceComponentHostResponse response1 = createNiceMock(ServiceComponentHostResponse.class);
     ServiceComponentHostResponse response2 = createNiceMock(ServiceComponentHostResponse.class);
     ServiceComponentHostResponse response3 = createNiceMock(ServiceComponentHostResponse.class);
+    PassiveStateHelper passiveHelper = createNiceMock(PassiveStateHelper.class);
+    expect(passiveHelper.getEffectiveState(
+        capture(new Capture<ServiceComponentHost>()))).andReturn(PassiveState.ACTIVE).anyTimes();
 
     // requests
     ServiceComponentHostRequest request1 = new ServiceComponentHostRequest(
@@ -1000,6 +1036,7 @@ public class AmbariManagementControllerImplTest {
     // constructor init
     injector.injectMembers(capture(controllerCapture));
     expect(injector.getInstance(Gson.class)).andReturn(null);
+    expect(injector.getInstance(PassiveStateHelper.class)).andReturn(passiveHelper).anyTimes();
 
     // getHostComponent
     expect(clusters.getCluster("cluster1")).andReturn(cluster);
@@ -1019,8 +1056,9 @@ public class AmbariManagementControllerImplTest {
     expect(componentHost3.convertToResponse()).andReturn(response3);
 
     // replay mocks
-    replay(injector, clusters, cluster, response1, response2, response3, stack, metaInfo, service1, service2,
-        component1, component2, componentHost1, componentHost2, componentHost3);
+    replay(passiveHelper, injector, clusters, cluster, response1, response2,
+        response3, stack, metaInfo, service1, service2, component1, component2,
+        componentHost1, componentHost2, componentHost3);
 
     //test
     AmbariManagementController controller = new AmbariManagementControllerImpl(null, clusters, injector);

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a79a472/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
index 7106c01..fad4356 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
@@ -9041,7 +9041,7 @@ public class AmbariManagementControllerTest {
     for (ServiceComponent sc : service.getServiceComponents().values()) {
       for (ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
         Assert.assertEquals(PassiveState.IMPLIED,
-            controller.getEffectivePassiveState(cluster, service, sch));
+            controller.getEffectivePassiveState(sch));
         Assert.assertEquals(PassiveState.ACTIVE, sch.getPassiveState());
       }
     }
@@ -9056,7 +9056,7 @@ public class AmbariManagementControllerTest {
     for (ServiceComponent sc : service.getServiceComponents().values()) {
       for (ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
         Assert.assertEquals(PassiveState.ACTIVE,
-            controller.getEffectivePassiveState(cluster, service, sch));
+            controller.getEffectivePassiveState(sch));
         Assert.assertEquals(PassiveState.ACTIVE, sch.getPassiveState());
       }
     }
@@ -9072,7 +9072,7 @@ public class AmbariManagementControllerTest {
     // check the host components implied state vs desired state, only for affected hosts
     for (ServiceComponent sc : service.getServiceComponents().values()) {
       for (ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
-        PassiveState implied = controller.getEffectivePassiveState(cluster, service, sch);
+        PassiveState implied = controller.getEffectivePassiveState(sch);
         if (sch.getHostName().equals(host1)) {
           Assert.assertEquals(PassiveState.IMPLIED, implied);
         } else {
@@ -9093,7 +9093,7 @@ public class AmbariManagementControllerTest {
     for (ServiceComponent sc : service.getServiceComponents().values()) {
       for (ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
         Assert.assertEquals(PassiveState.ACTIVE,
-            controller.getEffectivePassiveState(cluster, service, sch));
+            controller.getEffectivePassiveState(sch));
         Assert.assertEquals(PassiveState.ACTIVE, sch.getPassiveState());
       }
     }
@@ -9105,27 +9105,27 @@ public class AmbariManagementControllerTest {
     targetSch.setPassiveState(PassiveState.PASSIVE);
 
     // check the host components active state vs desired state
-    Assert.assertEquals(PassiveState.PASSIVE, controller.getEffectivePassiveState(cluster, service, targetSch));
+    Assert.assertEquals(PassiveState.PASSIVE, controller.getEffectivePassiveState(targetSch));
     
     // update the service
     service.setPassiveState(PassiveState.PASSIVE);
-    Assert.assertEquals(PassiveState.PASSIVE, controller.getEffectivePassiveState(cluster, service, targetSch));
+    Assert.assertEquals(PassiveState.PASSIVE, controller.getEffectivePassiveState(targetSch));
     
     // make SCH active
     targetSch.setPassiveState(PassiveState.ACTIVE);
-    Assert.assertEquals(PassiveState.IMPLIED, controller.getEffectivePassiveState(cluster, service, targetSch));
+    Assert.assertEquals(PassiveState.IMPLIED, controller.getEffectivePassiveState(targetSch));
     
     // update the service
     service.setPassiveState(PassiveState.ACTIVE);
-    Assert.assertEquals(PassiveState.ACTIVE, controller.getEffectivePassiveState(cluster, service, targetSch));
+    Assert.assertEquals(PassiveState.ACTIVE, controller.getEffectivePassiveState(targetSch));
     
     host = hosts.get(host2);
     // update host
     host.setPassiveState(cluster.getClusterId(), PassiveState.PASSIVE);
-    Assert.assertEquals(PassiveState.IMPLIED, controller.getEffectivePassiveState(cluster, service, targetSch));
+    Assert.assertEquals(PassiveState.IMPLIED, controller.getEffectivePassiveState(targetSch));
     
     targetSch.setPassiveState(PassiveState.PASSIVE);
-    Assert.assertEquals(PassiveState.PASSIVE, controller.getEffectivePassiveState(cluster, service, targetSch));
+    Assert.assertEquals(PassiveState.PASSIVE, controller.getEffectivePassiveState(targetSch));
 
     // check the host components active state vs desired state
     for (ServiceComponent sc : service.getServiceComponents().values()) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a79a472/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
index 81c1daf..be5d4cb 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
@@ -240,7 +240,6 @@ public class ComponentResourceProviderTest {
     expect(managementController.getClusters()).andReturn(clusters).anyTimes();
     expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
     expect(managementController.getEffectivePassiveState(
-        capture(new Capture<Cluster>()), capture(new Capture<Service>()),
         capture(new Capture<ServiceComponentHost>()))).andReturn(PassiveState.ACTIVE).anyTimes();
     
     expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();