Repository: ambari Updated Branches: refs/heads/branch-2.6 6b5b1cac2 -> f7ef0b37c
AMBARI-22539. Cannot add host with host_name in request body Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f7ef0b37 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f7ef0b37 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f7ef0b37 Branch: refs/heads/branch-2.6 Commit: f7ef0b37cd58ce1003af805ba9bb4169d01a18d2 Parents: 6b5b1ca Author: Doroszlai, Attila <[email protected]> Authored: Wed Nov 29 09:02:30 2017 +0100 Committer: Doroszlai, Attila <[email protected]> Committed: Wed Nov 29 18:47:22 2017 +0100 ---------------------------------------------------------------------- .../internal/HostResourceProvider.java | 2 +- .../internal/ScaleClusterRequest.java | 15 +-------- .../internal/ScaleClusterRequestTest.java | 32 ++++++++++++++++---- 3 files changed, 28 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/f7ef0b37/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 0df8f13..a3499df 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 @@ -997,7 +997,7 @@ public class HostResourceProvider extends AbstractControllerResourceProvider { * * @return the host name for the host request */ - private String getHostNameFromProperties(Map<String, Object> properties) { + public static String getHostNameFromProperties(Map<String, Object> properties) { String hostname = (String) properties.get(HOST_HOST_NAME_PROPERTY_ID); return hostname != null ? hostname : http://git-wip-us.apache.org/repos/asf/ambari/blob/f7ef0b37/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ScaleClusterRequest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ScaleClusterRequest.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ScaleClusterRequest.java index ad90a25..9434f3b 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ScaleClusterRequest.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ScaleClusterRequest.java @@ -119,7 +119,7 @@ public class ScaleClusterRequest extends BaseClusterRequest { "Currently, a scaling request may only refer to a single blueprint"); } - String hostName = getHostNameFromProperties(properties); + String hostName = HostResourceProvider.getHostNameFromProperties(properties); boolean containsHostCount = properties.containsKey(HostResourceProvider.HOST_COUNT_PROPERTY_ID); boolean containsHostPredicate = properties.containsKey(HostResourceProvider.HOST_PREDICATE_PROPERTY_ID); @@ -210,19 +210,6 @@ public class ScaleClusterRequest extends BaseClusterRequest { } /** - * Get the host name from the request properties. - * - * @param properties request properties - * @return host name - */ - //todo: this was copied exactly from HostResourceProvider - private String getHostNameFromProperties(Map<String, Object> properties) { - String hostName = (String) properties.get(HostResourceProvider.HOST_HOST_NAME_PROPERTY_ID); - - return hostName; - } - - /** * Get the total number of requested hosts for the request. * @return total requested host count */ http://git-wip-us.apache.org/repos/asf/ambari/blob/f7ef0b37/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ScaleClusterRequestTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ScaleClusterRequestTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ScaleClusterRequestTest.java index b839557..3f96944 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ScaleClusterRequestTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ScaleClusterRequestTest.java @@ -102,12 +102,17 @@ public class ScaleClusterRequestTest { @Test public void test_basic_hostName() throws Exception { + Map<String, Object> props = createScaleClusterPropertiesGroup1_HostName(CLUSTER_NAME, BLUEPRINT_NAME); + addSingleHostByName(props); + addSingleHostByName(replaceWithPlainHostNameKey(props)); + } + + private void addSingleHostByName(Map<String, Object> props) throws InvalidTopologyTemplateException { // reset default host resource provider expectations to none since no host predicate is used reset(hostResourceProvider); replay(hostResourceProvider); - ScaleClusterRequest scaleClusterRequest = new ScaleClusterRequest(Collections.singleton( - createScaleClusterPropertiesGroup1_HostName(CLUSTER_NAME, BLUEPRINT_NAME))); + ScaleClusterRequest scaleClusterRequest = new ScaleClusterRequest(Collections.singleton(props)); assertEquals(TopologyRequest.Type.SCALE, scaleClusterRequest.getType()); assertEquals(String.format("Scale Cluster '%s' (+%s hosts)", CLUSTER_NAME, "1"), @@ -129,13 +134,21 @@ public class ScaleClusterRequestTest { @Test public void testMultipleHostNames() throws Exception { - // reset default host resource provider expectations to none since no host predicate is used - reset(hostResourceProvider); - replay(hostResourceProvider); - Set<Map<String, Object>> propertySet = new HashSet<>(); propertySet.add(createScaleClusterPropertiesGroup1_HostName(CLUSTER_NAME, BLUEPRINT_NAME)); propertySet.add(createScaleClusterPropertiesGroup1_HostName2(CLUSTER_NAME, BLUEPRINT_NAME)); + addMultipleHostsByName(propertySet); + + for (Map<String, Object> props : propertySet) { + replaceWithPlainHostNameKey(props); + } + addMultipleHostsByName(propertySet); + } + + private void addMultipleHostsByName(Set<Map<String, Object>> propertySet) throws InvalidTopologyTemplateException { + // reset default host resource provider expectations to none since no host predicate is used + reset(hostResourceProvider); + replay(hostResourceProvider); ScaleClusterRequest scaleClusterRequest = new ScaleClusterRequest(propertySet); @@ -341,6 +354,13 @@ public class ScaleClusterRequestTest { return properties; } + // include host name under "host_name" key instead of "Hosts/host_name" + private static Map<String, Object> replaceWithPlainHostNameKey(Map<String, Object> properties) { + Object value = properties.remove(HostResourceProvider.HOST_HOST_NAME_PROPERTY_ID); + properties.put(HostResourceProvider.HOST_NAME_PROPERTY_ID, value); + return properties; + } + public static Map<String, Object> createScaleClusterPropertiesGroup1_HostCount(String clusterName, String blueprintName) { Map<String, Object> properties = new LinkedHashMap<>();
