AMBARI-7252. Decouple Slider View from ambari-server dependency (srimanth)

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

Branch: refs/heads/branch-alerts-dev
Commit: 11146fb67456a40aeab9fc3f3e6973fd3cf9facd
Parents: 475d458
Author: Srimanth Gunturi <sgunt...@hortonworks.com>
Authored: Wed Sep 10 12:25:28 2014 -0700
Committer: Srimanth Gunturi <sgunt...@hortonworks.com>
Committed: Wed Sep 10 13:02:19 2014 -0700

----------------------------------------------------------------------
 contrib/views/slider/pom.xml                    |   8 -
 .../view/slider/SliderAppsViewController.java   |   5 +
 .../slider/SliderAppsViewControllerImpl.java    | 262 +++++------------
 .../apache/ambari/view/slider/ViewStatus.java   |  33 +--
 .../view/slider/clients/AmbariClient.java       |   3 -
 .../slider/clients/AmbariInternalClient.java    | 292 -------------------
 .../slider/rest/client/JMXMetricHolder.java     |  50 ++++
 .../slider/rest/client/SliderAppJmxHelper.java  |   1 -
 .../app/controllers/slider_apps_controller.js   |   8 +-
 .../src/main/resources/ui/app/initialize.js     |  19 +-
 .../views/slider/src/main/resources/view.xml    |  23 +-
 11 files changed, 174 insertions(+), 530 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/11146fb6/contrib/views/slider/pom.xml
----------------------------------------------------------------------
diff --git a/contrib/views/slider/pom.xml b/contrib/views/slider/pom.xml
index 31a7c7e..ec4089f 100644
--- a/contrib/views/slider/pom.xml
+++ b/contrib/views/slider/pom.xml
@@ -105,12 +105,6 @@
                        <artifactId>gson</artifactId>
                        <version>2.2.2</version>
                </dependency>
-               <dependency>
-                       <groupId>org.apache.ambari</groupId>
-                       <artifactId>ambari-server</artifactId>
-                       <version>${ambari.version}</version>
-                       <scope>provided</scope>
-               </dependency>
 
                <!-- 
==================================================================== -->
                <!-- Slider Dependencies (to be removed when Slider has Maven 
repository) -->
@@ -398,8 +392,6 @@
                <nodejs.directory>${basedir}/target/nodejs</nodejs.directory>
                <npm.version>1.4.3</npm.version>
                <ui.directory>${basedir}/src/main/resources/ui</ui.directory>
-               <!-- deprecated, moved to top component -->
-               <!-- <ambari.version>1.3.0-SNAPSHOT</ambari.version> -->
                <hadoop.version>2.6.0-SNAPSHOT</hadoop.version>
                <avro.version>1.7.4</avro.version>
                <bigtop.version>0.7.0</bigtop.version>

http://git-wip-us.apache.org/repos/asf/ambari/blob/11146fb6/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewController.java
----------------------------------------------------------------------
diff --git 
a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewController.java
 
