You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sr...@apache.org on 2014/09/10 22:26:56 UTC
git commit: AMBARI-7252. Decouple Slider View from ambari-server
dependency (srimanth)
Repository: ambari
Updated Branches:
refs/heads/trunk 475d45897 -> 11146fb67
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/trunk
Commit: 11146fb67456a40aeab9fc3f3e6973fd3cf9facd
Parents: 475d458
Author: Srimanth Gunturi <sg...@hortonworks.com>
Authored: Wed Sep 10 12:25:28 2014 -0700
Committer: Srimanth Gunturi <sg...@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>