ambari-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From srima...@apache.org
Subject git commit: AMBARI-7801. Slider View: YARN memory should show app-type values and use Ambari's java.home (srimanth)
Date Wed, 15 Oct 2014 22:57:42 GMT
Repository: ambari
Updated Branches:
  refs/heads/branch-1.7.0 c827f3e87 -> 69d0f1a3d


AMBARI-7801. Slider View: YARN memory should show app-type values and use Ambari's java.home
(srimanth)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/69d0f1a3
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/69d0f1a3
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/69d0f1a3

Branch: refs/heads/branch-1.7.0
Commit: 69d0f1a3d0710d7b0b9863f2146b2229848b5b70
Parents: c827f3e
Author: Srimanth Gunturi <sgunturi@hortonworks.com>
Authored: Wed Oct 15 13:59:45 2014 -0700
Committer: Srimanth Gunturi <sgunturi@hortonworks.com>
Committed: Wed Oct 15 15:56:30 2014 -0700

----------------------------------------------------------------------
 .../slider/SliderAppsViewControllerImpl.java    | 276 ++++++++++---------
 .../slider/rest/client/AmbariHttpClient.java    | 138 +++++++---
 .../view/slider/rest/client/BaseHttpClient.java |  24 +-
 .../rest/client/SliderAppMasterClient.java      |  30 +-
 4 files changed, 272 insertions(+), 196 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/69d0f1a3/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java
b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java
index f6449e2..92f95c9 100644
--- a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java
+++ b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java
@@ -132,137 +132,147 @@ public class SliderAppsViewControllerImpl implements SliderAppsViewController
{
         }
         AmbariHttpClient ambariClient = new AmbariHttpClient(ambariUrl,
             ambariUsername, ambariPassword);
