You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by vb...@apache.org on 2014/07/24 12:01:06 UTC
git commit: AMBARI-6581. Provide API to support which RM is
Active/Passive.(vbrodetskyi)
Repository: ambari
Updated Branches:
refs/heads/trunk 86878cdac -> c8ba4f3e5
AMBARI-6581. Provide API to support which RM is Active/Passive.(vbrodetskyi)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c8ba4f3e
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c8ba4f3e
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c8ba4f3e
Branch: refs/heads/trunk
Commit: c8ba4f3e566558a58358998bba5f1c437b5513db
Parents: 86878cd
Author: Vitaly Brodetskyi <vb...@hortonworks.com>
Authored: Thu Jul 24 12:04:24 2014 +0300
Committer: Vitaly Brodetskyi <vb...@hortonworks.com>
Committed: Thu Jul 24 12:04:24 2014 +0300
----------------------------------------------------------------------
.../api/query/SubResourcePredicateVisitor.java | 1 +
.../internal/HostComponentResourceProvider.java | 37 +++++-----
.../internal/HttpProxyPropertyProvider.java | 78 +++++++++++++++++---
.../HostComponentResourceProviderTest.java | 23 ++++--
.../internal/HttpPropertyProviderTest.java | 63 +++++++++++++++-
.../internal/JMXHostProviderTest.java | 7 +-
6 files changed, 168 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/c8ba4f3e/ambari-server/src/main/java/org/apache/ambari/server/api/query/SubResourcePredicateVisitor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/query/SubResourcePredicateVisitor.java b/ambari-server/src/main/java/org/apache/ambari/server/api/query/SubResourcePredicateVisitor.java
index ebeae8b..070cb40 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/query/SubResourcePredicateVisitor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/query/SubResourcePredicateVisitor.java
@@ -101,6 +101,7 @@ public class SubResourcePredicateVisitor implements PredicateVisitor {
@Override
public void acceptUnaryPredicate(UnaryPredicate predicate) {
+ //TODO implement subresource parsing not only for ComparisonPredicate
if (predicate.getPredicate() instanceof ComparisonPredicate) {
ComparisonPredicate innerPredicate = (ComparisonPredicate) predicate.getPredicate();
String propertyId = innerPredicate.getPropertyId();
http://git-wip-us.apache.org/repos/asf/ambari/blob/c8ba4f3e/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
index 89d53ae..732203a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
@@ -24,6 +24,7 @@ import java.util.Iterator;
import java.util.Map;
import java.util.Set;
+import com.google.inject.Injector;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.configuration.ComponentSSLConfiguration;
import org.apache.ambari.server.controller.AmbariManagementController;
@@ -80,26 +81,10 @@ public class HostComponentResourceProvider extends AbstractControllerResourcePro
= "HostRoles/maintenance_state";
//Component name mappings
- private static final Map<String, PropertyProvider> HOST_COMPONENT_PROPERTIES_PROVIDER = new HashMap<String, PropertyProvider>();
+ private final Map<String, PropertyProvider> HOST_COMPONENT_PROPERTIES_PROVIDER = new HashMap<String, PropertyProvider>();
private static final int HOST_COMPONENT_HTTP_PROPERTY_REQUEST_CONNECT_TIMEOUT = 1500; //milliseconds
private static final int HOST_COMPONENT_HTTP_PROPERTY_REQUEST_READ_TIMEOUT = 10000; //milliseconds
- static {
- ComponentSSLConfiguration configuration = ComponentSSLConfiguration.instance();
- URLStreamProvider streamProvider = new URLStreamProvider(
- HOST_COMPONENT_HTTP_PROPERTY_REQUEST_CONNECT_TIMEOUT,
- HOST_COMPONENT_HTTP_PROPERTY_REQUEST_READ_TIMEOUT,
- configuration.getTruststorePath(), configuration.getTruststorePassword(), configuration.getTruststoreType());
-
- HOST_COMPONENT_PROPERTIES_PROVIDER.put(
- "NAGIOS_SERVER",
- new HttpProxyPropertyProvider(
- streamProvider, configuration,
- PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
- PropertyHelper.getPropertyId("HostRoles", "host_name"),
- PropertyHelper.getPropertyId("HostRoles", "component_name")));
- }
-
//Parameters from the predicate
private static final String QUERY_PARAMETERS_RUN_SMOKE_TEST_ID =
"params/run_smoke_test";
@@ -122,8 +107,24 @@ public class HostComponentResourceProvider extends AbstractControllerResourcePro
@AssistedInject
public HostComponentResourceProvider(@Assisted Set<String> propertyIds,
@Assisted Map<Resource.Type, String> keyPropertyIds,
- @Assisted AmbariManagementController managementController) {
+ @Assisted AmbariManagementController managementController,
+ Injector injector) {
super(propertyIds, keyPropertyIds, managementController);
+ ComponentSSLConfiguration configuration = ComponentSSLConfiguration.instance();
+ URLStreamProvider streamProvider = new URLStreamProvider(
+ HOST_COMPONENT_HTTP_PROPERTY_REQUEST_CONNECT_TIMEOUT,
+ HOST_COMPONENT_HTTP_PROPERTY_REQUEST_READ_TIMEOUT,
+ configuration.getTruststorePath(), configuration.getTruststorePassword(), configuration.getTruststoreType());
+
+ HttpProxyPropertyProvider httpPropertyProvider = new HttpProxyPropertyProvider(streamProvider,
+ configuration, injector,
+ PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+ PropertyHelper.getPropertyId("HostRoles", "host_name"),
+ PropertyHelper.getPropertyId("HostRoles", "component_name"));
+
+ HOST_COMPONENT_PROPERTIES_PROVIDER.put("NAGIOS_SERVER", httpPropertyProvider);
+
+ HOST_COMPONENT_PROPERTIES_PROVIDER.put("RESOURCEMANAGER", httpPropertyProvider);
}
// ----- ResourceProvider ------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/c8ba4f3e/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HttpProxyPropertyProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HttpProxyPropertyProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HttpProxyPropertyProvider.java
index d39518c..3cd336c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HttpProxyPropertyProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HttpProxyPropertyProvider.java
@@ -26,6 +26,8 @@ import java.util.Map;
import java.util.Set;
import com.google.gson.JsonSyntaxException;
+import com.google.inject.Injector;
+import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.configuration.ComponentSSLConfiguration;
import org.apache.ambari.server.controller.spi.Predicate;
import org.apache.ambari.server.controller.spi.PropertyProvider;
@@ -34,6 +36,8 @@ import org.apache.ambari.server.controller.spi.Resource;
import org.apache.ambari.server.controller.spi.SystemException;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
import org.apache.ambari.server.controller.utilities.StreamProvider;
+import org.apache.ambari.server.state.Cluster;
+import org.apache.ambari.server.state.Clusters;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -51,11 +55,26 @@ public class HttpProxyPropertyProvider extends BaseProvider implements PropertyP
private static final Map<String, String> URL_TEMPLATES = new HashMap<String, String>();
private static final Map<String, String> MAPPINGS = new HashMap<String, String>();
+ private static final Map<String, String> PROPERTIES_TO_FILTER = new HashMap<String, String>();
+
+ private static final String COMPONENT_RESOURCEMANAGER = "RESOURCEMANAGER";
+ private static final String COMPONENT_NAGIOS_SERVER = "NAGIOS_SERVER";
+ private static final String CONFIG_YARN_SITE = "yarn-site";
+ private static final String CONFIG_CORE_SITE = "core-site";
+ private static final String PROPERTY_YARN_HTTP_POLICY = "yarn.http.policy";
+ private static final String PROPERTY_HADOOP_SSL_ENABLED = "hadoop.ssl.enabled";
+ private static final String PROPERTY_YARN_HTTP_POLICY_VALUE_HTTPS_ONLY = "HTTPS_ONLY";
+ private static final String PROPERTY_HADOOP_SSL_ENABLED_VALUE_TRUE = "true";
static {
- URL_TEMPLATES.put("NAGIOS_SERVER", "http://%s/ambarinagios/nagios/nagios_alerts.php?q1=alerts&alert_type=all");
+ URL_TEMPLATES.put(COMPONENT_NAGIOS_SERVER, "http://%s/ambarinagios/nagios/nagios_alerts.php?q1=alerts&" +
+ "alert_type=all");
+ URL_TEMPLATES.put(COMPONENT_RESOURCEMANAGER, "http://%s:8088/ws/v1/cluster/info");
- MAPPINGS.put("NAGIOS_SERVER", PropertyHelper.getPropertyId("HostRoles", "nagios_alerts"));
+ MAPPINGS.put(COMPONENT_NAGIOS_SERVER, PropertyHelper.getPropertyId("HostRoles", "nagios_alerts"));
+ MAPPINGS.put(COMPONENT_RESOURCEMANAGER, PropertyHelper.getPropertyId("HostRoles", "ha_state"));
+
+ PROPERTIES_TO_FILTER.put(COMPONENT_RESOURCEMANAGER, "clusterInfo/haState");
}
private final ComponentSSLConfiguration configuration;
@@ -65,10 +84,14 @@ public class HttpProxyPropertyProvider extends BaseProvider implements PropertyP
private String clusterNamePropertyId = null;
private String hostNamePropertyId = null;
private String componentNamePropertyId = null;
+
+ private Injector injector;
+ private Clusters clusters;
public HttpProxyPropertyProvider(
StreamProvider stream,
ComponentSSLConfiguration configuration,
+ Injector inject,
String clusterNamePropertyId,
String hostNamePropertyId,
String componentNamePropertyId) {
@@ -79,6 +102,8 @@ public class HttpProxyPropertyProvider extends BaseProvider implements PropertyP
this.clusterNamePropertyId = clusterNamePropertyId;
this.hostNamePropertyId = hostNamePropertyId;
this.componentNamePropertyId = componentNamePropertyId;
+ this.injector = inject;
+ this.clusters = injector.getInstance(Clusters.class);
}
/**
@@ -98,12 +123,13 @@ public class HttpProxyPropertyProvider extends BaseProvider implements PropertyP
Object hostName = resource.getPropertyValue(hostNamePropertyId);
Object componentName = resource.getPropertyValue(componentNamePropertyId);
-
+ Object clusterName = resource.getPropertyValue(clusterNamePropertyId);
+
if (null != hostName && null != componentName &&
MAPPINGS.containsKey(componentName.toString()) &&
URL_TEMPLATES.containsKey(componentName.toString())) {
- String template = getTemplate(componentName.toString());
+ String template = getTemplate(componentName.toString(), clusterName.toString());
String propertyId = MAPPINGS.get(componentName.toString());
String url = String.format(template, hostName);
@@ -114,25 +140,59 @@ public class HttpProxyPropertyProvider extends BaseProvider implements PropertyP
return resources;
}
- private String getTemplate(String key) {
-
- String template = URL_TEMPLATES.get(key);
+ private String getTemplate(String componentName, String clusterName) throws SystemException {
+ String template = URL_TEMPLATES.get(componentName);
- if (key.equals("NAGIOS_SERVER")) {
+ if (componentName.equals(COMPONENT_NAGIOS_SERVER)) {
if (configuration.isNagiosSSL()) {
template = template.replace("http", "https");
}
+ } else if (componentName.equals(COMPONENT_RESOURCEMANAGER)) {
+ try {
+ Cluster cluster = this.clusters.getCluster(clusterName);
+ Map<String, String> yarnConfigProperties = cluster.getDesiredConfigByType(CONFIG_YARN_SITE).getProperties();
+ Map<String, String> coreConfigProperties = cluster.getDesiredConfigByType(CONFIG_CORE_SITE).getProperties();
+ String yarnHttpPolicy = yarnConfigProperties.get(PROPERTY_YARN_HTTP_POLICY);
+ String hadoopSslEnabled = coreConfigProperties.get(PROPERTY_HADOOP_SSL_ENABLED);
+ if ((yarnHttpPolicy != null && yarnHttpPolicy.equals(PROPERTY_YARN_HTTP_POLICY_VALUE_HTTPS_ONLY)) ||
+ hadoopSslEnabled != null && hadoopSslEnabled.equals(PROPERTY_HADOOP_SSL_ENABLED_VALUE_TRUE)) {
+ template = template.replace("http", "https");
+ }
+ } catch (AmbariException e) {
+ LOG.debug(String.format("Could not load cluster with name %s. %s", clusterName, e.getMessage()));
+ throw new SystemException(String.format("Could not load cluster with name %s.", clusterName),e);
+ }
}
return template;
}
+ private Object getPropertyValueToSet(Map<String, Object> propertyValueFromJson, Object componentName) throws SystemException {
+ Object result = propertyValueFromJson;
+ //TODO need refactoring for universalization
+ try {
+ if (PROPERTIES_TO_FILTER.get(componentName) != null) {
+ for (String key : PROPERTIES_TO_FILTER.get(componentName).split("/")) {
+ result = ((Map)result).get(key);
+ }
+ }
+ } catch (ClassCastException e) {
+ LOG.error(String.format("Error getting property value for %s. %s", PROPERTIES_TO_FILTER.get(componentName),
+ e.getMessage()));
+ throw new SystemException(String.format("Error getting property value for %s.",
+ PROPERTIES_TO_FILTER.get(componentName)),e);
+ }
+ return result;
+ }
+
private void getHttpResponse(Resource r, String url, String propertyIdToSet) throws SystemException {
InputStream in = null;
try {
in = streamProvider.readFrom(url);
Type mapType = new TypeToken<Map<String, Object>>(){}.getType();
Map<String, Object> propertyValueFromJson = new Gson().fromJson(IOUtils.toString(in, "UTF-8"), mapType);
- r.setProperty(propertyIdToSet, propertyValueFromJson);
+ Object propertyValueToSet = getPropertyValueToSet(propertyValueFromJson,
+ r.getPropertyValue(componentNamePropertyId));
+ r.setProperty(propertyIdToSet, propertyValueToSet);
}
catch (IOException ioe) {
LOG.error("Error reading HTTP response from " + url);
http://git-wip-us.apache.org/repos/asf/ambari/blob/c8ba4f3e/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
index 08a72bb..abe30cc 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
@@ -18,6 +18,7 @@
package org.apache.ambari.server.controller.internal;
+import com.google.inject.Injector;
import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.controller.RequestStatusResponse;
import org.apache.ambari.server.controller.ResourceProviderFactory;
@@ -29,8 +30,10 @@ import org.apache.ambari.server.controller.spi.Resource;
import org.apache.ambari.server.controller.spi.ResourceProvider;
import org.apache.ambari.server.controller.utilities.PredicateBuilder;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
+import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.State;
+import org.apache.ambari.server.state.cluster.ClustersImpl;
import org.easymock.EasyMock;
import org.junit.Assert;
import org.junit.Test;
@@ -62,17 +65,18 @@ public class HostComponentResourceProviderTest {
AmbariManagementController managementController = createMock(AmbariManagementController.class);
RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
ResourceProviderFactory resourceProviderFactory = createNiceMock(ResourceProviderFactory.class);
- HostComponentResourceProvider hostComponentResourceProvider =
+ Injector injector = createNiceMock(Injector.class);
+ HostComponentResourceProvider hostComponentResourceProvider =
new HostComponentResourceProvider(PropertyHelper.getPropertyIds(type),
PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
+ managementController, injector);
+
AbstractControllerResourceProvider.init(resourceProviderFactory);
managementController.createHostComponents(
AbstractResourceProviderTest.Matcher.getHostComponentRequestSet(
"Cluster100", "Service100", "Component100", "Host100", null, null));
-
+
expect(resourceProviderFactory.getHostComponentResourceProvider(anyObject(Set.class),
anyObject(Map.class),
eq(managementController))).
@@ -236,6 +240,7 @@ public class HostComponentResourceProviderTest {
AmbariManagementController managementController = createMock(AmbariManagementController.class);
RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
ResourceProviderFactory resourceProviderFactory = createNiceMock(ResourceProviderFactory.class);
+ Injector injector = createNiceMock(Injector.class);
Map<String, String> mapRequestProps = new HashMap<String, String>();
mapRequestProps.put("context", "Called from a test");
@@ -247,7 +252,7 @@ public class HostComponentResourceProviderTest {
HostComponentResourceProvider provider =
new HostComponentResourceProvider(PropertyHelper.getPropertyIds(type),
PropertyHelper.getKeyPropertyIds(type),
- managementController);
+ managementController, injector);
// set expectations
expect(managementController.getHostComponents(
@@ -287,11 +292,12 @@ public class HostComponentResourceProviderTest {
AmbariManagementController managementController = createMock(AmbariManagementController.class);
RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+ Injector injector = createNiceMock(Injector.class);
HostComponentResourceProvider provider =
new HostComponentResourceProvider(PropertyHelper.getPropertyIds(type),
PropertyHelper.getKeyPropertyIds(type),
- managementController);
+ managementController, injector);
// set expectations
expect(managementController.deleteHostComponents(
@@ -336,11 +342,12 @@ public class HostComponentResourceProviderTest {
Map<Resource.Type, String> keyPropertyIds = new HashMap<Resource.Type, String>();
AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ Injector injector = createNiceMock(Injector.class);
- HostComponentResourceProvider provider =
+ HostComponentResourceProvider provider =
new HostComponentResourceProvider(propertyIds,
keyPropertyIds,
- managementController);
+ managementController, injector);
Set<String> unsupported = provider.checkPropertyIds(Collections.singleton("foo"));
Assert.assertTrue(unsupported.isEmpty());
http://git-wip-us.apache.org/repos/asf/ambari/blob/c8ba4f3e/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HttpPropertyProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HttpPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HttpPropertyProviderTest.java
index ba08dfc..6883514 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HttpPropertyProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HttpPropertyProviderTest.java
@@ -22,6 +22,7 @@ import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
@@ -29,17 +30,25 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import com.google.inject.Injector;
import org.apache.ambari.server.configuration.ComponentSSLConfiguration;
import org.apache.ambari.server.configuration.ComponentSSLConfigurationTest;
import org.apache.ambari.server.controller.spi.Request;
import org.apache.ambari.server.controller.spi.Resource;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
import org.apache.ambari.server.controller.utilities.StreamProvider;
+import org.apache.ambari.server.state.Cluster;
+import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.state.Config;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+
@RunWith(Parameterized.class)
public class HttpPropertyProviderTest {
private static final String PROPERTY_ID_CLUSTER_NAME = PropertyHelper.getPropertyId("HostRoles", "cluster_name");
@@ -74,6 +83,50 @@ public class HttpPropertyProviderTest {
}
@Test
+ public void testReadResourceManager() throws Exception {
+
+ TestStreamProvider streamProvider = new TestStreamProvider(false);
+ Clusters clusters = createNiceMock(Clusters.class);
+ Cluster cluster = createNiceMock(Cluster.class);
+ Injector injector = createNiceMock(Injector.class);
+ Config config1 = createNiceMock(Config.class);
+ Config config2 = createNiceMock(Config.class);
+
+ Map<String, String> map = new HashMap<String, String>();
+ map.put("yarn.http.policy", "HTTPS_ONLY");
+
+
+ expect(injector.getInstance(Clusters.class)).andReturn(clusters);
+ expect(clusters.getCluster("testCluster")).andReturn(cluster);
+ expect(cluster.getDesiredConfigByType("yarn-site")).andReturn(config1).anyTimes();
+ expect(cluster.getDesiredConfigByType("core-site")).andReturn(config2).anyTimes();
+ expect(config1.getProperties()).andReturn(map).anyTimes();
+ expect(config2.getProperties()).andReturn(new HashMap<String, String>()).anyTimes();
+
+ replay(injector, clusters, cluster, config1, config2);
+
+ HttpProxyPropertyProvider propProvider = new HttpProxyPropertyProvider(
+ streamProvider, configuration, injector,
+ PROPERTY_ID_CLUSTER_NAME,
+ PROPERTY_ID_HOST_NAME,
+ PROPERTY_ID_COMPONENT_NAME);
+
+ Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+ resource.setProperty(PROPERTY_ID_HOST_NAME, "ec2-54-234-33-50.compute-1.amazonaws.com");
+ resource.setProperty(PROPERTY_ID_CLUSTER_NAME, "testCluster");
+ resource.setProperty(PROPERTY_ID_COMPONENT_NAME, "RESOURCEMANAGER");
+
+ Request request = PropertyHelper.getReadRequest(Collections.<String>emptySet());
+
+ propProvider.populateResources(Collections.singleton(resource), request, null);
+
+ Assert.assertTrue(resource.getPropertiesMap().get("HostRoles").get("ha_state").equals("ACTIVE"));
+ Assert.assertTrue(streamProvider.getLastSpec().equals("https://ec2-54-234-33-50.compute-1.amazonaws.com:8088" +
+ "/ws/v1/cluster/info"));
+ }
+
+ @Test
public void testReadNagiosServer() throws Exception {
TestStreamProvider streamProvider = new TestStreamProvider(false);
@@ -171,16 +224,18 @@ public class HttpPropertyProviderTest {
private Resource doPopulate(String componentName,
Set<String> requestProperties, StreamProvider streamProvider) throws Exception {
+ Injector injector = createNiceMock(Injector.class);
HttpProxyPropertyProvider propProvider = new HttpProxyPropertyProvider(
- streamProvider, configuration,
+ streamProvider, configuration, injector,
PROPERTY_ID_CLUSTER_NAME,
PROPERTY_ID_HOST_NAME,
PROPERTY_ID_COMPONENT_NAME);
-
+
Resource resource = new ResourceImpl(Resource.Type.HostComponent);
resource.setProperty(PROPERTY_ID_HOST_NAME, "ec2-54-234-33-50.compute-1.amazonaws.com");
+ resource.setProperty(PROPERTY_ID_CLUSTER_NAME, "testCluster");
resource.setProperty(PROPERTY_ID_COMPONENT_NAME, componentName);
Request request = PropertyHelper.getReadRequest(requestProperties);
@@ -189,7 +244,7 @@ public class HttpPropertyProviderTest {
return resource;
}
-
+
private static class TestStreamProvider implements StreamProvider {
private boolean throwError = false;
private String lastSpec = null;
@@ -210,7 +265,7 @@ public class HttpPropertyProviderTest {
throw new IOException("Fake error");
}
- String responseStr = "{\"alerts\": [{\"Alert Body\": \"Body\"}],"
+ String responseStr = "{\"alerts\": [{\"Alert Body\": \"Body\"}],\"clusterInfo\": [{\"haState\": \"ACTIVE\"}],"
+ " \"hostcounts\": {\"up_hosts\":\"1\", \"down_hosts\":\"0\"}}";
return new ByteArrayInputStream(responseStr.getBytes("UTF-8"));
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/c8ba4f3e/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
index 6e8cb9f..5f4b55c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
@@ -57,6 +57,7 @@ import com.google.inject.persist.PersistService;
import static org.easymock.EasyMock.createNiceMock;
import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.expect;
public class JMXHostProviderTest {
private Injector injector;
@@ -385,9 +386,11 @@ public class JMXHostProviderTest {
.Cluster), PropertyHelper.getKeyPropertyIds(Resource.Type.Cluster),
controller);
+ Injector injector = createNiceMock(Injector.class);
MaintenanceStateHelper maintenanceStateHelper = createNiceMock(MaintenanceStateHelper.class);
{
- replay(maintenanceStateHelper);
+ expect(injector.getInstance(Clusters.class)).andReturn(null);
+ replay(maintenanceStateHelper, injector);
}
ResourceProvider serviceResourceProvider = new ServiceResourceProvider(PropertyHelper
@@ -397,7 +400,7 @@ public class JMXHostProviderTest {
ResourceProvider hostCompResourceProvider = new
HostComponentResourceProvider(PropertyHelper.getPropertyIds(Resource
.Type.HostComponent), PropertyHelper.getKeyPropertyIds(Resource.Type
- .HostComponent), controller);
+ .HostComponent), controller, injector);
ResourceProvider configResourceProvider = new
ConfigurationResourceProvider(PropertyHelper.getPropertyIds(Resource