You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by sn...@apache.org on 2020/08/31 14:01:04 UTC

[hadoop] branch trunk updated: [UI1] Provide a way to hide Tools section in Web UIv1. Contributed by Andras Gyori

This is an automated email from the ASF dual-hosted git repository.

snemeth pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 4ffe26f  [UI1] Provide a way to hide Tools section in Web UIv1. Contributed by Andras Gyori
4ffe26f is described below

commit 4ffe26f9b811ff505a7137a340105ad2ceb419fa
Author: Szilard Nemeth <sn...@apache.org>
AuthorDate: Mon Aug 31 16:00:39 2020 +0200

    [UI1] Provide a way to hide Tools section in Web UIv1. Contributed by Andras Gyori
---
 .../hadoop/mapreduce/v2/hs/webapp/HsNavBlock.java  | 22 +++++++++-----
 .../apache/hadoop/yarn/conf/YarnConfiguration.java |  2 ++
 .../src/main/resources/yarn-default.xml            |  6 ++++
 .../applicationhistoryservice/webapp/NavBlock.java | 21 +++++++++----
 .../hadoop/yarn/server/webapp/WebPageUtils.java    | 34 +++++++++++++++++++++-
 .../yarn/server/nodemanager/webapp/NavBlock.java   | 22 +++++++-------
 .../server/resourcemanager/webapp/NavBlock.java    | 25 +++++++++++-----
 7 files changed, 101 insertions(+), 31 deletions(-)

diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsNavBlock.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsNavBlock.java
index 9ef5a0f..fb077dd 100644
--- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsNavBlock.java
+++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/HsNavBlock.java
@@ -18,8 +18,11 @@
 
 package org.apache.hadoop.mapreduce.v2.hs.webapp;
 
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.mapreduce.v2.app.webapp.App;
 import org.apache.hadoop.mapreduce.v2.util.MRApps;
+import org.apache.hadoop.yarn.conf.YarnConfiguration;
+import org.apache.hadoop.yarn.server.webapp.WebPageUtils;
 import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet;
 import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet.DIV;
 import org.apache.hadoop.yarn.webapp.view.HtmlBlock;
