AMBARI-7355 Add possibility to filter config groups through api by host name (dsen)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/802df768 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/802df768 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/802df768 Branch: refs/heads/branch-alerts-dev Commit: 802df768ac0415e91e951c61592ea370a5975957 Parents: 57030a4 Author: Dmytro Sen <d...@hortonworks.com> Authored: Mon Sep 22 20:18:13 2014 +0300 Committer: Dmytro Sen <d...@hortonworks.com> Committed: Mon Sep 22 20:18:13 2014 +0300 ---------------------------------------------------------------------- .../internal/ConfigGroupResourceProvider.java | 15 ++++++-- .../ConfigGroupResourceProviderTest.java | 37 ++++++++++++++++++-- 2 files changed, 48 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/802df768/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java index 46e9016..c73a8d4 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProvider.java @@ -78,6 +78,8 @@ public class ConfigGroupResourceProvider extends .getPropertyId("ConfigGroup", "service_config_version_note"); protected static final String CONFIGGROUP_HOSTNAME_PROPERTY_ID = PropertyHelper.getPropertyId(null, "host_name"); + protected static final String CONFIGGROUP_HOSTS_HOSTNAME_PROPERTY_ID = + PropertyHelper.getPropertyId("ConfigGroup", "hosts/host_name"); public static final String CONFIGGROUP_HOSTS_PROPERTY_ID = PropertyHelper .getPropertyId("ConfigGroup", "hosts"); public static final String CONFIGGROUP_CONFIGS_PROPERTY_ID = @@ -138,6 +140,10 @@ public class ConfigGroupResourceProvider extends Set<String> requestedIds = getRequestPropertyIds(request, predicate); Set<Resource> resources = new HashSet<Resource>(); + if (requestedIds.contains(CONFIGGROUP_HOSTS_HOSTNAME_PROPERTY_ID)) { + requestedIds.add(CONFIGGROUP_HOSTS_PROPERTY_ID); + } + for (ConfigGroupResponse response : responses) { Resource resource = new ResourceImpl(Resource.Type.ConfigGroup); @@ -618,14 +624,19 @@ public class ConfigGroupResourceProvider extends Map<String, Config> configurations = new HashMap<String, Config>(); Set<String> hosts = new HashSet<String>(); + String hostnameKey = CONFIGGROUP_HOSTNAME_PROPERTY_ID; Object hostObj = properties.get(CONFIGGROUP_HOSTS_PROPERTY_ID); + if (hostObj == null) { + hostnameKey = CONFIGGROUP_HOSTS_HOSTNAME_PROPERTY_ID; + hostObj = properties.get(CONFIGGROUP_HOSTS_HOSTNAME_PROPERTY_ID); + } if (hostObj != null) { if (hostObj instanceof HashSet<?>) { try { Set<Map<String, String>> hostsSet = (Set<Map<String, String>>) hostObj; for (Map<String, String> hostMap : hostsSet) { - if (hostMap.containsKey(CONFIGGROUP_HOSTNAME_PROPERTY_ID)) { - String hostname = hostMap.get(CONFIGGROUP_HOSTNAME_PROPERTY_ID); + if (hostMap.containsKey(hostnameKey)) { + String hostname = hostMap.get(hostnameKey); hosts.add(hostname); } } http://git-wip-us.apache.org/repos/asf/ambari/blob/802df768/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProviderTest.java index 4194979..db324e5 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigGroupResourceProviderTest.java @@ -432,7 +432,7 @@ public class ConfigGroupResourceProviderTest { assertEquals("t3", resources.iterator().next().getPropertyValue (ConfigGroupResourceProvider.CONFIGGROUP_TAG_PROPERTY_ID)); - // Read by hostname + // Read by hostname (hosts=h1) predicate = new PredicateBuilder().property(ConfigGroupResourceProvider .CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and() .property(ConfigGroupResourceProvider.CONFIGGROUP_HOSTS_PROPERTY_ID) @@ -448,8 +448,24 @@ public class ConfigGroupResourceProviderTest { assertEquals("h1", hostSet.iterator().next().get (ConfigGroupResourceProvider.CONFIGGROUP_HOSTNAME_PROPERTY_ID)); + // Read by hostname (hosts/host_name=h1) + predicate = new PredicateBuilder().property(ConfigGroupResourceProvider + .CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and() + .property(ConfigGroupResourceProvider.CONFIGGROUP_HOSTS_HOSTNAME_PROPERTY_ID) + .equals("h1").toPredicate(); + + resources = resourceProvider.getResources(request, predicate); - // Read by tag and hostname - Positive + assertEquals(1, resources.size()); + hostSet = (Set<Map<String, Object>>) + resources.iterator().next() + .getPropertyValue(ConfigGroupResourceProvider + .CONFIGGROUP_HOSTS_PROPERTY_ID); + assertEquals("h1", hostSet.iterator().next().get + (ConfigGroupResourceProvider.CONFIGGROUP_HOSTNAME_PROPERTY_ID)); + + + // Read by tag and hostname (hosts=h1) - Positive predicate = new PredicateBuilder().property(ConfigGroupResourceProvider .CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and() .property(ConfigGroupResourceProvider.CONFIGGROUP_TAG_PROPERTY_ID) @@ -466,6 +482,23 @@ public class ConfigGroupResourceProviderTest { assertEquals("h1", hostSet.iterator().next().get (ConfigGroupResourceProvider.CONFIGGROUP_HOSTNAME_PROPERTY_ID)); + // Read by tag and hostname (hosts/host_name=h1) - Positive + predicate = new PredicateBuilder().property(ConfigGroupResourceProvider + .CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and() + .property(ConfigGroupResourceProvider.CONFIGGROUP_TAG_PROPERTY_ID) + .equals("t4").and().property(ConfigGroupResourceProvider + .CONFIGGROUP_HOSTS_HOSTNAME_PROPERTY_ID).equals("h1").toPredicate(); + + resources = resourceProvider.getResources(request, predicate); + + assertEquals(1, resources.size()); + hostSet = (Set<Map<String, Object>>) + resources.iterator().next() + .getPropertyValue(ConfigGroupResourceProvider + .CONFIGGROUP_HOSTS_PROPERTY_ID); + assertEquals("h1", hostSet.iterator().next().get + (ConfigGroupResourceProvider.CONFIGGROUP_HOSTNAME_PROPERTY_ID)); + // Read by id predicate = new PredicateBuilder().property(ConfigGroupResourceProvider .CONFIGGROUP_ID_PROPERTY_ID).equals(11L).and().property