You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jo...@apache.org on 2014/09/23 18:03:02 UTC
[07/12] git commit: AMBARI-7441. Slider app component should link to
the exact YARN container (srimanth)
AMBARI-7441. Slider app component should link to the exact YARN container (srimanth)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/061dc10c
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/061dc10c
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/061dc10c
Branch: refs/heads/branch-alerts-dev
Commit: 061dc10c6cf5dc5e3c585e3710d1e7d13e84b5aa
Parents: 4010ff4
Author: Srimanth Gunturi <sg...@hortonworks.com>
Authored: Mon Sep 22 18:34:17 2014 -0700
Committer: Srimanth Gunturi <sg...@hortonworks.com>
Committed: Mon Sep 22 18:34:23 2014 -0700
----------------------------------------------------------------------
.../view/slider/SliderAppsViewController.java | 1 +
.../rest/client/SliderAppMasterClient.java | 2 +-
.../ui/app/mappers/slider_apps_mapper.js | 9 +++++++--
.../ui/app/models/slider_app_component.js | 16 ++++++++++++++-
.../src/main/resources/ui/app/routes/main.js | 21 ++++++++++----------
.../ui/app/templates/slider_app/summary.hbs | 8 +++++++-
.../views/slider/src/main/resources/view.xml | 7 ++++++-
7 files changed, 48 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/061dc10c/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 0cf5d15..f06e8f3 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
@@ -33,6 +33,7 @@ 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_WEBAPP_ADDRESS = "yarn.resourcemanager.webapp.address";
public static final String PROPERTY_YARN_RM_SCHEDULER_ADDRESS = "yarn.resourcemanager.scheduler.address";
public static final String PROPERTY_ZK_QUOROM = "zookeeper.quorum";
public static final String PROPERTY_GANGLIA_SERVER_HOSTNAME = "ganglia.server.hostname";
http://git-wip-us.apache.org/repos/asf/ambari/blob/061dc10c/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java
index 8bc7400..fc8f0d7 100644
--- a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java
+++ b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java
@@ -99,7 +99,7 @@ public class SliderAppMasterClient extends BaseHttpClient {
quickLinks.put("JMX", entry.getValue().getAsString());
} else if ("org.apache.slider.monitor".equals(entry.getKey())) {
quickLinks.put("UI", entry.getValue().getAsString());
- } else if ("app.metrics".equals(entry.getKey())) {
+ } else if ("org.apache.slider.metrics".equals(entry.getKey())) {
quickLinks.put("Metrics", entry.getValue().getAsString());
} else {
quickLinks.put(entry.getKey(), entry.getValue().getAsString());
http://git-wip-us.apache.org/repos/asf/ambari/blob/061dc10c/contrib/views/slider/src/main/resources/ui/app/mappers/slider_apps_mapper.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/mappers/slider_apps_mapper.js b/contrib/views/slider/src/main/resources/ui/app/mappers/slider_apps_mapper.js
index d7853f4..3cf80cc 100644
--- a/contrib/views/slider/src/main/resources/ui/app/mappers/slider_apps_mapper.js
+++ b/contrib/views/slider/src/main/resources/ui/app/mappers/slider_apps_mapper.js
@@ -92,6 +92,7 @@ App.SliderAppsMapper = App.Mapper.createWithMixins(App.RunPeriodically, {
id: appId + component.componentName + i,
status: activeContainers[i] ? "Running" : "Stopped",
host: activeContainers[i] ? component.activeContainers[activeContainers[i]].host : "",
+ containerId: activeContainers[i] ? component.activeContainers[activeContainers[i]].name : "",
componentName: component.componentName,
appId: appId
})
@@ -135,8 +136,12 @@ App.SliderAppsMapper = App.Mapper.createWithMixins(App.RunPeriodically, {
yarnAppId += appId.substring(index + 1);
}
var yarnUI = "http://"+window.location.hostname+":8088";
- if (App.viewUrls) {
- yarnUI = App.viewUrls['yarn.resourcemanager.webapp.address'];
+ var viewConfigs = App.SliderApp.store.all('sliderConfig');
+ if (viewConfigs!=null) {
+ var viewConfig = viewConfigs.findBy('viewConfigName', 'yarn.resourcemanager.webapp.address');
+ if (viewConfig!=null) {
+ yarnUI = viewConfig.get('value');
+ }
}
quickLinks.push(
Ember.Object.create({
http://git-wip-us.apache.org/repos/asf/ambari/blob/061dc10c/contrib/views/slider/src/main/resources/ui/app/models/slider_app_component.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/models/slider_app_component.js b/contrib/views/slider/src/main/resources/ui/app/models/slider_app_component.js
index 2e999c1..6a577c2 100644
--- a/contrib/views/slider/src/main/resources/ui/app/models/slider_app_component.js
+++ b/contrib/views/slider/src/main/resources/ui/app/models/slider_app_component.js
@@ -34,6 +34,11 @@ App.SliderAppComponent = DS.Model.extend({
componentName: DS.attr('string'),
/**
+ * @type {string}
+ */
+ containerId: DS.attr('string'),
+
+ /**
* @type {App.SliderApp}
*/
appId: DS.belongsTo('sliderApp'),
@@ -44,7 +49,16 @@ App.SliderAppComponent = DS.Model.extend({
*/
isRunning: function() {
return this.get('status') === 'Running';
- }.property('status')
+ }.property('status'),
+
+ url: function() {
+ var host = this.get('host');
+ var containerId = this.get('containerId');
+ if (host != null && containerId != null) {
+ return "http://" + this.get('host') + ":8042/node/container/" + this.get('containerId');
+ }
+ return null;
+ }.property('host', 'containerId')
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/061dc10c/contrib/views/slider/src/main/resources/ui/app/routes/main.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/routes/main.js b/contrib/views/slider/src/main/resources/ui/app/routes/main.js
index 7afc85a..9388f2a 100644
--- a/contrib/views/slider/src/main/resources/ui/app/routes/main.js
+++ b/contrib/views/slider/src/main/resources/ui/app/routes/main.js
@@ -54,16 +54,17 @@ App.SliderAppsRoute = Ember.Route.extend({
App.SliderApp.store.pushMany('sliderConfig', Em.A([
Em.Object.create({id: 1, required: true, viewConfigName: 'hdfs.address', displayName: 'hdfsAddress', linkedService: 'HDFS'}),
Em.Object.create({id: 2, required: true, viewConfigName: 'yarn.resourcemanager.address', displayName: 'yarnResourceManager', linkedService: 'YARN'}),
- Em.Object.create({id: 3, required: true, viewConfigName: 'yarn.resourcemanager.scheduler.address', displayName: 'yarnResourceManagerScheduler'}),
- Em.Object.create({id: 4, required: true, viewConfigName: 'zookeeper.quorum', displayName: 'zookeeperQuorum', linkedService: 'ZOOKEEPER'}),
- Em.Object.create({id: 5, required: false, viewConfigName: 'ganglia.server.hostname', displayName: 'gangliaServer'}),
- Em.Object.create({id: 6, required: false, viewConfigName: 'ganglia.custom.clusters', displayName: 'gangliaClusters'}),
- Em.Object.create({id: 7, required: false, viewConfigName: 'slider.user', displayName: 'sliderUser'}),
- Em.Object.create({id: 8, required: false, viewConfigName: 'slider.security.enabled', displayName: 'sliderSecurityEnabled'}),
- Em.Object.create({id: 9, required: false, requireDependsOn: 8, viewConfigName: 'yarn.resourcemanager.principal', displayName: 'yarnResourceManagerPrincipal'}),
- Em.Object.create({id: 10, required: false, requireDependsOn: 8, viewConfigName: 'dfs.namenode.kerberos.principal', displayName: 'dfsNamenodeKerberosPrincipal'}),
- Em.Object.create({id: 11, required: false, requireDependsOn: 8, viewConfigName: 'view.kerberos.principal', displayName: 'viewKerberosPrincipal'}),
- Em.Object.create({id: 12, required: false, requireDependsOn: 8, viewConfigName: 'view.kerberos.principal.keytab', displayName: 'ViewKerberosPrincipalKeytab'})
+ Em.Object.create({id: 3, required: true, viewConfigName: 'yarn.resourcemanager.webapp.address', displayName: 'yarnResourceManagerWebapp', linkedService: 'YARN'}),
+ Em.Object.create({id: 4, required: true, viewConfigName: 'yarn.resourcemanager.scheduler.address', displayName: 'yarnResourceManagerScheduler'}),
+ Em.Object.create({id: 5, required: true, viewConfigName: 'zookeeper.quorum', displayName: 'zookeeperQuorum', linkedService: 'ZOOKEEPER'}),
+ Em.Object.create({id: 6, required: false, viewConfigName: 'ganglia.server.hostname', displayName: 'gangliaServer'}),
+ Em.Object.create({id: 7, required: false, viewConfigName: 'ganglia.custom.clusters', displayName: 'gangliaClusters'}),
+ Em.Object.create({id: 8, required: false, viewConfigName: 'slider.user', displayName: 'sliderUser'}),
+ Em.Object.create({id: 9, required: true, viewConfigName: 'slider.security.enabled', displayName: 'sliderSecurityEnabled'}),
+ Em.Object.create({id: 10, required: false, requireDependsOn: 9, viewConfigName: 'yarn.resourcemanager.principal', displayName: 'yarnResourceManagerPrincipal'}),
+ Em.Object.create({id: 11, required: false, requireDependsOn: 9, viewConfigName: 'dfs.namenode.kerberos.principal', displayName: 'dfsNamenodeKerberosPrincipal'}),
+ Em.Object.create({id: 12, required: false, requireDependsOn: 9, viewConfigName: 'view.kerberos.principal', displayName: 'viewKerberosPrincipal'}),
+ Em.Object.create({id: 13, required: false, requireDependsOn: 9, viewConfigName: 'view.kerberos.principal.keytab', displayName: 'ViewKerberosPrincipalKeytab'})
]));
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/061dc10c/contrib/views/slider/src/main/resources/ui/app/templates/slider_app/summary.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/templates/slider_app/summary.hbs b/contrib/views/slider/src/main/resources/ui/app/templates/slider_app/summary.hbs
index 8bf043c..96340f9 100644
--- a/contrib/views/slider/src/main/resources/ui/app/templates/slider_app/summary.hbs
+++ b/contrib/views/slider/src/main/resources/ui/app/templates/slider_app/summary.hbs
@@ -59,7 +59,13 @@
{{#each controller.model.components}}
<tr>
<td><span {{bind-attr class="isRunning:icon-ok-sign:icon-warning-sign :status"}}></span> {{componentName}}</td>
- <td>{{host}}</td>
+ <td>
+ {{#if url}}
+ <a {{bind-attr href="url"}} target="_blank">{{host}}</a>
+ {{else}}
+ {{host}}
+ {{/if}}
+ </td>
</tr>
{{/each}}
</tbody>
http://git-wip-us.apache.org/repos/asf/ambari/blob/061dc10c/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 7a05fa3..8325529 100644
--- a/contrib/views/slider/src/main/resources/view.xml
+++ b/contrib/views/slider/src/main/resources/view.xml
@@ -20,7 +20,7 @@ limitations under the License. Kerberos, LDAP, Custom. Binary/Htt
<version>1.0.0</version>
<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>
+ <description>The URL to access HDFS service via its protocol. Typically this is the fs.defaultFS property in the core-site.xml configuration file. For example: hdfs://hdfs.namenode.host:8020.</description>
<required>true</required>
</parameter>
<parameter>
@@ -29,6 +29,11 @@ limitations under the License. Kerberos, LDAP, Custom. Binary/Htt
<required>true</required>
</parameter>
<parameter>
+ <name>yarn.resourcemanager.webapp.address</name>
+ <description>The URL to the YARN ResourceManager Web Application, used to provide YARN UI. Typically this is the yarn.resourcemanager.webapp.address config from yarn-site.xml configuration file. For example: http://yarn.resourcemanager.host:8088</description>
+ <required>true</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>true</required>