b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewController.java
index 823fea6..70e333f 100644
--- 
a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewController.java
+++ 
b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewController.java
@@ -30,6 +30,11 @@ import com.google.inject.ImplementedBy;
 @ImplementedBy(SliderAppsViewControllerImpl.class)
 public interface SliderAppsViewController {
 
+  public static final String PROPERTY_HDFS_ADDRESS = "hdfs.address";
+  public static final String PROPERTY_YARN_RM_ADDRESS = 
"yarn.resourcemanager.address";
+  public static final String PROPERTY_YARN_RM_SCHEDULER_ADDRESS = 
"yarn.resourcemanager.scheduler.address";
+  public static final String PROPERTY_ZK_QUOROM = "zookeeper.quorum";
+
   public ViewStatus getViewStatus();
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/11146fb6/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 6b3b3f5..f17b66d 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
@@ -35,12 +35,6 @@ import java.util.Set;
 import java.util.zip.ZipException;
 
 import org.apache.ambari.view.ViewContext;
-import org.apache.ambari.view.slider.clients.AmbariClient;
-import org.apache.ambari.view.slider.clients.AmbariCluster;
-import org.apache.ambari.view.slider.clients.AmbariClusterInfo;
-import org.apache.ambari.view.slider.clients.AmbariHostComponent;
-import org.apache.ambari.view.slider.clients.AmbariService;
-import org.apache.ambari.view.slider.clients.AmbariServiceInfo;
 import org.apache.ambari.view.slider.rest.client.Metric;
 import org.apache.ambari.view.slider.rest.client.SliderAppMasterClient;
 import 
org.apache.ambari.view.slider.rest.client.SliderAppMasterClient.SliderAppMasterData;
@@ -90,15 +84,11 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
       .getLogger(SliderAppsViewControllerImpl.class);
   @Inject
   private ViewContext viewContext;
-  @Inject
-  private AmbariClient ambariClient;
   private List<SliderAppType> appTypes;
   private Integer createAppCounter = -1;
 
   private String getAppsFolderPath() {
-    return viewContext
-               
.getAmbariProperty(org.apache.ambari.server.configuration.Configuration.RESOURCES_DIR_KEY)
-           + "/apps";
+    return viewContext.getAmbariProperty("resources.dir") + "/apps";
   }
 
   private String getAppsCreateFolderPath() {
@@ -108,91 +98,13 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
   @Override
   public ViewStatus getViewStatus() {
     ViewStatus status = new ViewStatus();
-    List<String> viewErrors = new ArrayList<String>();
-
-    AmbariClusterInfo clusterInfo = ambariClient.getClusterInfo();
-    if (clusterInfo != null) {
-      AmbariCluster cluster = ambariClient.getCluster(clusterInfo);
-      List<AmbariServiceInfo> services = cluster.getServices();
-      if (services != null && !services.isEmpty()) {
-        AmbariServiceInfo hdfsService = null, yarnService = null, zkService = 
null;
-        for (AmbariServiceInfo service : services) {
-          if ("HDFS".equals(service.getId())) {
-            hdfsService = service;
-          } else if ("YARN".equals(service.getId())) {
-            yarnService = service;
-          } else if ("ZOOKEEPER".equals(service.getId())) {
-            zkService = service;
-          }
-        }
-        if (hdfsService == null) {
-          viewErrors.add("Slider applications view requires HDFS service");
-        } else {
-          if (!hdfsService.isStarted()) {
-            viewErrors
-                .add("Slider applications view requires HDFS service to be 
started");
-          }
-        }
-        if (yarnService == null) {
-          viewErrors.add("Slider applications view requires YARN service");
-        } else {
-          if (!yarnService.isStarted()) {
-            viewErrors
-                .add("Slider applications view requires YARN service to be 
started");
-          }
-        }
-        if (zkService == null) {
-          viewErrors.add("Slider applications view requires ZooKeeper 
service");
-        } else {
-          if (!zkService.isStarted()) {
-            viewErrors
-                .add("Slider applications view requires ZooKeeper service to 
be started");
-          }
-        }
-      } else {
-        viewErrors
-            .add("Slider applications view is unable to locate any services");
-      }
-      // Check security
-      if (cluster.getDesiredConfigs() != null
-          && cluster.getDesiredConfigs().containsKey("hadoop-env")) {
-        Map<String, String> globalConfig = ambariClient.getConfiguration(
-            clusterInfo, "hadoop-env", 
cluster.getDesiredConfigs().get("hadoop-env"));
-        if (globalConfig != null
-            && globalConfig.containsKey("security_enabled")) {
-          String securityValue = globalConfig.get("security_enabled");
-          if (Boolean.valueOf(securityValue)) {
-            viewErrors
-                .add("Slider applications view cannot be rendered in secure 
mode");
-          }
-        } else {
-          viewErrors
-              .add("Slider applications view is unable to determine the 
security status of the cluster");
-        }
-      } else {
-        viewErrors
-            .add("Slider applications view is unable to determine the security 
status of the cluster");
-      }
-    } else {
-      viewErrors.add("Slider applications view requires a cluster");
-    }
     status.setVersion(SliderAppsConfiguration.INSTANCE.getVersion());
-    status.setViewEnabled(viewErrors.size() < 1);
-    status.setViewErrors(viewErrors);
     return status;
   }
 
-  private AmbariCluster getAmbariCluster() {
-    AmbariClusterInfo clusterInfo = ambariClient.getClusterInfo();
-    if (clusterInfo != null) {
-      return ambariClient.getCluster(clusterInfo);
-    }
-    return null;
-  }
-
   private String getApplicationIdString(ApplicationId appId) {
     return Long.toString(appId.getClusterTimestamp()) + "_"
-           + Integer.toString(appId.getId());
+        + Integer.toString(appId.getId());
   }
 
   private ApplicationId getApplicationId(String appIdString) {
@@ -228,7 +140,7 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
   }
 
   private SliderApp createSliderAppObject(ApplicationReport yarnApp,
-                                          Set<String> properties, SliderClient 
sliderClient) {
+      Set<String> properties, SliderClient sliderClient) {
     if (yarnApp == null) {
       return null;
     }
@@ -311,13 +223,17 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
                 List<SliderAppType> appTypes = getSliderAppTypes(null);
                 if (appTypes != null && appTypes.size() > 0) {
                   for (SliderAppType appType : appTypes) {
-                    logger.info("TYPE: " + appType.getTypeName() + "   " + 
app.getType());
-                    logger.info("VERSION: " + appType.getTypeVersion() + "   " 
+ app.getAppVersion());
-                    if ((appType.getTypeName() != null && 
appType.getTypeName().equalsIgnoreCase(app.getType())) &&
-                        (appType.getTypeVersion() != null
-                         && 
appType.getTypeVersion().equalsIgnoreCase(app.getAppVersion()))) {
+                    logger.info("TYPE: " + appType.getTypeName() + "   "
+                        + app.getType());
+                    logger.info("VERSION: " + appType.getTypeVersion() + "   "
+                        + app.getAppVersion());
+                    if ((appType.getTypeName() != null && appType.getTypeName()
+                        .equalsIgnoreCase(app.getType()))
+                        && (appType.getTypeVersion() != null && appType
+                            .getTypeVersion().equalsIgnoreCase(
+                                app.getAppVersion()))) {
                       app.setJmx(sliderAppClient.getJmx(jmxUrl, viewContext,
-                                                        appType));
+                          appType));
                       break;
                     }
                   }
@@ -336,10 +252,8 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
                   Map<String, SliderAppComponent> componentTypeMap = new 
HashMap<String, SliderAppComponent>();
                   for (Entry<String, Object> e : 
description.status.entrySet()) {
                     @SuppressWarnings("unchecked")
-                    Map<String, Map<String, Map<String, Object>>>
-                        componentsObj =
-                        (Map<String, Map<String, Map<String, Object>>>) e
-                            .getValue();
+                    Map<String, Map<String, Map<String, Object>>> 
componentsObj = (Map<String, Map<String, Map<String, Object>>>) e
+                        .getValue();
                     boolean isLive = "live".equals(e.getKey());
                     for (Entry<String, Map<String, Map<String, Object>>> 
componentEntry : componentsObj
                         .entrySet()) {
@@ -353,7 +267,7 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
                         appComponent
                             .setCompletedContainers(new HashMap<String, 
Map<String, String>>());
                         componentTypeMap.put(componentEntry.getKey(),
-                                             appComponent);
+                            appComponent);
                       }
                       for (Entry<String, Map<String, Object>> containerEntry : 
componentEntry
                           .getValue().entrySet()) {
@@ -366,19 +280,19 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
                           Object containerPropertyValue = containerValues
                               .get(containerProperty);
                           containerDataMap.put(containerProperty,
-                                               
containerPropertyValue.toString());
+                              containerPropertyValue.toString());
                         }
                         if (isLive) {
                           appComponent.getActiveContainers().put(containerId,
-                                                                 
containerDataMap);
+                              containerDataMap);
                         } else {
                           appComponent.getCompletedContainers().put(
                               containerId, containerDataMap);
                         }
                       }
                       appComponent.setInstanceCount(appComponent
-                                                        
.getActiveContainers().size()
-                                                    + 
appComponent.getCompletedContainers().size());
+                          .getActiveContainers().size()
+                          + appComponent.getCompletedContainers().size());
                     }
                   }
                   app.setComponents(componentTypeMap);
@@ -386,16 +300,16 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
               } catch (UnknownApplicationInstanceException e) {
                 logger.warn(
                     "Unable to determine app components for "
-                    + yarnApp.getName(), e);
+                        + yarnApp.getName(), e);
               } catch (YarnException e) {
                 logger.warn(
                     "Unable to determine app components for "
-                    + yarnApp.getName(), e);
+                        + yarnApp.getName(), e);
                 throw new RuntimeException(e.getMessage(), e);
               } catch (IOException e) {
                 logger.warn(
                     "Unable to determine app components for "
-                    + yarnApp.getName(), e);
+                        + yarnApp.getName(), e);
                 throw new RuntimeException(e.getMessage(), e);
               }
             }
