You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by tb...@apache.org on 2013/11/04 22:35:14 UTC
git commit: AMBARI-3670 - Hosts should roll up host_components status
into its status - fix no cluster
Updated Branches:
refs/heads/trunk fefb83c33 -> 0db94b814
AMBARI-3670 - Hosts should roll up host_components status into its status - fix no cluster
Project: http://git-wip-us.apache.org/repos/asf/incubator-ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ambari/commit/0db94b81
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ambari/tree/0db94b81
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ambari/diff/0db94b81
Branch: refs/heads/trunk
Commit: 0db94b814c50dcb4c7833c6f2b5d28d067315977
Parents: fefb83c
Author: tbeerbower <tb...@hortonworks.com>
Authored: Mon Nov 4 15:42:44 2013 -0500
Committer: tbeerbower <tb...@hortonworks.com>
Committed: Mon Nov 4 16:34:43 2013 -0500
----------------------------------------------------------------------
.../internal/HostResourceProvider.java | 86 +++++++++--------
.../internal/HostResourceProviderTest.java | 97 ++++++++++++++++++++
2 files changed, 143 insertions(+), 40 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/0db94b81/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostResourceProvider.java
index 152f113..45dc22c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostResourceProvider.java
@@ -669,49 +669,55 @@ class HostResourceProvider extends AbstractControllerResourceProvider {
AmbariManagementController controller = getManagementController();
AmbariMetaInfo ambariMetaInfo = controller.getAmbariMetaInfo();
Clusters clusters = controller.getClusters();
- Cluster cluster = clusters.getCluster(response.getClusterName());
- StackId stackId = cluster.getDesiredStackVersion();
-
- ServiceComponentHostRequest request = new ServiceComponentHostRequest(response.getClusterName(),
- null, null, response.getHostname(), null, null);
-
- Set<ServiceComponentHostResponse> hostComponentResponses =
- controller.getHostComponents(Collections.singleton(request));
-
- int masterCount = 0;
- int mastersRunning = 0;
- int slaveCount = 0;
- int slavesRunning = 0;
-
- for (ServiceComponentHostResponse hostComponentResponse : hostComponentResponses ) {
- ComponentInfo componentInfo = ambariMetaInfo.getComponentCategory(stackId.getStackName(),
- stackId.getStackVersion(), hostComponentResponse.getServiceName(),
- hostComponentResponse.getComponentName());
-
- if (componentInfo != null) {
- String category = componentInfo.getCategory();
- String state = hostComponentResponse.getLiveState();
-
- if (category.equals("MASTER")) {
- ++masterCount;
- if (state.equals("STARTED")) {
- ++mastersRunning;
- }
- } else if (category.equals("SLAVE")) {
- ++slaveCount;
- if (state.equals("STARTED")) {
- ++slavesRunning;
+ String clusterName = response.getClusterName();
+
+ if (clusterName != null && clusterName.length() > 0) {
+ Cluster cluster = clusters.getCluster(clusterName);
+ if (cluster != null) {
+ StackId stackId = cluster.getDesiredStackVersion();
+
+ ServiceComponentHostRequest request = new ServiceComponentHostRequest(clusterName,
+ null, null, response.getHostname(), null, null);
+
+ Set<ServiceComponentHostResponse> hostComponentResponses =
+ controller.getHostComponents(Collections.singleton(request));
+
+ int masterCount = 0;
+ int mastersRunning = 0;
+ int slaveCount = 0;
+ int slavesRunning = 0;
+
+ for (ServiceComponentHostResponse hostComponentResponse : hostComponentResponses ) {
+ ComponentInfo componentInfo = ambariMetaInfo.getComponentCategory(stackId.getStackName(),
+ stackId.getStackVersion(), hostComponentResponse.getServiceName(),
+ hostComponentResponse.getComponentName());
+
+ if (componentInfo != null) {
+ String category = componentInfo.getCategory();
+ String state = hostComponentResponse.getLiveState();
+
+ if (category.equals("MASTER")) {
+ ++masterCount;
+ if (state.equals("STARTED")) {
+ ++mastersRunning;
+ }
+ } else if (category.equals("SLAVE")) {
+ ++slaveCount;
+ if (state.equals("STARTED")) {
+ ++slavesRunning;
+ }
+ }
}
}
- }
- }
- if (masterCount == mastersRunning && slaveCount == slavesRunning) {
- healthStatus = HostHealthStatus.HealthStatus.HEALTHY;
- } else if (masterCount > 0 && mastersRunning < masterCount ) {
- healthStatus = HostHealthStatus.HealthStatus.UNHEALTHY;
- } else {
- healthStatus = HostHealthStatus.HealthStatus.ALERT;
+ if (masterCount == mastersRunning && slaveCount == slavesRunning) {
+ healthStatus = HostHealthStatus.HealthStatus.HEALTHY;
+ } else if (masterCount > 0 && mastersRunning < masterCount ) {
+ healthStatus = HostHealthStatus.HealthStatus.UNHEALTHY;
+ } else {
+ healthStatus = HostHealthStatus.HealthStatus.ALERT;
+ }
+ }
}
}
return healthStatus.toString();
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/0db94b81/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java
index cbdcb0e..90f26bb 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java
@@ -207,6 +207,103 @@ public class HostResourceProviderTest {
}
@Test
+ public void testGetResources_Status_NoCluster() throws Exception {
+ Resource.Type type = Resource.Type.Host;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ Clusters clusters = createNiceMock(Clusters.class);
+ Cluster cluster = createNiceMock(Cluster.class);
+ Host host1 = createNiceMock(Host.class);
+ HostHealthStatus healthStatus = createNiceMock(HostHealthStatus.class);
+ AmbariMetaInfo ambariMetaInfo = createNiceMock(AmbariMetaInfo.class);
+ ComponentInfo componentInfo = createNiceMock(ComponentInfo.class);
+
+ HostResponse hostResponse1 = createNiceMock(HostResponse.class);
+
+ List<Host> hosts = new LinkedList<Host>();
+ hosts.add(host1);
+
+ Set<Cluster> clusterSet = new HashSet<Cluster>();
+ clusterSet.add(cluster);
+
+ ServiceComponentHostResponse shr1 = new ServiceComponentHostResponse("Cluster100", "Service100", "Component100", "Host100", null, null, "STARTED", "", null, null);
+ ServiceComponentHostResponse shr2 = new ServiceComponentHostResponse("Cluster100", "Service100", "Component102", "Host100", null, null, "STARTED", "", null, null);
+ ServiceComponentHostResponse shr3 = new ServiceComponentHostResponse("Cluster100", "Service100", "Component103", "Host100", null, null, "STARTED", "", null, null);
+
+ Set<ServiceComponentHostResponse> responses = new HashSet<ServiceComponentHostResponse>();
+ responses.add(shr1);
+ responses.add(shr2);
+ responses.add(shr3);
+
+ // set expectations
+ expect(managementController.getClusters()).andReturn(clusters).anyTimes();
+ expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
+ expect(managementController.getHostComponents((Set<ServiceComponentHostRequest>) anyObject())).andReturn(responses).anyTimes();
+
+ expect(clusters.getHosts()).andReturn(hosts).anyTimes();
+
+ expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
+
+ expect(clusters.getClustersForHost("Host100")).andReturn(clusterSet).anyTimes();
+
+ expect(host1.getHostName()).andReturn("Host100").anyTimes();
+
+ expect(host1.convertToResponse()).andReturn(hostResponse1);
+
+ expect(hostResponse1.getClusterName()).andReturn("").anyTimes();
+ expect(hostResponse1.getHostname()).andReturn("Host100").anyTimes();
+ expect(hostResponse1.getHealthStatus()).andReturn(healthStatus).anyTimes();
+
+ expect(healthStatus.getHealthStatus()).andReturn(HostHealthStatus.HealthStatus.HEALTHY).anyTimes();
+ expect(healthStatus.getHealthReport()).andReturn("HEALTHY").anyTimes();
+
+
+ expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+ (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
+
+ expect(componentInfo.getCategory()).andReturn("MASTER").anyTimes();
+
+
+ // replay
+ replay(managementController, clusters, cluster,
+ host1,
+ hostResponse1, componentInfo,
+ healthStatus, ambariMetaInfo);
+
+ ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ Set<String> propertyIds = new HashSet<String>();
+
+ propertyIds.add(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID);
+ propertyIds.add(HostResourceProvider.HOST_NAME_PROPERTY_ID);
+ propertyIds.add(HostResourceProvider.HOST_HOST_STATUS_PROPERTY_ID);
+
+ Predicate predicate =
+ new PredicateBuilder().property(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").
+ toPredicate();
+ Request request = PropertyHelper.getReadRequest(propertyIds);
+ Set<Resource> resources = provider.getResources(request, predicate);
+
+ Assert.assertEquals(1, resources.size());
+ for (Resource resource : resources) {
+ String clusterName = (String) resource.getPropertyValue(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID);
+ Assert.assertNull(clusterName);
+ String status = (String) resource.getPropertyValue(HostResourceProvider.HOST_HOST_STATUS_PROPERTY_ID);
+ Assert.assertEquals("HEALTHY", status);
+ }
+
+ // verify
+ verify(managementController, clusters, cluster,
+ host1,
+ hostResponse1, componentInfo,
+ healthStatus, ambariMetaInfo);
+ }
+
+ @Test
public void testGetResources_Status_Healthy() throws Exception {
Resource.Type type = Resource.Type.Host;