You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2013/03/06 19:55:44 UTC

svn commit: r1453481 - in /incubator/ambari/trunk: ./ ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ ambari-server/src/test/java/org/apache/ambari/server/controller/internal/

Author: swagle
Date: Wed Mar  6 18:55:44 2013
New Revision: 1453481

URL: http://svn.apache.org/r1453481
Log:
AMBARI-1561. API should return nagios_alerts as a JSON, not a stringified JSON. (swagle)

Modified:
    incubator/ambari/trunk/CHANGES.txt
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HttpProxyPropertyProvider.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HttpPropertyProviderTest.java

Modified: incubator/ambari/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/CHANGES.txt?rev=1453481&r1=1453480&r2=1453481&view=diff
==============================================================================
--- incubator/ambari/trunk/CHANGES.txt (original)
+++ incubator/ambari/trunk/CHANGES.txt Wed Mar  6 18:55:44 2013
@@ -416,6 +416,9 @@ Trunk (unreleased changes):
 
  BUG FIXES
 
+ AMBARI-1561. API should return nagios_alerts as a JSON, not a 
+ stringified JSON. (swagle)
+
  AMBARI-1492. Add init.d scripts for Ambari server + agent. (swagle)
 
  AMBARI-1548. Implement Stacks API using the consistent API framework in 

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HttpProxyPropertyProvider.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HttpProxyPropertyProvider.java?rev=1453481&r1=1453480&r2=1453481&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HttpProxyPropertyProvider.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HttpProxyPropertyProvider.java Wed Mar  6 18:55:44 2013
@@ -24,6 +24,7 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.ambari.server.api.services.parsers.JsonPropertyParser;
 import org.apache.ambari.server.controller.spi.Predicate;
 import org.apache.ambari.server.controller.spi.PropertyProvider;
 import org.apache.ambari.server.controller.spi.Request;
@@ -109,10 +110,7 @@ public class HttpProxyPropertyProvider e
     InputStream in = null;
     try {
       in = streamProvider.readFrom(url);
-      
-      String str = IOUtils.toString(in, "UTF-8");
-      
-      r.setProperty(propertyIdToSet, str);
+      r.setProperty(propertyIdToSet, new JsonPropertyParser().parse(IOUtils.toString(in, "UTF-8")));
     }
     catch (IOException ioe) {
       LOG.error("Error reading HTTP response from " + url);

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HttpPropertyProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HttpPropertyProviderTest.java?rev=1453481&r1=1453480&r2=1453481&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HttpPropertyProviderTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HttpPropertyProviderTest.java Wed Mar  6 18:55:44 2013
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 
 import org.apache.ambari.server.controller.spi.Request;
@@ -73,8 +74,25 @@ public class HttpPropertyProviderTest {
    Assert.assertNotNull("Expected non-null for 'nagios_alerts'",
      resource.getPropertyValue(PROPERTY_ID_NAGIOS_ALERTS));        
   }
-  
-  
+
+  @Test
+  public void testReadWithRequestedJson() throws Exception {
+
+  Set<String> propertyIds = new HashSet<String>();
+  propertyIds.add(PropertyHelper.getPropertyId("HostRoles", "nagios_alerts"));
+  propertyIds.add(PROPERTY_ID_COMPONENT_NAME);
+  Resource resource = doPopulate("NAGIOS_SERVER", propertyIds);
+  Object propertyValue = resource.getPropertyValue(PROPERTY_ID_NAGIOS_ALERTS);
+
+  Assert.assertNotNull("Expected non-null for 'nagios_alerts'", propertyValue);
+  Assert.assertTrue("Expected Set for parsed JSON", propertyValue instanceof Set);
+
+  Object propertyEntry = ((Set) propertyValue).iterator().next();
+
+  Assert.assertTrue(propertyEntry instanceof Map);
+  Assert.assertEquals("Alert Body", ((Map) propertyEntry).get("nagios_alert"));
+  }
+
   @Test
   public void testReadGangliaServer() throws Exception {
     
@@ -112,9 +130,8 @@ public class HttpPropertyProviderTest {
 
     @Override
     public InputStream readFrom(String spec) throws IOException {
-      return new ByteArrayInputStream("PROPERTY_TEST".getBytes());
+        String responseStr = "[{\"nagios_alert\": \"Alert Body\"}]";
+        return new ByteArrayInputStream(responseStr.getBytes("UTF-8"));
     }
   }
-  
-  
 }