@@ -407,9 +321,10 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
   }
 
   /**
-   * Creates a new {@link SliderClient} initialized with appropriate 
configuration. If configuration was not determined,
-   * <code>null</code> is returned.
-   *
+   * Creates a new {@link SliderClient} initialized with appropriate
+   * configuration. If configuration was not determined, <code>null</code> is
+   * returned.
+   * 
    * @return
    */
   protected SliderClient getSliderClient() {
@@ -426,7 +341,7 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
           super.serviceInit(conf);
           // Override the default FS client to set the super user.
           FileSystem fs = FileSystem.get(FileSystem.getDefaultUri(getConfig()),
-                                         getConfig(), "yarn");
+              getConfig(), "yarn");
           SliderFileSystem fileSystem = new SliderFileSystem(fs, getConfig());
           Field fsField = SliderClient.class
               .getDeclaredField("sliderFileSystem");
@@ -436,7 +351,7 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
       };
       try {
         sliderClientConfiguration = client.bindArgs(sliderClientConfiguration,
-                                                    new String[]{"usage"});
+            new String[] { "usage" });
       } catch (Exception e) {
         logger.warn("Unable to set SliderClient configs", e);
         throw new RuntimeException(e.getMessage(), e);
@@ -449,60 +364,28 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
   }
 
   /**
-   * Dynamically determines Slider client configuration. If unable to 
determine, <code>null</code> is returned.
-   *
+   * Dynamically determines Slider client configuration. If unable to 
determine,
+   * <code>null</code> is returned.
+   * 
    * @return
    */
   private Configuration getSliderClientConfiguration() {
-    AmbariCluster ambariCluster = getAmbariCluster();
-    if (ambariCluster != null) {
-      AmbariService zkService = ambariClient.getService(ambariCluster,
-                                                        "ZOOKEEPER");
-      if (zkService != null && ambariCluster.getDesiredConfigs() != null
-          && ambariCluster.getDesiredConfigs().containsKey("zookeeper-env")
-          && ambariCluster.getDesiredConfigs().containsKey("yarn-site")
-          && ambariCluster.getDesiredConfigs().containsKey("core-site")) {
-        Map<String, String> zkConfigs = ambariClient.getConfiguration(
-            ambariCluster, "zookeeper-env",
-            ambariCluster.getDesiredConfigs().get("zookeeper-env"));
-        Map<String, String> yarnSiteConfigs = ambariClient.getConfiguration(
-            ambariCluster, "yarn-site",
-            ambariCluster.getDesiredConfigs().get("yarn-site"));
-        Map<String, String> coreSiteConfigs = ambariClient.getConfiguration(
-            ambariCluster, "core-site",
-            ambariCluster.getDesiredConfigs().get("core-site"));
-        String zkPort = zkConfigs.get("clientPort");
-        String hdfsPath = coreSiteConfigs.get("fs.defaultFS");
-        String rmAddress = yarnSiteConfigs.get("yarn.resourcemanager.address");
-        String rmSchedulerAddress = yarnSiteConfigs
-            .get("yarn.resourcemanager.scheduler.address");
-        StringBuilder zkQuorum = new StringBuilder();
-        List<AmbariHostComponent> zkHosts = zkService
-            .getComponentsToHostComponentsMap().get("ZOOKEEPER_SERVER");
-        for (AmbariHostComponent zkHost : zkHosts) {
-          if (zkQuorum.length() > 0) {
-            zkQuorum.append(',');
-          }
-          zkQuorum.append(zkHost.getHostName() + ":" + zkPort);
-        }
-        HdfsConfiguration hdfsConfig = new HdfsConfiguration();
-        YarnConfiguration yarnConfig = new YarnConfiguration(hdfsConfig);
-
-        yarnConfig.set("slider.yarn.queue", "default");
-        yarnConfig.set("yarn.log-aggregation-enable", "true");
-        yarnConfig.set("yarn.resourcemanager.address", rmAddress);
-        yarnConfig.set("yarn.resourcemanager.scheduler.address",
-                       rmSchedulerAddress);
-        yarnConfig.set("fs.defaultFS", hdfsPath);
-        yarnConfig.set("slider.zookeeper.quorum", zkQuorum.toString());
-        yarnConfig
-            .set(
-                "yarn.application.classpath",
-                
"/etc/hadoop/conf,/usr/lib/hadoop/*,/usr/lib/hadoop/lib/*,/usr/lib/hadoop-hdfs/*,/usr/lib/hadoop-hdfs/lib/*,/usr/lib/hadoop-yarn/*,/usr/lib/hadoop-yarn/lib/*,/usr/lib/hadoop-mapreduce/*,/usr/lib/hadoop-mapreduce/lib/*");
-        return yarnConfig;
-      }
-    }
-    return null;
+    String hdfsPath = viewContext.getProperties().get(PROPERTY_HDFS_ADDRESS);
+    String rmAddress = 
viewContext.getProperties().get(PROPERTY_YARN_RM_ADDRESS);
+    String rmSchedulerAddress = 
viewContext.getProperties().get(PROPERTY_YARN_RM_SCHEDULER_ADDRESS);
+    String zkQuorum = viewContext.getProperties().get(PROPERTY_ZK_QUOROM);
+    HdfsConfiguration hdfsConfig = new HdfsConfiguration();
+    YarnConfiguration yarnConfig = new YarnConfiguration(hdfsConfig);
+
+    yarnConfig.set("slider.yarn.queue", "default");
+    yarnConfig.set("yarn.log-aggregation-enable", "true");
+    yarnConfig.set("yarn.resourcemanager.address", rmAddress);
+    yarnConfig.set("yarn.resourcemanager.scheduler.address", 
rmSchedulerAddress);
+    yarnConfig.set("fs.defaultFS", hdfsPath);
+    yarnConfig.set("slider.zookeeper.quorum", zkQuorum.toString());
+    yarnConfig.set("yarn.application.classpath",
+            
"/etc/hadoop/conf,/usr/lib/hadoop/*,/usr/lib/hadoop/lib/*,/usr/lib/hadoop-hdfs/*,/usr/lib/hadoop-hdfs/lib/*,/usr/lib/hadoop-yarn/*,/usr/lib/hadoop-yarn/lib/*,/usr/lib/hadoop-mapreduce/*,/usr/lib/hadoop-mapreduce/lib/*");
+    return yarnConfig;
   }
 
   @Override
