Repository: incubator-slider
Updated Branches:
  refs/heads/develop c9c7eeeac -> 63b5c83ff


SLIDER-1210 Expose diagnostics information as a summary table in AM UI landing 
page as well


Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/63b5c83f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/63b5c83f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/63b5c83f

Branch: refs/heads/develop
Commit: 63b5c83ff42479833e3013a2b8436a2af2a24143
Parents: c9c7eee
Author: Gour Saha <gourks...@apache.org>
Authored: Thu Feb 16 20:08:13 2017 -0800
Committer: Gour Saha <gourks...@apache.org>
Committed: Thu Feb 16 20:08:13 2017 -0800

----------------------------------------------------------------------
 .../slider/api/types/ContainerInformation.java  | 14 ++++++
 .../server/appmaster/web/view/IndexBlock.java   | 45 +++++++++++++++++---
 .../src/main/resources/webapps/static/yarn.css  |  2 +
 3 files changed, 56 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/63b5c83f/slider-core/src/main/java/org/apache/slider/api/types/ContainerInformation.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/api/types/ContainerInformation.java
 
b/slider-core/src/main/java/org/apache/slider/api/types/ContainerInformation.java
index 25ef310..3b5b590 100644
--- 
a/slider-core/src/main/java/org/apache/slider/api/types/ContainerInformation.java
+++ 
b/slider-core/src/main/java/org/apache/slider/api/types/ContainerInformation.java
@@ -18,6 +18,9 @@
 
 package org.apache.slider.api.types;
 
+import java.io.Serializable;
+import java.util.Comparator;
+
 import org.apache.hadoop.registry.client.binding.JsonSerDeser;
 import org.codehaus.jackson.annotate.JsonIgnoreProperties;
 import org.codehaus.jackson.map.annotate.JsonSerialize;
@@ -143,4 +146,15 @@ public class ContainerInformation {
             ContainerInformation.class);
     return serDeser.toString(this);
   }
+
+  /**
+   * Compare two containers by their ids.
+   */
+  public static class CompareById implements Comparator<ContainerInformation>,
+      Serializable {
+    @Override
+    public int compare(ContainerInformation c1, ContainerInformation c2) {
+      return c1.getContainerId().compareTo(c2.getContainerId());
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/63b5c83f/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/IndexBlock.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/IndexBlock.java
 
b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/IndexBlock.java
index c3b9b6f..3d9dbaf 100644
--- 
a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/IndexBlock.java
+++ 
b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/IndexBlock.java
@@ -24,8 +24,9 @@ import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.LI;
 import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.UL;
 import org.apache.slider.api.ClusterDescription;
 import org.apache.slider.api.StatusKeys;
+import org.apache.slider.api.types.ApplicationDiagnostics;
 import org.apache.slider.api.types.ApplicationLivenessInformation;
-import org.apache.slider.api.types.RoleStatistics;
+import org.apache.slider.api.types.ContainerInformation;
 import org.apache.slider.common.tools.SliderUtils;
 import org.apache.slider.core.registry.docstore.ExportEntry;
 import org.apache.slider.core.registry.docstore.PublishedExports;
@@ -183,10 +184,6 @@ public class IndexBlock extends SliderHamletBlock {
     containers._();
     containers = null;
 
-    // some spacing
-    html.div()._();
-    html.div()._();
-
     DIV<Hamlet> diagnostics = html.div("diagnostics");
 
     List<String> statusEntries = new ArrayList<>(0);
@@ -228,6 +225,44 @@ public class IndexBlock extends SliderHamletBlock {
     enumeratePublishedExports(appState.getPublishedExportsSet(), ul);
     ul._();
     exports._();
+
+    DIV<Hamlet> appDiagnosticsDiv = html.div("app_diagnostics")
+        .h3("Application Container Diagnostics");
+
+    Hamlet.TABLE<DIV<Hamlet>> appDiagnosticsTable = appDiagnosticsDiv.table();
+    Hamlet.TR<Hamlet.THEAD<Hamlet.TABLE<DIV<Hamlet>>>> appDiagnosticsHeader = 
+        appDiagnosticsTable.thead().tr();
+    trb(appDiagnosticsHeader, "Container ID");
+    trb(appDiagnosticsHeader, "Component");
+    trb(appDiagnosticsHeader, "State");
+    trb(appDiagnosticsHeader, "Exit Code");
+    trb(appDiagnosticsHeader, "Logs");
+    trb(appDiagnosticsHeader, "Diagnostics");
+    appDiagnosticsHeader._()._(); // tr & thread
+
+    ApplicationDiagnostics appDiagnostics = appState
+        .getApplicationDiagnostics();
+    List<ContainerInformation> appContainers = new ArrayList<>(
+        appDiagnostics.getContainers());
+    Collections.sort(appContainers, new ContainerInformation.CompareById());
+    for (ContainerInformation appContainer : appContainers) {
+      String diagText = String.format("%s",
+          appContainer.getDiagnostics() == null ? ""
+              : appContainer.getDiagnostics());
+      appDiagnosticsTable.tr()
+          .td(appContainer.getContainerId())
+          .td(appContainer.getComponent())
+          .td(String.format("%d", appContainer.getState()))
+          .td(String.format("%d", appContainer.getExitCode()))
+          .td().a(appContainer.getLogLink(), "Logs")._()
+          .td(diagText)
+          ._();
+    }
+
+    // close table and div
+    appDiagnosticsTable._();
+    appDiagnosticsDiv._();
+    appDiagnosticsDiv = null;
   }
 
   @VisibleForTesting

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/63b5c83f/slider-core/src/main/resources/webapps/static/yarn.css
----------------------------------------------------------------------
diff --git a/slider-core/src/main/resources/webapps/static/yarn.css 
b/slider-core/src/main/resources/webapps/static/yarn.css
index 1e9ca94..7f9f862 100644
--- a/slider-core/src/main/resources/webapps/static/yarn.css
+++ b/slider-core/src/main/resources/webapps/static/yarn.css
@@ -61,5 +61,7 @@ div.general_info { margin-bottom: 15px; }
 div.container_instances { margin-bottom: 15px; }
 div.diagnostics { margin-bottom: 15px; }
 div.provider_info { margin-bottom: 15px; }
+div.exports { margin-bottom: 15px; }
+div.app_diagnostics { margin-bottom: 15px; }
 
 div.cluster_json pre { white-space: pre-wrap; }

Reply via email to