-        AmbariClusterInfo clusterInfo = ambariClient.getClusterInfo();
-        if (clusterName.equals(clusterInfo.getName())) {
-          AmbariCluster cluster = ambariClient.getCluster(clusterInfo);
-          AmbariServiceInfo hdfsServiceInfo = null;
-          AmbariServiceInfo yarnServiceInfo = null;
-          // Validate stack-version
-          Validation validateStackVersion = validateStackVersion(clusterInfo.getVersion());
-          if (validateStackVersion != null) {
-            status.getValidations().add(validateStackVersion);
-          }
-          for (AmbariServiceInfo svc : cluster.getServices()) {
-            if ("HDFS".equals(svc.getId())) {
-              hdfsServiceInfo = svc;
-            } else if ("YARN".equals(svc.getId())) {
-              yarnServiceInfo = svc;
+        try {
+          AmbariClusterInfo clusterInfo = ambariClient.getClusterInfo();
+          if (clusterName.equals(clusterInfo.getName())) {
+            AmbariCluster cluster = ambariClient.getCluster(clusterInfo);
+            AmbariServiceInfo hdfsServiceInfo = null;
+            AmbariServiceInfo yarnServiceInfo = null;
+            // Validate stack-version
+            Validation validateStackVersion = validateStackVersion(clusterInfo.getVersion());
+            if (validateStackVersion != null) {
+              status.getValidations().add(validateStackVersion);
             }
-          }
-          // HDFS
-          if (hdfsServiceInfo != null) {
-            if (!hdfsServiceInfo.isStarted()) {
+            for (AmbariServiceInfo svc : cluster.getServices()) {
+              if ("HDFS".equals(svc.getId())) {
+                hdfsServiceInfo = svc;
+              } else if ("YARN".equals(svc.getId())) {
+                yarnServiceInfo = svc;
+              }
+            }
+            // HDFS
+            if (hdfsServiceInfo != null) {
+              if (!hdfsServiceInfo.isStarted()) {
+                status.getValidations().add(
+                    new ViewStatus.Validation("HDFS service is not started"));
+              }
+            } else {
               status.getValidations().add(
-                  new ViewStatus.Validation("HDFS service is not started"));
+                  new ViewStatus.Validation("HDFS service is not installed"));
             }
-          } else {
-            status.getValidations().add(
-                new ViewStatus.Validation("HDFS service is not installed"));
-          }
-          // YARN
-          if (yarnServiceInfo != null) {
-            if (!yarnServiceInfo.isStarted()) {
+            // YARN
+            if (yarnServiceInfo != null) {
+              if (!yarnServiceInfo.isStarted()) {
+                status.getValidations().add(
+                    new ViewStatus.Validation("YARN service is not started"));
+              }
+            } else {
               status.getValidations().add(
-                  new ViewStatus.Validation("YARN service is not started"));
+                  new ViewStatus.Validation("YARN service is not installed"));
             }
-          } else {
-            status.getValidations().add(
-                new ViewStatus.Validation("YARN service is not installed"));
-          }
-          // Configs
-          if (cluster.getDesiredConfigs().containsKey("core-site")) {
-            Map<String, String> coreSiteConfigs = ambariClient
-                .getConfiguration(cluster, "core-site", cluster
-                    .getDesiredConfigs().get("core-site"));
-            newHadoopConfigs.putAll(coreSiteConfigs);
-          }
-          if (cluster.getDesiredConfigs().containsKey("cluster-env")) {
-            Map<String, String> clusterEnvConfigs = ambariClient
-                .getConfiguration(cluster, "cluster-env", cluster
-                    .getDesiredConfigs().get("cluster-env"));
-            newHadoopConfigs.put("security_enabled",
-                clusterEnvConfigs.get("security_enabled"));
-          }
-          if (cluster.getDesiredConfigs().containsKey("hdfs-site")) {
-            Map<String, String> hdfsSiteConfigs = ambariClient
-                .getConfiguration(cluster, "hdfs-site", cluster
-                    .getDesiredConfigs().get("hdfs-site"));
-            newHadoopConfigs.putAll(hdfsSiteConfigs);
-          }
-          if (cluster.getDesiredConfigs().containsKey("yarn-site")) {
-            Map<String, String> yarnSiteConfigs = ambariClient
-                .getConfiguration(cluster, "yarn-site", cluster
-                    .getDesiredConfigs().get("yarn-site"));
-            newHadoopConfigs.putAll(yarnSiteConfigs);
-            status.getParameters().put(PROPERTY_YARN_RM_WEBAPP_URL,
-                newHadoopConfigs.get("yarn.resourcemanager.webapp.address"));
-          }
-          if (cluster.getDesiredConfigs().containsKey("yarn-env")) {
-            Map<String, String> yarnEnvConfigs = ambariClient.getConfiguration(cluster,
"yarn-env", cluster
-                .getDesiredConfigs().get("yarn-env"));
-            String yarnUser = yarnEnvConfigs.get("yarn_user");
-            if (yarnUser == null || yarnUser.trim().length() < 1) {
-              yarnUser = "yarn";
+            // JAVA_HOME
+            Map<String, String> ambariServerConfigs = ambariClient.getAmbariServerConfigs();
+            if (ambariServerConfigs.containsKey("java.home")) {
+              newHadoopConfigs.put("java.home", ambariServerConfigs.get("java.home"));
             }
-            newHadoopConfigs.put("yarn_user", yarnUser);
-          }
-          if (cluster.getDesiredConfigs().containsKey("zookeeper-env")) {
-            Map<String, String> zkEnvConfigs = ambariClient.getConfiguration(
-                cluster, "zookeeper-env",
-                cluster.getDesiredConfigs().get("zookeeper-env"));
-            StringBuilder zkQuorumBuilder = new StringBuilder();
-            String port = zkEnvConfigs.get("clientPort");
-            AmbariService zkService = ambariClient.getService(cluster,
-                "ZOOKEEPER");
-            if (zkService != null) {
-              List<AmbariHostComponent> hostsList = zkService
-                  .getComponentsToHostComponentsMap().get("ZOOKEEPER_SERVER");
-              int count = 1;
-              for (AmbariHostComponent host : hostsList) {
-                zkQuorumBuilder.append(host.getHostName() + ":" + port);
-                if (count++ < hostsList.size()) {
-                  zkQuorumBuilder.append(",");
+            // Configs
+            if (cluster.getDesiredConfigs().containsKey("core-site")) {
+              Map<String, String> coreSiteConfigs = ambariClient
+                  .getConfiguration(cluster, "core-site", cluster
+                      .getDesiredConfigs().get("core-site"));
+              newHadoopConfigs.putAll(coreSiteConfigs);
+            }
+            if (cluster.getDesiredConfigs().containsKey("cluster-env")) {
+              Map<String, String> clusterEnvConfigs = ambariClient
+                  .getConfiguration(cluster, "cluster-env", cluster
+                      .getDesiredConfigs().get("cluster-env"));
+              newHadoopConfigs.put("security_enabled",
+                  clusterEnvConfigs.get("security_enabled"));
+            }
+            if (cluster.getDesiredConfigs().containsKey("hdfs-site")) {
+              Map<String, String> hdfsSiteConfigs = ambariClient
+                  .getConfiguration(cluster, "hdfs-site", cluster
+                      .getDesiredConfigs().get("hdfs-site"));
+              newHadoopConfigs.putAll(hdfsSiteConfigs);
+            }
+            if (cluster.getDesiredConfigs().containsKey("yarn-site")) {
+              Map<String, String> yarnSiteConfigs = ambariClient
+                  .getConfiguration(cluster, "yarn-site", cluster
+                      .getDesiredConfigs().get("yarn-site"));
+              newHadoopConfigs.putAll(yarnSiteConfigs);
+              status.getParameters().put(PROPERTY_YARN_RM_WEBAPP_URL,
+                  newHadoopConfigs.get("yarn.resourcemanager.webapp.address"));
+            }
+            if (cluster.getDesiredConfigs().containsKey("yarn-env")) {
+              Map<String, String> yarnEnvConfigs = ambariClient.getConfiguration(cluster,
"yarn-env", cluster
+                  .getDesiredConfigs().get("yarn-env"));
+              String yarnUser = yarnEnvConfigs.get("yarn_user");
+              if (yarnUser == null || yarnUser.trim().length() < 1) {
+                yarnUser = "yarn";
+              }
+              newHadoopConfigs.put("yarn_user", yarnUser);
+            }
+            if (cluster.getDesiredConfigs().containsKey("zookeeper-env")) {
+              Map<String, String> zkEnvConfigs = ambariClient.getConfiguration(
+                  cluster, "zookeeper-env",
+                  cluster.getDesiredConfigs().get("zookeeper-env"));
+              StringBuilder zkQuorumBuilder = new StringBuilder();
+              String port = zkEnvConfigs.get("clientPort");
+              AmbariService zkService = ambariClient.getService(cluster,
+                  "ZOOKEEPER");
+              if (zkService != null) {
+                List<AmbariHostComponent> hostsList = zkService
+                    .getComponentsToHostComponentsMap().get("ZOOKEEPER_SERVER");
+                int count = 1;
+                for (AmbariHostComponent host : hostsList) {
+                  zkQuorumBuilder.append(host.getHostName() + ":" + port);
+                  if (count++ < hostsList.size()) {
+                    zkQuorumBuilder.append(",");
+                  }
                 }
+                newHadoopConfigs.put(PROPERTY_SLIDER_ZK_QUORUM,
+                    zkQuorumBuilder.toString());
+              } else {
+                status.getValidations().add(
+                    new ViewStatus.Validation(
+                        "ZooKeeper service is not installed"));
               }
-              newHadoopConfigs.put(PROPERTY_SLIDER_ZK_QUORUM,
-                  zkQuorumBuilder.toString());
             } else {
-              status.getValidations().add(
+              status.getValidations()
+              .add(
                   new ViewStatus.Validation(
                       "ZooKeeper service is not installed"));
             }
-          } else {
-            status.getValidations()
-                .add(
-                    new ViewStatus.Validation(
-                        "ZooKeeper service is not installed"));
-          }
-          if (cluster.getDesiredConfigs().containsKey("ganglia-env")) {
-            Map<String, String> gangliaConfigs = ambariClient.getConfiguration(
-                cluster, "ganglia-env",
-                cluster.getDesiredConfigs().get("ganglia-env"));
-            String clustersCsv = gangliaConfigs.get("additional_clusters");
-            AmbariService gangliaService = ambariClient.getService(cluster,
-                "GANGLIA");
-            List<AmbariHostComponent> hostsList = gangliaService
-                .getComponentsToHostComponentsMap().get("GANGLIA_SERVER");
-            if (hostsList != null && hostsList.size() > 0) {
-              String gangliaHostName = hostsList
-                  .get(0).getHostName();
-              newHadoopConfigs.put(PROPERTY_GANGLIA_SERVER_HOSTNAME, gangliaHostName);
-              status.getParameters().put(PROPERTY_GANGLIA_SERVER_HOSTNAME, gangliaHostName);
+            if (cluster.getDesiredConfigs().containsKey("ganglia-env")) {
+              Map<String, String> gangliaConfigs = ambariClient.getConfiguration(
+                  cluster, "ganglia-env",
+                  cluster.getDesiredConfigs().get("ganglia-env"));
+              String clustersCsv = gangliaConfigs.get("additional_clusters");
+              AmbariService gangliaService = ambariClient.getService(cluster,
+                  "GANGLIA");
+              List<AmbariHostComponent> hostsList = gangliaService
+                  .getComponentsToHostComponentsMap().get("GANGLIA_SERVER");
+              if (hostsList != null && hostsList.size() > 0) {
+                String gangliaHostName = hostsList
+                    .get(0).getHostName();
+                newHadoopConfigs.put(PROPERTY_GANGLIA_SERVER_HOSTNAME, gangliaHostName);
+                status.getParameters().put(PROPERTY_GANGLIA_SERVER_HOSTNAME, gangliaHostName);
+              }
+              newHadoopConfigs.put(PROPERTY_GANGLIA_CUSTOM_CLUSTERS, clustersCsv);
+              status.getParameters().put(PROPERTY_GANGLIA_CUSTOM_CLUSTERS, clustersCsv);
             }
-            newHadoopConfigs.put(PROPERTY_GANGLIA_CUSTOM_CLUSTERS, clustersCsv);
-            status.getParameters().put(PROPERTY_GANGLIA_CUSTOM_CLUSTERS, clustersCsv);
-          }
-          Validation validateHDFSAccess = validateHDFSAccess(newHadoopConfigs, hdfsServiceInfo);
-          if (validateHDFSAccess != null) {
-            status.getValidations().add(validateHDFSAccess);
+            Validation validateHDFSAccess = validateHDFSAccess(newHadoopConfigs, hdfsServiceInfo);
+            if (validateHDFSAccess != null) {
+              status.getValidations().add(validateHDFSAccess);
+            }
+          } else {
+            status.getValidations().add(
+                new ViewStatus.Validation("Ambari cluster with ID ["
+                    + clusterName + "] was not found on Ambari server"));
           }
-        } else {
-          status.getValidations().add(
-              new ViewStatus.Validation("Ambari cluster with ID ["
-                  + clusterName + "] was not found on Ambari server"));
+        } catch (Throwable t) {
+          logger.warn("Exception determining view status", t);
+          status.getValidations().add(new ViewStatus.Validation(t.getMessage()));
         }
       } else {
         status
@@ -276,13 +286,15 @@ public class SliderAppsViewControllerImpl implements SliderAppsViewController
{
           new ViewStatus.Validation(
               "View parameters specifying Ambari details required"));
     }
-    Set<String> removeKeys = new HashSet<String>(viewContext.getInstanceData().keySet());
-    for (Entry<String, String> e : newHadoopConfigs.entrySet()) {
-      viewContext.putInstanceData(e.getKey(), e.getValue());
-      removeKeys.remove(e.getKey());
-    }
-    for (String key : removeKeys) {
-      viewContext.removeInstanceData(key);
+    if (!newHadoopConfigs.equals(viewContext.getInstanceData())) {
+      Set<String> removeKeys = new HashSet<String>(viewContext.getInstanceData().keySet());
+      for (Entry<String, String> e : newHadoopConfigs.entrySet()) {
+        viewContext.putInstanceData(e.getKey(), e.getValue());
+        removeKeys.remove(e.getKey());
+      }
+      for (String key : removeKeys) {
+        viewContext.removeInstanceData(key);
+      }
     }
     return status;
   }
@@ -772,7 +784,7 @@ public class SliderAppsViewControllerImpl implements SliderAppsViewController
{
   }
 
   protected Map<String, String> getHadoopConfigs() {
-    if(hadoopConfigs==null) {
+    if(hadoopConfigs==null || hadoopConfigs.isEmpty()) {
       hadoopConfigs = viewContext.getInstanceData();
     }
     return hadoopConfigs;
@@ -950,12 +962,14 @@ public class SliderAppsViewControllerImpl implements SliderAppsViewController
{
                   JsonElement componentJson = resourcesJson.getAsJsonObject()
                       .get("components").getAsJsonObject()
                       .get(component.getName());
-                  if (componentJson != null
-                      && componentJson.getAsJsonObject().has(
-                          "yarn.role.priority")) {
-                    appTypeComponent.setPriority(Integer.parseInt(componentJson
-                        .getAsJsonObject().get("yarn.role.priority")
-                        .getAsString()));
+                  if (componentJson != null && componentJson.isJsonObject()) {
+                    JsonObject componentObj = componentJson.getAsJsonObject();
+                    if (componentObj.has("yarn.role.priority")) {
+                      appTypeComponent.setPriority(Integer.parseInt(componentObj.get("yarn.role.priority").getAsString()));
+                    }
+                    if (componentObj.has("yarn.memory")) {
+                      appTypeComponent.setYarnMemory(Integer.parseInt(componentObj.get("yarn.memory").getAsString()));
+                    }
                   }
                 }
                 appTypeComponent.setCategory(component.getCategory());

http://git-wip-us.apache.org/repos/asf/ambari/blob/69d0f1a3/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/AmbariHttpClient.java
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/AmbariHttpClient.java
b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/AmbariHttpClient.java
index 6229f0d..1449360 100644
--- a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/AmbariHttpClient.java
+++ b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/AmbariHttpClient.java
@@ -19,10 +19,12 @@
 package org.apache.ambari.view.slider.rest.client;
 
 import java.io.IOException;
+import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 
 import org.apache.ambari.view.slider.clients.AmbariClient;
 import org.apache.ambari.view.slider.clients.AmbariCluster;
@@ -32,11 +34,14 @@ import org.apache.ambari.view.slider.clients.AmbariHostInfo;
 import org.apache.ambari.view.slider.clients.AmbariService;
 import org.apache.ambari.view.slider.clients.AmbariServiceInfo;
 import org.apache.commons.httpclient.HttpException;
+import org.apache.commons.httpclient.HttpStatus;
 import org.apache.log4j.Logger;
 
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.google.gson.stream.JsonReader;
 
 public class AmbariHttpClient extends BaseHttpClient implements AmbariClient {
 
@@ -45,34 +50,77 @@ public class AmbariHttpClient extends BaseHttpClient implements AmbariClient
{
 	public AmbariHttpClient(String url, String userId, String password) {
 		super(url, userId, password);
 	}
+	
+    @SuppressWarnings("deprecation")
+    private RuntimeException createRuntimeException(HttpException httpException) {
+      String message = httpException.getMessage();
+      try {
+        JsonElement jsonElement = new JsonParser().parse(new JsonReader(new StringReader(httpException.getMessage())));
+        if (jsonElement != null && jsonElement.getAsJsonObject().has("message"))
{
+          message = jsonElement.getAsJsonObject().get("message").getAsString();
+        }
+      } catch (Throwable t) {
+      }
+      if (httpException.getReasonCode() != HttpStatus.SC_OK) {
+        message = httpException.getReasonCode() + " " + httpException.getReason() + ": "
+ message;
+      }
+      return new RuntimeException(message, httpException);
+    }
 
-	/**
-	 * Provides the first cluster defined on this Ambari server.
-	 * 
-	 * @return
-	 */
-	public AmbariClusterInfo getClusterInfo() {
-		try {
-			JsonElement jsonElement = doGetJson("/api/v1/clusters");
-			JsonObject jsonObject = jsonElement.getAsJsonObject();
-			JsonArray clustersArray = jsonObject.get("items").getAsJsonArray();
-			if (clustersArray.size() > 0) {
-				AmbariClusterInfo cluster = new AmbariClusterInfo();
-				JsonObject clusterObj = clustersArray.get(0).getAsJsonObject()
-				    .get("Clusters").getAsJsonObject();
-				cluster.setName(clusterObj.get("cluster_name").getAsString());
-				cluster.setVersion(clusterObj.get("version").getAsString());
-				return cluster;
-			}
-		} catch (HttpException e) {
-			logger.warn("Unable to determine Ambari clusters", e);
-			throw new RuntimeException(e.getMessage(), e);
-		} catch (IOException e) {
-			logger.warn("Unable to determine Ambari clusters", e);
-			throw new RuntimeException(e.getMessage(), e);
-		}
-		return null;
-	}
+    /**
+     * Provides the first cluster defined on this Ambari server.
+     * 
+     * @return
+     */
+    public AmbariClusterInfo getClusterInfo() {
+        try {
+            JsonElement jsonElement = doGetJson("/api/v1/clusters");
+            if(jsonElement==null) {
+              return null;
+            }
+            JsonObject jsonObject = jsonElement.getAsJsonObject();
+            JsonArray clustersArray = jsonObject.get("items").getAsJsonArray();
+            if (clustersArray.size() > 0) {
+                AmbariClusterInfo cluster = new AmbariClusterInfo();
+                JsonObject clusterObj = clustersArray.get(0).getAsJsonObject()
+                    .get("Clusters").getAsJsonObject();
+                cluster.setName(clusterObj.get("cluster_name").getAsString());
+                cluster.setVersion(clusterObj.get("version").getAsString());
+                return cluster;
+            }
+        } catch (HttpException e) {
+            logger.warn("Unable to determine Ambari clusters", e);
+            throw createRuntimeException(e);
+        } catch (IOException e) {
+            logger.warn("Unable to determine Ambari clusters", e);
+            throw new RuntimeException(e.getMessage(), e);
+        }
+        return null;
+    }
+
+    /**
+     * Provides the first cluster defined on this Ambari server.
+     * 
+     * @return
+     */
+    public Map<String, String> getAmbariServerConfigs() {
+      Map<String, String> configs = new HashMap<String, String>();
+      try {
+        JsonElement jsonElement = doGetJson("/api/v1/services/AMBARI/components/AMBARI_SERVER");
+        if (jsonElement != null && jsonElement.getAsJsonObject().has("RootServiceComponents")
+            && jsonElement.getAsJsonObject().get("RootServiceComponents").getAsJsonObject().has("properties"))
{
+          JsonObject ambariProperties = jsonElement.getAsJsonObject().get("RootServiceComponents").getAsJsonObject().get("properties").getAsJsonObject();
+          for (Entry<String, JsonElement> entry : ambariProperties.entrySet()) {
+            configs.put(entry.getKey(), entry.getValue().getAsString());
+          }
+        }
+      } catch (HttpException e) {
+        logger.warn("Unable to determine Ambari clusters", e);
+      } catch (IOException e) {
+        logger.warn("Unable to determine Ambari clusters", e);
+      }
+      return configs;
+    }
 
 	public AmbariCluster getCluster(AmbariClusterInfo clusterInfo) {
 		if (clusterInfo != null) {
@@ -120,10 +168,14 @@ public class AmbariHttpClient extends BaseHttpClient implements AmbariClient
{
 					cluster.setHosts(hosts);
 					return cluster;
 				}
+			} catch (IllegalStateException e) {
+			  logger.warn("Unable to determine Ambari cluster details - "
+			      + clusterInfo.getName(), e);
+			  throw new RuntimeException(e.getMessage(), e);
 			} catch (HttpException e) {
 				logger.warn("Unable to determine Ambari cluster details - "
 				    + clusterInfo.getName(), e);
-				throw new RuntimeException(e.getMessage(), e);
+				throw createRuntimeException(e);
 			} catch (IOException e) {
 				logger.warn("Unable to determine Ambari cluster details - "
 				    + clusterInfo.getName(), e);
@@ -140,20 +192,22 @@ public class AmbariHttpClient extends BaseHttpClient implements AmbariClient
{
 				JsonElement jsonElement = doGetJson("/api/v1/clusters/"
 				    + cluster.getName() + "/configurations?type=" + configType
 				    + "&tag=" + configTag);
-				JsonObject jsonObject = jsonElement.getAsJsonObject();
-				JsonArray configsArray = jsonObject.get("items").getAsJsonArray();
-				if (configsArray.size() > 0) {
-					JsonObject propertiesObj = configsArray.get(0).getAsJsonObject()
-					    .get("properties").getAsJsonObject();
-					Map<String, String> properties = new HashMap<String, String>();
-					for (Map.Entry<String, JsonElement> entry : propertiesObj.entrySet()) {
-						properties.put(entry.getKey(), entry.getValue().getAsString());
-					}
-					return properties;
+				if (jsonElement!=null) {
+				  JsonObject jsonObject = jsonElement.getAsJsonObject();
+				  JsonArray configsArray = jsonObject.get("items").getAsJsonArray();
+				  if (configsArray.size() > 0) {
+				    JsonObject propertiesObj = configsArray.get(0).getAsJsonObject()
+				        .get("properties").getAsJsonObject();
+				    Map<String, String> properties = new HashMap<String, String>();
+				    for (Map.Entry<String, JsonElement> entry : propertiesObj.entrySet()) {
+				      properties.put(entry.getKey(), entry.getValue().getAsString());
+				    }
+				    return properties;
+				  }
 				}
 			} catch (HttpException e) {
 				logger.warn("Unable to determine Ambari clusters", e);
-				throw new RuntimeException(e.getMessage(), e);
+				throw createRuntimeException(e);
 			} catch (IOException e) {
 				logger.warn("Unable to determine Ambari clusters", e);
 				throw new RuntimeException(e.getMessage(), e);
@@ -168,10 +222,10 @@ public class AmbariHttpClient extends BaseHttpClient implements AmbariClient
{
         try {
             JsonElement jsonElement = doGetJson("/api/v1/clusters/"
                 + cluster.getName() + "/services/" + serviceId + "?fields=ServiceInfo,components/host_components/HostRoles");
-            JsonObject jsonObject = jsonElement.getAsJsonObject();
-            if (jsonObject.has("status") && "404".equals(jsonObject.get("status").getAsString()))
{
+            if (jsonElement == null) {
               return null;
             }
+            JsonObject jsonObject = jsonElement.getAsJsonObject();
             AmbariService svc = new AmbariService();
             JsonObject serviceInfoJsonObject = jsonObject.get("ServiceInfo").getAsJsonObject();
             svc.setId(serviceInfoJsonObject.get("service_name").getAsString());
@@ -196,7 +250,7 @@ public class AmbariHttpClient extends BaseHttpClient implements AmbariClient
{
             return svc;
         } catch (HttpException e) {
             logger.warn("Unable to determine Ambari clusters", e);
-            throw new RuntimeException(e.getMessage(), e);
+            throw createRuntimeException(e);
         } catch (IOException e) {
             logger.warn("Unable to determine Ambari clusters", e);
             throw new RuntimeException(e.getMessage(), e);

http://git-wip-us.apache.org/repos/asf/ambari/blob/69d0f1a3/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/BaseHttpClient.java
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/BaseHttpClient.java
b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/BaseHttpClient.java
index 70778af..bb2787b 100644
--- a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/BaseHttpClient.java
+++ b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/BaseHttpClient.java
@@ -88,22 +88,26 @@ public class BaseHttpClient {
 		return doGetJson(getUrl(), path);
 	}
 
-	public JsonElement doGetJson(String url, String path) throws HttpException,
+	@SuppressWarnings("deprecation")
+    public JsonElement doGetJson(String url, String path) throws HttpException,
 	    IOException {
 		GetMethod get = new GetMethod(url + path);
 		if (isNeedsAuthentication()) {
 			get.setDoAuthentication(true);
 		}
 		int executeMethod = getHttpClient().executeMethod(get);
-		switch (executeMethod) {
-		case HttpStatus.SC_OK:
-			JsonElement jsonElement = new JsonParser().parse(new JsonReader(
-			    new InputStreamReader(get.getResponseBodyAsStream())));
-			return jsonElement;
-		default:
-			break;
-		}
-		return null;
+        switch (executeMethod) {
+        case HttpStatus.SC_OK:
+          JsonElement jsonElement = new JsonParser().parse(new JsonReader(new InputStreamReader(get.getResponseBodyAsStream())));
+          return jsonElement;
+        case HttpStatus.SC_NOT_FOUND:
+          return null;
+        default:
+          HttpException httpException = new HttpException(get.getResponseBodyAsString());
+          httpException.setReason(HttpStatus.getStatusText(executeMethod));
+          httpException.setReasonCode(executeMethod);
+          throw httpException;
+        }
 	}
 
 	public String doGet(String path) throws HttpException, IOException {

http://git-wip-us.apache.org/repos/asf/ambari/blob/69d0f1a3/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java
b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java
index fc8f0d7..a96cc12 100644
--- a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java
+++ b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java
@@ -63,13 +63,13 @@ public class SliderAppMasterClient extends BaseHttpClient {
           String[] splits = content.split("\r\n");
           for (int i = 0; i < splits.length; i++) {
             String split = splits[i].trim();
-            if ("Registry Web Service".equals(split)) {
+            if ("org.apache.slider.registry".equals(split)) {
               data.registryUrl = splits[i + 1].trim();
-            } else if ("Application Master Web UI".equals(split)) {
+            } else if ("org.apache.http.UI".equals(split)) {
               data.uiUrl = splits[i + 1].trim();
-            } else if ("Management REST API".equals(split)) {
+            } else if ("org.apache.slider.management".equals(split)) {
               data.managementUrl = splits[i + 1].trim();
-            } else if ("Publisher Service".equals(split)) {
+            } else if ("org.apache.slider.publisher".equals(split)) {
               data.publisherUrl = splits[i + 1].trim();
             }
           }
@@ -87,9 +87,12 @@ public class SliderAppMasterClient extends BaseHttpClient {
   }
 
   public Map<String, String> getQuickLinks(String providerUrl) {
+    Map<String, String> quickLinks = new HashMap<String, String>();
     try {
+      if (providerUrl == null || providerUrl.trim().length() < 1) {
+        return quickLinks;
+      }
       JsonElement json = super.doGetJson(providerUrl, "/slider/quicklinks");
-      Map<String, String> quickLinks = new HashMap<String, String>();
       if (json != null && json.getAsJsonObject() != null
           && json.getAsJsonObject().has("entries")) {
         JsonObject jsonObject = json.getAsJsonObject().get("entries")
@@ -99,26 +102,29 @@ public class SliderAppMasterClient extends BaseHttpClient {
             quickLinks.put("JMX", entry.getValue().getAsString());
           } else if ("org.apache.slider.monitor".equals(entry.getKey())) {
             quickLinks.put("UI", entry.getValue().getAsString());
+          } else if ("org.apache.slider.metrics.ui".equals(entry.getKey())) {
+            quickLinks.put("Metrics UI", entry.getValue().getAsString());
           } else if ("org.apache.slider.metrics".equals(entry.getKey())) {
-            quickLinks.put("Metrics", entry.getValue().getAsString());
+            quickLinks.put("Metrics API", entry.getValue().getAsString());
           } else {
             quickLinks.put(entry.getKey(), entry.getValue().getAsString());
           }
         }
       }
-      return quickLinks;
     } catch (HttpException e) {
       logger.warn("Unable to determine quicklinks from " + providerUrl, e);
-      throw new RuntimeException(e.getMessage(), e);
     } catch (IOException e) {
       logger.warn("Unable to determine quicklinks from " + providerUrl, e);
-      throw new RuntimeException(e.getMessage(), e);
     }
+    return quickLinks;
   }
 
   public Map<String, Map<String, String>> getConfigs(String providerUrl) {
+    Map<String, Map<String, String>> configsMap = new HashMap<String, Map<String,
String>>();
     try {
-      Map<String, Map<String, String>> configsMap = new HashMap<String, Map<String,
String>>();
+      if (providerUrl == null || providerUrl.trim().length() < 1) {
+        return configsMap;
+      }
       JsonElement json = super.doGetJson(providerUrl, "/slider");
       if (json != null) {
         JsonObject configsJson = json.getAsJsonObject().get("configurations")
@@ -143,14 +149,12 @@ public class SliderAppMasterClient extends BaseHttpClient {
           }
         }
       }
-      return configsMap;
     } catch (HttpException e) {
       logger.warn("Unable to determine quicklinks from " + providerUrl, e);
-      throw new RuntimeException(e.getMessage(), e);
     } catch (IOException e) {
       logger.warn("Unable to determine quicklinks from " + providerUrl, e);
-      throw new RuntimeException(e.getMessage(), e);
     }
+    return configsMap;
   }
 
   public Map<String, Number[][]> getGangliaMetrics(String gangliaUrl,


Mime
View raw message