@@ -518,7 +401,7 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
       List<ApplicationReport> yarnApps = 
sliderClient.listSliderInstances(null);
       for (ApplicationReport yarnApp : yarnApps) {
         SliderApp sliderAppObject = createSliderAppObject(yarnApp, properties,
-                                                          sliderClient);
+            sliderClient);
         if (sliderAppObject != null) {
           if (sliderAppsMap.containsKey(sliderAppObject.getName())) {
             if (sliderAppsMap.get(sliderAppObject.getName()).getId()
@@ -594,7 +477,7 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
           try {
             ZipFile zipFile = new ZipFile(appZip);
             Metainfo metainfo = new MetainfoParser().parse(zipFile
-                                                               
.getInputStream(zipFile.getEntry("metainfo.xml")));
+                .getInputStream(zipFile.getEntry("metainfo.xml")));
             // Create app type object
             if (metainfo.getApplication() != null) {
               Application application = metainfo.getApplication();
@@ -637,11 +520,11 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
                 // appTypeComponent.setPriority(component.);
                 if (component.getMinInstanceCount() != null) {
                   appTypeComponent.setInstanceCount(Integer.parseInt(component
-                                                                         
.getMinInstanceCount()));
+                      .getMinInstanceCount()));
                 }
                 if (component.getMaxInstanceCount() != null) {
                   appTypeComponent.setMaxInstanceCount(Integer
-                                                           
.parseInt(component.getMaxInstanceCount()));
+                      .parseInt(component.getMaxInstanceCount()));
                 }
                 if (resourcesJson != null) {
                   JsonElement componentJson = resourcesJson.getAsJsonObject()
@@ -649,10 +532,10 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
                       .get(component.getName());
                   if (componentJson != null
                       && componentJson.getAsJsonObject().has(
-                      "yarn.role.priority")) {
+                          "yarn.role.priority")) {
                     appTypeComponent.setPriority(Integer.parseInt(componentJson
-                                                                      
.getAsJsonObject().get("yarn.role.priority")
-                                                                      
.getAsString()));
+                        .getAsJsonObject().get("yarn.role.priority")
+                        .getAsString()));
                   }
                 }
                 appTypeComponent.setCategory(component.getCategory());
@@ -661,7 +544,7 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
 
               appType.setJmxMetrics(readMetrics(zipFile, "jmx_metrics.json"));
               appType.setGangliaMetrics(readMetrics(zipFile,
-                                                    "ganglia_metrics.json"));
+                  "ganglia_metrics.json"));
 
               appType.setTypeComponents(appTypeComponentList);
               appTypes.add(appType);
@@ -678,16 +561,16 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
   }
 
   Map<String, Map<String, Map<String, Metric>>> readMetrics(ZipFile zipFile,
-                                                            String fileName) {
+      String fileName) {
     Map<String, Map<String, Map<String, Metric>>> metrics = null;
     try {
       InputStream inputStream = zipFile.getInputStream(zipFile
-                                                           
.getEntry("jmx_metrics.json"));
+          .getEntry("jmx_metrics.json"));
       ObjectMapper mapper = new ObjectMapper();
 
       metrics = mapper.readValue(inputStream,
-                                 new TypeReference<Map<String, Map<String, 
Map<String, Metric>>>>() {
-                                 });
+          new TypeReference<Map<String, Map<String, Map<String, Metric>>>>() {
+          });
     } catch (IOException e) {
       logger.info("Error reading metrics. " + e.getMessage());
     }
@@ -727,31 +610,26 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
         appCount = ++createAppCounter;
       }
       File appCreateFolder = new File(appsCreateFolder,
-                                      Integer.toString(appCount));
+          Integer.toString(appCount));
       appCreateFolder.mkdirs();
       File appConfigJsonFile = new File(appCreateFolder, "appConfig.json");
       File resourcesJsonFile = new File(appCreateFolder, "resources.json");
       saveAppConfigs(configs, componentsArray, appConfigJsonFile);
       saveAppResources(componentsArray, resourcesJsonFile);
 
