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>