@@ -31,8 +34,12 @@ import com.google.inject.Inject;
  */
 public class HsNavBlock extends HtmlBlock {
   final App app;
+  private Configuration conf;
 
-  @Inject HsNavBlock(App app) { this.app = app; }
+  @Inject HsNavBlock(App app, Configuration conf) {
+    this.app = app;
+    this.conf = conf;
+  }
 
   /*
    * (non-Javadoc)
@@ -64,12 +71,11 @@ public class HsNavBlock extends HtmlBlock {
             li().a(url("taskcounters", taskid), "Counters").__().__();
       }
     }
-    nav.
-      h3("Tools").
-        ul().
-          li().a("/conf", "Configuration").__().
-          li().a("/logs", "Local logs").__().
-          li().a("/stacks", "Server stacks").__().
-          li().a("/jmx?qry=Hadoop:*", "Server metrics").__().__().__();
+
+    Hamlet.UL<DIV<Hamlet>> tools = WebPageUtils.appendToolSection(nav, conf);
+
+    if (tools != null) {
+      tools.__().__();
+    }
   }
 }
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java
index 6c1be0e..2dbbfbf 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java
@@ -362,6 +362,8 @@ public class YarnConfiguration extends Configuration {
       + "webapp.ui2.war-file-path";
   public static final String YARN_API_SERVICES_ENABLE = "yarn."
       + "webapp.api-service.enable";
+  public static final String YARN_WEBAPP_UI1_ENABLE_TOOLS = "yarn."
+      + "webapp.ui1.tools.enable";
 
   @Private
   public static final String DEFAULT_YARN_API_SYSTEM_SERVICES_CLASS =
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml
index 47f1239..23c56e7 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml
@@ -257,6 +257,12 @@
   </property>
 
   <property>
+    <description>Enable tools section in all ui1 webapp.</description>
+    <name>yarn.webapp.ui1.tools.enable</name>
+    <value>true</value>
+  </property>
+
+  <property>
     <description>
       Explicitly provide WAR file path for ui2 if needed.
     </description>
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/NavBlock.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/NavBlock.java
index 915af4a..10d3b52 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/NavBlock.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/NavBlock.java
@@ -18,7 +18,11 @@
 
 package org.apache.hadoop.yarn.server.applicationhistoryservice.webapp;
 
+import com.google.inject.Inject;
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.yarn.api.records.YarnApplicationState;
+import org.apache.hadoop.yarn.conf.YarnConfiguration;
+import org.apache.hadoop.yarn.server.webapp.WebPageUtils;
 import org.apache.hadoop.yarn.util.Log4jWarningErrorMetricsAppender;
 import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet;
 import org.apache.hadoop.yarn.webapp.view.HtmlBlock;
@@ -27,6 +31,13 @@ import static org.apache.hadoop.util.GenericsUtil.isLog4jLogger;
 
 public class NavBlock extends HtmlBlock {
 
+  private Configuration conf;
+
+  @Inject
+  public NavBlock(Configuration conf) {
+    this.conf = conf;
+  }
+
   @Override
   public void render(Block html) {
     boolean addErrorsAndWarningsLink = false;
@@ -61,11 +72,11 @@ public class NavBlock extends HtmlBlock {
         __().
         __();
 
-    Hamlet.UL<Hamlet.DIV<Hamlet>> tools = nav.h3("Tools").ul();
-    tools.li().a("/conf", "Configuration").__()
-        .li().a("/logs", "Local logs").__()
-        .li().a("/stacks", "Server stacks").__()
-        .li().a("/jmx?qry=Hadoop:*", "Server metrics").__();
+    Hamlet.UL<Hamlet.DIV<Hamlet>> tools = WebPageUtils.appendToolSection(nav, conf);
+
+    if (tools == null) {
+      return;
+    }
 
     if (addErrorsAndWarningsLink) {
       tools.li().a(url("errors-and-warnings"), "Errors/Warnings").__();
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java
index 311462b..12c73c1 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java
@@ -18,6 +18,10 @@
 
 package org.apache.hadoop.yarn.server.webapp;
 
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.yarn.conf.YarnConfiguration;
+import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet;
+
 import static org.apache.hadoop.yarn.webapp.view.JQueryUI.tableInit;
 
 
@@ -112,4 +116,32 @@ public class WebPageUtils {
         .toString();
   }
 
-}
+  /**
+   * Creates the tool section after a closed section. If it is not enabled,
+   * the section is created without any links.
+   * @param section a closed HTML div section
+   * @param conf configuration object
+   * @return the tool section, if it is enabled, null otherwise
+   */
+  public static Hamlet.UL<Hamlet.DIV<Hamlet>> appendToolSection(
+      Hamlet.DIV<Hamlet> section, Configuration conf) {
+    boolean isToolsEnabled = conf.getBoolean(
+        YarnConfiguration.YARN_WEBAPP_UI1_ENABLE_TOOLS, true);
+
+    Hamlet.DIV<Hamlet> tools = null;
+    Hamlet.UL<Hamlet.DIV<Hamlet>> enabledTools = null;
+
+    if (isToolsEnabled) {
+      tools = section.h3("Tools");
+      enabledTools = tools.ul().li().a("/conf", "Configuration").__().
+          li().a("/logs", "Local logs").__().
+          li().a("/stacks", "Server stacks").__().
+          li().a("/jmx?qry=Hadoop:*", "Server metrics").__();
+    } else {
+      section.h4("Tools (DISABLED)").__();
+    }
+
+    return enabledTools;
+  }
+
+}
\ No newline at end of file
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NavBlock.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NavBlock.java
index 5cbcff5..86d9ae7 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NavBlock.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NavBlock.java
@@ -19,6 +19,8 @@
 package org.apache.hadoop.yarn.server.nodemanager.webapp;
 
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.yarn.conf.YarnConfiguration;
+import org.apache.hadoop.yarn.server.webapp.WebPageUtils;
 import org.apache.hadoop.yarn.util.Log4jWarningErrorMetricsAppender;
 import org.apache.hadoop.yarn.webapp.YarnWebParams;
 import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet;