-      AmbariClusterInfo clusterInfo = ambariClient.getClusterInfo();
-      AmbariCluster cluster = ambariClient.getCluster(clusterInfo);
-      Map<String, String> coreSiteConfigs = ambariClient.getConfiguration(
-          clusterInfo, "core-site", cluster.getDesiredConfigs()
-          .get("core-site"));
-      String hdfsLocation = coreSiteConfigs.get("fs.defaultFS");
+      String hdfsLocation = 
viewContext.getProperties().get(PROPERTY_HDFS_ADDRESS);
       final ActionCreateArgs createArgs = new ActionCreateArgs();
       createArgs.template = appConfigJsonFile;
       createArgs.resources = resourcesJsonFile;
       createArgs.image = new Path(hdfsLocation
-                                  + "/user/yarn/agent/slider-agent.tar.gz");
+          + "/user/yarn/agent/slider-agent.tar.gz");
 
       ClassLoader currentClassLoader = Thread.currentThread()
           .getContextClassLoader();
       
Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
       try {
         ApplicationId applicationId = UserGroupInformation.getBestUGI(null,
-                                                                      
"yarn").doAs(new PrivilegedExceptionAction<ApplicationId>() {
+            "yarn").doAs(new PrivilegedExceptionAction<ApplicationId>() {
           public ApplicationId run() throws IOException, YarnException {
             SliderClient sliderClient = getSliderClient();
             sliderClient.actionCreate(appName, createArgs);
@@ -769,10 +647,10 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
   }
 
   private void saveAppResources(JsonArray componentsArray,
-                                File resourcesJsonFile) throws IOException {
+      File resourcesJsonFile) throws IOException {
     JsonObject resourcesObj = new JsonObject();
     resourcesObj.addProperty("schema",
-                             "http://example.org/specification/v2.0.0";);
+        "http://example.org/specification/v2.0.0";);
     resourcesObj.add("metadata", new JsonObject());
     resourcesObj.add("global", new JsonObject());
     JsonObject componentsObj = new JsonObject();
@@ -782,11 +660,11 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
         if (inputComponent.has("id")) {
           JsonObject componentValue = new JsonObject();
           componentValue.addProperty("yarn.role.priority",
-                                     
inputComponent.get("priority").getAsString());
+              inputComponent.get("priority").getAsString());
           componentValue.addProperty("yarn.component.instances", inputComponent
               .get("instanceCount").getAsString());
           componentsObj.add(inputComponent.get("id").getAsString(),
-                            componentValue);
+              componentValue);
         }
       }
     }
