You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ds...@apache.org on 2014/09/22 19:18:16 UTC

git commit: AMBARI-7355 Add possibility to filter config groups through api by host name (dsen)

Repository: ambari
Updated Branches:
  refs/heads/trunk 57030a4d1 -> 802df768a


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/trunk
Commit: 802df768ac0415e91e951c61592ea370a5975957
Parents: 57030a4
Author: Dmytro Sen <ds...@hortonworks.com>
Authored: Mon Sep 22 20:18:13 2014 +0300
Committer: Dmytro Sen <ds...@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