@@ -51,7 +53,7 @@ public class NavBlock extends HtmlBlock implements YarnWebParams {
 	
     String RMWebAppURL =
         WebAppUtils.getResolvedRMWebAppURLWithScheme(this.conf);
-	  Hamlet.UL<Hamlet.DIV<Hamlet>> ul = html
+	  Hamlet.DIV<Hamlet> ul = html
       .div("#nav")
       .h3().__("ResourceManager").__()
         .ul()
@@ -65,17 +67,17 @@ public class NavBlock extends HtmlBlock implements YarnWebParams {
             .__()
           .li()
             .a(url("allContainers"), "List of Containers").__()
-        .__()
-      .h3("Tools")
-        .ul()
-          .li().a("/conf", "Configuration").__()
-          .li().a("/logs", "Local logs").__()
-          .li().a("/stacks", "Server stacks").__()
-          .li().a("/jmx?qry=Hadoop:*", "Server metrics").__();
+        .__();
+
+    Hamlet.UL<Hamlet.DIV<Hamlet>> tools = WebPageUtils.appendToolSection(ul, conf);
+
+    if (tools == null) {
+      return;
+    }
     if (addErrorsAndWarningsLink) {
-      ul.li().a(url("errors-and-warnings"), "Errors/Warnings").__();
+      tools.li().a(url("errors-and-warnings"), "Errors/Warnings").__();
     }
-    ul.__().__();
+    tools.__().__();
   }
 
 }
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/NavBlock.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/NavBlock.java
index 3107644..d6d7e54 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/NavBlock.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/NavBlock.java
@@ -18,7 +18,11 @@
 
 package org.apache.hadoop.yarn.server.resourcemanager.webapp;
 
+import com.google.inject.Inject;
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.yarn.api.records.YarnApplicationState;
+import org.apache.hadoop.yarn.conf.YarnConfiguration;
+import org.apache.hadoop.yarn.server.webapp.WebPageUtils;
 import org.apache.hadoop.yarn.util.Log4jWarningErrorMetricsAppender;
 import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet;
 import org.apache.hadoop.yarn.webapp.hamlet2.Hamlet.DIV;
@@ -29,6 +33,12 @@ import org.apache.hadoop.yarn.webapp.view.HtmlBlock;
 import static org.apache.hadoop.util.GenericsUtil.isLog4jLogger;
 
 public class NavBlock extends HtmlBlock {
+  private Configuration conf;
+
+  @Inject
+  public NavBlock(Configuration conf) {
+    this.conf = conf;
+  }
 
   @Override public void render(Block html) {
     boolean addErrorsAndWarningsLink = false;
@@ -55,13 +65,14 @@ public class NavBlock extends HtmlBlock {
               li().a(url("apps", state.toString()), state.toString()).__();
     }
     subAppsList.__().__();
-    UL<DIV<Hamlet>> tools = mainList.
-          li().a(url("scheduler"), "Scheduler").__().__().
-        h3("Tools").ul();
-    tools.li().a("/conf", "Configuration").__().
-          li().a("/logs", "Local logs").__().
-          li().a("/stacks", "Server stacks").__().
-          li().a("/jmx?qry=Hadoop:*", "Server metrics").__();
+
+    DIV<Hamlet> sectionBefore = mainList.
+          li().a(url("scheduler"), "Scheduler").__().__();
+    UL<DIV<Hamlet>> tools = WebPageUtils.appendToolSection(sectionBefore, conf);
+
+    if (tools == null) {
+      return;
+    }
 
     if (addErrorsAndWarningsLink) {
       tools.li().a(url("errors-and-warnings"), "Errors/Warnings").__();


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org