@@ -804,7 +682,7 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
   }
 
   private void saveAppConfigs(JsonObject configs, JsonArray componentsArray,
-                              File appConfigJsonFile) throws IOException {
+      File appConfigJsonFile) throws IOException {
     JsonObject appConfigs = new JsonObject();
     appConfigs.addProperty("schema", 
"http://example.org/specification/v2.0.0";);
     appConfigs.add("metadata", new JsonObject());
@@ -815,7 +693,7 @@ public class SliderAppsViewControllerImpl implements 
SliderAppsViewController {
         JsonObject inputComponent = componentsArray.get(i).getAsJsonObject();
         if (inputComponent.has("id")) {
           componentsObj.add(inputComponent.get("id").getAsString(),
-                            new JsonObject());
+              new JsonObject());
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/11146fb6/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/ViewStatus.java
----------------------------------------------------------------------
diff --git 
a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/ViewStatus.java
 
b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/ViewStatus.java
index 134f400..b9dbbbd 100644
--- 
a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/ViewStatus.java
+++ 
b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/ViewStatus.java
@@ -18,34 +18,15 @@
 
 package org.apache.ambari.view.slider;
 
-import java.util.List;
 
 public class ViewStatus {
-       private String version;
-       private boolean viewEnabled;
-       private List<String> viewErrors;
+  private String version;
 
-       public String getVersion() {
-               return version;
-       }
+  public String getVersion() {
+    return version;
+  }
 
-       public void setVersion(String version) {
-               this.version = version;
-       }
-
-       public boolean isViewEnabled() {
-               return viewEnabled;
-       }
-
-       public void setViewEnabled(boolean viewEnabled) {
-               this.viewEnabled = viewEnabled;
-       }
-
-       public List<String> getViewErrors() {
-               return viewErrors;
-       }
-
-       public void setViewErrors(List<String> viewErrors) {
-               this.viewErrors = viewErrors;
-       }
+  public void setVersion(String version) {
+    this.version = version;
+  }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/11146fb6/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/clients/AmbariClient.java
----------------------------------------------------------------------
diff --git 
a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/clients/AmbariClient.java
 
b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/clients/AmbariClient.java
index a53afe4..b77e340 100644
--- 
a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/clients/AmbariClient.java
+++ 
b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/clients/AmbariClient.java
@@ -20,9 +20,6 @@ package org.apache.ambari.view.slider.clients;
 
 import java.util.Map;
 
-import com.google.inject.ImplementedBy;
-
-@ImplementedBy(AmbariInternalClient.class)
 public interface AmbariClient {
        /**
         * Provides the first cluster defined on this Ambari server.

http://git-wip-us.apache.org/repos/asf/ambari/blob/11146fb6/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/clients/AmbariInternalClient.java
----------------------------------------------------------------------
diff --git 
a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/clients/AmbariInternalClient.java
 
b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/clients/AmbariInternalClient.java
deleted file mode 100644
index 529af9d..0000000
--- 
a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/clients/AmbariInternalClient.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ambari.view.slider.clients;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.ambari.server.controller.predicate.AndPredicate;
-import org.apache.ambari.server.controller.predicate.EqualsPredicate;
-import org.apache.ambari.server.controller.spi.ClusterController;
-import org.apache.ambari.server.controller.spi.NoSuchParentResourceException;
-import org.apache.ambari.server.controller.spi.NoSuchResourceException;
-import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.spi.SystemException;
-import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
-import org.apache.ambari.server.controller.utilities.ClusterControllerHelper;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
-import org.apache.ambari.server.state.DesiredConfig;
-import org.apache.ambari.server.state.State;
-import org.apache.log4j.Logger;
-
-import com.google.inject.Singleton;
-
-@Singleton
-public class AmbariInternalClient implements AmbariClient {
-
-       private static final Logger logger = Logger
-           .getLogger(AmbariInternalClient.class);
-
-       @Override
-       public AmbariCluster getCluster(AmbariClusterInfo clusterInfo) {
-               ClusterController clusterController = ClusterControllerHelper
-                   .getClusterController();
-               try {
-                       EqualsPredicate<String> clusterPredicate = new 
EqualsPredicate<String>(
-                           "Clusters/cluster_name", clusterInfo.getName());
-                       Set<Resource> clusterResources = 
clusterController.getResources(
-                           Resource.Type.Cluster, 
PropertyHelper.getReadRequest(),
-                           clusterPredicate);
-                       if (!clusterResources.isEmpty()) {
-                               Resource clusterResource = 
clusterResources.iterator().next();
-                               AmbariCluster cluster = new AmbariCluster();
-                               
cluster.setName(clusterResource.getPropertyValue(
-                                   "Clusters/cluster_name").toString());
-                               
cluster.setVersion(clusterResource.getPropertyValue("Clusters/version")
-                                   .toString());
-                               Map<String, String> desiredConfigsMap = new 
HashMap<String, String>();
-                               Map<String, Object> desiredConfigsMapResource = 
clusterResource
-                                   
.getPropertiesMap().get("Clusters/desired_configs");
-                               for (Map.Entry<String, Object> siteEntry : 
desiredConfigsMapResource
-                                   .entrySet()) {
-                                       
desiredConfigsMap.put(siteEntry.getKey(),
-                                           ((DesiredConfig) 
siteEntry.getValue()).getTag());
-                               }
-                               cluster.setDesiredConfigs(desiredConfigsMap);
-
-                               EqualsPredicate<String> serviceClusterPredicate 
= new EqualsPredicate<String>(
-                                   "ServiceInfo/cluster_name", 
cluster.getName());
-                               EqualsPredicate<String> hostClusterPredicate = 
new EqualsPredicate<String>(
-                                   "Hosts/cluster_name", cluster.getName());
-                               Set<Resource> serviceResources = 
clusterController.getResources(
-                                   Resource.Type.Service, 
PropertyHelper.getReadRequest(),
-                                   serviceClusterPredicate);
-                               Set<Resource> hostResources = 
clusterController.getResources(
-                                   Resource.Type.Host, 
PropertyHelper.getReadRequest(),
-                                   hostClusterPredicate);
-                               List<AmbariServiceInfo> servicesList = new 
ArrayList<AmbariServiceInfo>();
-                               List<AmbariHostInfo> hostsList = new 
ArrayList<AmbariHostInfo>();
-                               for (Resource serviceResource : 
serviceResources) {
-                                       AmbariServiceInfo service = new 
AmbariServiceInfo();
-                                       
service.setId(serviceResource.getPropertyValue(
-                                           
"ServiceInfo/service_name").toString());
-                                       
service.setStarted(State.STARTED.toString().equals(
-                                           
serviceResource.getPropertyValue("ServiceInfo/state")));
-                                       
service.setMaintenanceMode("ON".equals(serviceResource
-                                           
.getPropertyValue("ServiceInfo/maintenance_state")));
-                                       servicesList.add(service);
-                               }
-                               for (Resource hostResource : hostResources) {
-                                       AmbariHostInfo host = new 
AmbariHostInfo();
-                                       
host.setHostName(hostResource.getPropertyValue("Hosts/host_name")
-                                           .toString());
-                                       hostsList.add(host);
-                               }
-                               cluster.setServices(servicesList);
-                               cluster.setHosts(hostsList);
-                               return cluster;
-                       }
-               } catch (UnsupportedPropertyException e) {
-                       logger.warn(
-                           "Unable to determine Ambari cluster details - "
-                               + clusterInfo.getName(), e);
-                       throw new RuntimeException(e.getMessage(), e);
-               } catch (NoSuchResourceException e) {
-                       logger.warn(
-                           "Unable to determine Ambari cluster details - "
-                               + clusterInfo.getName(), e);
-                       throw new RuntimeException(e.getMessage(), e);
-               } catch (NoSuchParentResourceException e) {
-                       logger.warn(
-                           "Unable to determine Ambari cluster details - "
-                               + clusterInfo.getName(), e);
-                       throw new RuntimeException(e.getMessage(), e);
-               } catch (SystemException e) {
-                       logger.warn(
-                           "Unable to determine Ambari cluster details - "
-                               + clusterInfo.getName(), e);
-                       throw new RuntimeException(e.getMessage(), e);
-               }
-               return null;
-       }
-
-       @Override
-       public AmbariClusterInfo getClusterInfo() {
-               ClusterController clusterController = ClusterControllerHelper
-                   .getClusterController();
-               try {
-                       Set<Resource> resources = 
clusterController.getResources(
-                           Resource.Type.Cluster, 
PropertyHelper.getReadRequest(), null);
-                       if (resources.size() > 0) {
-                               Resource clusterResource = 
resources.iterator().next();
-                               AmbariClusterInfo clusterInfo = new 
AmbariClusterInfo();
-                               
clusterInfo.setName(clusterResource.getPropertyValue(
-                                   "Clusters/cluster_name").toString());
-                               
clusterInfo.setVersion(clusterResource.getPropertyValue(
-                                   "Clusters/version").toString());
-                               return clusterInfo;
-                       }
-               } catch (UnsupportedPropertyException e) {
-                       logger.warn("Unable to determine Ambari cluster", e);
-                       throw new RuntimeException(e.getMessage(), e);
-               } catch (NoSuchResourceException e) {
-                       logger.warn("Unable to determine Ambari cluster", e);
-                       throw new RuntimeException(e.getMessage(), e);
-               } catch (NoSuchParentResourceException e) {
-                       logger.warn("Unable to determine Ambari cluster", e);
-                       throw new RuntimeException(e.getMessage(), e);
-               } catch (SystemException e) {
-                       logger.warn("Unable to determine Ambari cluster", e);
-                       throw new RuntimeException(e.getMessage(), e);
-               }
-               return null;
-       }
-
-       @Override
-       public Map<String, String> getConfiguration(AmbariClusterInfo cluster,
-           String configType, String configTag) {
-               ClusterController clusterController = ClusterControllerHelper
-                   .getClusterController();
-               try {
-                       EqualsPredicate<String> clusterPredicate = new 
EqualsPredicate<String>(
-                           "Config/cluster_name", cluster.getName());
-                       EqualsPredicate<String> typePredicate = new 
EqualsPredicate<String>(
-                           "type", configType);
-                       EqualsPredicate<String> tagPredicate = new 
EqualsPredicate<String>("tag",
-                           configTag);
-                       AndPredicate typeTagPredicate = new 
AndPredicate(typePredicate,
-                           tagPredicate);
-                       AndPredicate configsPredicate = new 
AndPredicate(clusterPredicate,
-                           typeTagPredicate);
-
-                       Set<Resource> configResources = 
clusterController.getResources(
-                           Resource.Type.Configuration, 
PropertyHelper.getReadRequest(),
-                           configsPredicate);
-                       if (!configResources.isEmpty()) {
-                               Resource configResource = 
configResources.iterator().next();
-                               Map<String, String> configs = new 
HashMap<String, String>();
-                               Object props = 
configResource.getPropertiesMap().get("properties");
-                               if (props instanceof Map) {
-                                       @SuppressWarnings("unchecked")
-                                       Map<String, String> propsMap = 
(Map<String, String>) props;
-                                       configs.putAll(propsMap);
-                               }
-                               return configs;
-                       }
-               } catch (UnsupportedPropertyException e) {
-                       logger.warn("Unable to determine Ambari cluster 
configuration", e);
-                       throw new RuntimeException(e.getMessage(), e);
-               } catch (NoSuchResourceException e) {
-                       logger.warn("Unable to determine Ambari cluster 
configuration", e);
-                       throw new RuntimeException(e.getMessage(), e);
-               } catch (NoSuchParentResourceException e) {
-                       logger.warn("Unable to determine Ambari cluster 
configuration", e);
-                       throw new RuntimeException(e.getMessage(), e);
-               } catch (SystemException e) {
-                       logger.warn("Unable to determine Ambari cluster 
configuration", e);
-                       throw new RuntimeException(e.getMessage(), e);
-               }
-               return null;
-       }
-
-       @Override
-       public AmbariService getService(AmbariClusterInfo clusterInfo,
-           String serviceId) {
-               ClusterController clusterController = ClusterControllerHelper
-                   .getClusterController();
-               try {
-                       EqualsPredicate<String> clusterPredicate = new 
EqualsPredicate<String>(
-                           "ServiceInfo/cluster_name", clusterInfo.getName());
-                       EqualsPredicate<String> servicePredicate = new 
EqualsPredicate<String>(
-                           "ServiceInfo/service_name", serviceId);
-                       AndPredicate andPredicate = new 
AndPredicate(clusterPredicate,
-                           servicePredicate);
-                       Set<Resource> serviceResources = 
clusterController.getResources(
-                           Resource.Type.Service, 
PropertyHelper.getReadRequest(), andPredicate);
-                       if (!serviceResources.isEmpty()) {
-                               Resource serviceResource = 
serviceResources.iterator().next();
-                               AmbariService service = new AmbariService();
-                               service.setId(serviceResource.getPropertyValue(
-                                   "ServiceInfo/service_name").toString());
-                               
service.setStarted(State.STARTED.toString().equals(
-                                   
serviceResource.getPropertyValue("ServiceInfo/state")));
-                               
service.setMaintenanceMode("ON".equals(serviceResource
-                                   
.getPropertyValue("ServiceInfo/maintenance_state")));
-                               // Components
-                               Map<String, List<AmbariHostComponent>> 
componentsMap = new HashMap<String, List<AmbariHostComponent>>();
-                               
service.setComponentsToHostComponentsMap(componentsMap);
-                               clusterPredicate = new EqualsPredicate<String>(
-                                   "ServiceComponentInfo/cluster_name", 
clusterInfo.getName());
-                               servicePredicate = new EqualsPredicate<String>(
-                                   "ServiceComponentInfo/service_name", 
serviceId);
-                               andPredicate = new 
AndPredicate(clusterPredicate, servicePredicate);
-                               Set<Resource> componentResources = 
clusterController.getResources(
-                                   Resource.Type.Component, 
PropertyHelper.getReadRequest(),
-                                   andPredicate);
-                               if (!componentResources.isEmpty()) {
-                                       for (Resource componentResouce : 
componentResources) {
-                                               List<AmbariHostComponent> 
hostComponents = new ArrayList<AmbariHostComponent>();
-                                               String componentName = 
componentResouce.getPropertyValue(
-                                                   
"ServiceComponentInfo/component_name").toString();
-                                               
componentsMap.put(componentName, hostComponents);
-                                               clusterPredicate = new 
EqualsPredicate<String>(
-                                                   "HostRoles/cluster_name", 
clusterInfo.getName());
-                                               EqualsPredicate<String> 
componentPredicate = new EqualsPredicate<String>(
-                                                   "HostRoles/component_name", 
componentName);
-                                               andPredicate = new 
AndPredicate(clusterPredicate,
-                                                   componentPredicate);
-                                               Set<Resource> 
hostComponentResources = clusterController
-                                                   
.getResources(Resource.Type.HostComponent,
-                                                       
PropertyHelper.getReadRequest(), andPredicate);
-                                               if 
(!hostComponentResources.isEmpty()) {
-                                                       for (Resource 
hostComponentResource : hostComponentResources) {
-                                                               
AmbariHostComponent hc = new AmbariHostComponent();
-                                                               
hc.setHostName(hostComponentResource.getPropertyValue(
-                                                                   
"HostRoles/host_name").toString());
-                                                               
hc.setName(hostComponentResource.getPropertyValue(
-                                                                   
"HostRoles/component_name").toString());
-                                                               
hc.setStarted(State.STARTED.toString().equals(
-                                                                   
hostComponentResource.getPropertyValue("HostRoles/state")
-                                                                       
.toString()));
-                                                               
hostComponents.add(hc);
-                                                       }
-                                               }
-                                       }
-                               }
-                               return service;
-                       }
-               } catch (UnsupportedPropertyException e) {
-                       logger.warn("Unable to determine service details - " + 
serviceId, e);
-                       throw new RuntimeException(e.getMessage(), e);
-               } catch (NoSuchResourceException e) {
-                       logger.warn("Unable to determine service details - " + 
serviceId, e);
-                       throw new RuntimeException(e.getMessage(), e);
-               } catch (NoSuchParentResourceException e) {
-                       logger.warn("Unable to determine service details - " + 
serviceId, e);
-                       throw new RuntimeException(e.getMessage(), e);
-               } catch (SystemException e) {
-                       logger.warn("Unable to determine service details - " + 
serviceId, e);
-                       throw new RuntimeException(e.getMessage(), e);
-               }
-               return null;
-       }
-}

http://git-wip-us.apache.org/repos/asf/ambari/blob/11146fb6/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/JMXMetricHolder.java
----------------------------------------------------------------------
diff --git 
a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/JMXMetricHolder.java
 
b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/JMXMetricHolder.java
new file mode 100644
index 0000000..04b824a
--- /dev/null
+++ 
b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/JMXMetricHolder.java
@@ -0,0 +1,50 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.view.slider.rest.client;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ */
+public final class JMXMetricHolder {
+
+  private List<Map<String, Object>> beans;
+
+  public List<Map<String, Object>> getBeans() {
+    return beans;
+  }
+
+  public void setBeans(List<Map<String, Object>> beans) {
+    this.beans = beans;
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder stringBuilder = new StringBuilder();
+
+    for (Map<String, Object> map : beans) {
+      for (Map.Entry<String, Object> entry : map.entrySet()) {
+        stringBuilder.append("    ").append(entry.toString()).append("\n");
+      }
+    }
+    return stringBuilder.toString();
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/11146fb6/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppJmxHelper.java
----------------------------------------------------------------------
diff --git 
a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppJmxHelper.java
 
b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppJmxHelper.java
index e0a8072..d3ca1e4 100644
--- 
a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppJmxHelper.java
+++ 
b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppJmxHelper.java
@@ -18,7 +18,6 @@
 
 package org.apache.ambari.view.slider.rest.client;
 
-import org.apache.ambari.server.controller.jmx.JMXMetricHolder;
 import org.apache.commons.io.IOUtils;
 import org.apache.log4j.Logger;
 import org.codehaus.jackson.map.DeserializationConfig;

http://git-wip-us.apache.org/repos/asf/ambari/blob/11146fb6/contrib/views/slider/src/main/resources/ui/app/controllers/slider_apps_controller.js
----------------------------------------------------------------------
diff --git 
a/contrib/views/slider/src/main/resources/ui/app/controllers/slider_apps_controller.js
 
b/contrib/views/slider/src/main/resources/ui/app/controllers/slider_apps_controller.js
index 7199777..2f422f1 100644
--- 
a/contrib/views/slider/src/main/resources/ui/app/controllers/slider_apps_controller.js
+++ 
b/contrib/views/slider/src/main/resources/ui/app/controllers/slider_apps_controller.js
@@ -146,13 +146,19 @@ App.SliderAppsController = Ember.ArrayController.extend({
    * @method sendInitialValues
    */
   sendInitialValues: function () {
+    var initialValues = this.get('initialValuesToLoad');
     return App.ajax.send({
       name: 'saveInitialValues',
       sender: this,
       data: {
         data:  {
           ViewInstanceInfo: {
-            properties: this.get('initialValuesToLoad')
+            properties: {
+              'hdfs.address': initialValues.get('hdfsAddress'),
+              'yarn.resourcemanager.address': 
initialValues.get('yarnRMAddress'),
+              'yarn.resourcemanager.scheduler.address': 
initialValues.get('yarnRMSchedulerAddress'),
+              'zookeeper.quorum': initialValues.get('zookeeperQuorum')
+            }
           }
         }
       }

http://git-wip-us.apache.org/repos/asf/ambari/blob/11146fb6/contrib/views/slider/src/main/resources/ui/app/initialize.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/initialize.js 
b/contrib/views/slider/src/main/resources/ui/app/initialize.js
index a9df6ad..4fc797a 100755
--- a/contrib/views/slider/src/main/resources/ui/app/initialize.js
+++ b/contrib/views/slider/src/main/resources/ui/app/initialize.js
@@ -29,7 +29,18 @@ App.initializer({
   name: "preload",
 
   initialize: function(container, application) {
-
+    var viewId = 'SLIDER';
+    var viewVersion = '1.0.0';
+    var instanceName = 'SLIDER_1';
+    if (location.pathname != null) {
+      var splits = location.pathname.split('/');
+      if (splits != null && splits.length > 4) {
+        viewId = splits[2];
+        viewVersion = splits[3];
+        instanceName = splits[4];
+      }
+    }
+    
     application.reopen({
       /**
        * Test mode is automatically enabled if running on brunch server
@@ -40,13 +51,13 @@ App.initializer({
       /**
        * @type {string}
        */
-      name: 'SLIDER',
+      name: viewId,
 
       /**
        * Slider version
        * @type {string}
        */
-      version: '1.0.0',
+      version: viewVersion,
 
       /**
        * Version of SLIDER_1 resource
@@ -57,7 +68,7 @@ App.initializer({
       /**
        * @type {string}
        */
-      instance: 'SLIDER_1',
+      instance: instanceName,
 
       /**
        * API url for Slider

http://git-wip-us.apache.org/repos/asf/ambari/blob/11146fb6/contrib/views/slider/src/main/resources/view.xml
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/view.xml 
b/contrib/views/slider/src/main/resources/view.xml
index 57499ce..87dfbe7 100644
--- a/contrib/views/slider/src/main/resources/view.xml
+++ b/contrib/views/slider/src/main/resources/view.xml
@@ -18,9 +18,26 @@ limitations under the License. Kerberos, LDAP, Custom. 
Binary/Htt
   <name>SLIDER</name>
   <label>Slider Apps View</label>
   <version>1.0.0</version>
-  <instance>
-    <name>SLIDER_1</name>
-  </instance>
+  <parameter>
+    <name>hdfs.address</name>
+    <description>The URL to access HDFS service via its protocol. Typically 
this is the fs.defaultFS property in the core-site.xml configuration. For 
example: hdfs://hdfs.namenode.host:8020.</description>
+    <required>false</required>
+  </parameter>
+  <parameter>
+    <name>yarn.resourcemanager.address</name>
+    <description>The URL to the YARN ResourceManager, used to provide YARN 
Application data. For example: 
http://yarn.resourcemanager.host:8050</description>
+    <required>false</required>
+  </parameter>
+  <parameter>
+    <name>yarn.resourcemanager.scheduler.address</name>
+    <description>The URL to the YARN ResourceManager Scheduler, which 
schedules YARN Applications. For example: 
http://yarn.resourcemanager.host:8030</description>
+    <required>false</required>
+  </parameter>
+  <parameter>
+    <name>zookeeper.quorum</name>
+    <description>ZooKeeper quorum location. Typically this is a comma 
separated list of ZooKeeper hostnames and port numbers. The port number can be 
got from the clientPort property in the zookeeper-env configuration. For 
example: zookeeper.host1:2181,zookeeper.host2:2181.</description>
+    <required>false</required>
+  </parameter>
   <resource>
     <name>status</name>
     
<service-class>org.apache.ambari.view.slider.rest.ViewStatusResource</service-class>

Reply via email to