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

suvasude pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-gobblin.git


The following commit(s) were added to refs/heads/master by this push:
     new 7a74579  [GOBBLIN-834] Provide config for setting ACLs to control 
visibility of Gobblin-on-Yarn application logs[]
7a74579 is described below

commit 7a74579c05eb5c0bf8965bfd96c3c1036c529ffa
Author: sv2000 <[email protected]>
AuthorDate: Fri Jul 26 10:41:13 2019 -0700

    [GOBBLIN-834] Provide config for setting ACLs to control visibility of 
Gobblin-on-Yarn application logs[]
    
    Closes #2693 from sv2000/aclViewLogs
---
 .../org/apache/gobblin/yarn/GobblinYarnAppLauncher.java | 11 +++++++++++
 .../gobblin/yarn/GobblinYarnConfigurationKeys.java      |  2 ++
 .../main/java/org/apache/gobblin/yarn/YarnService.java  | 17 ++++++++++++-----
 3 files changed, 25 insertions(+), 5 deletions(-)

diff --git 
a/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/GobblinYarnAppLauncher.java
 
b/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/GobblinYarnAppLauncher.java
index 8288604..cac61d8 100644
--- 
a/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/GobblinYarnAppLauncher.java
+++ 
b/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/GobblinYarnAppLauncher.java
@@ -22,6 +22,7 @@ import java.io.IOException;
 import java.net.URI;
 import java.nio.ByteBuffer;
 import java.util.EnumSet;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -45,6 +46,7 @@ import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.security.token.Token;
 import org.apache.hadoop.yarn.api.ApplicationConstants;
 import org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationResponse;
+import org.apache.hadoop.yarn.api.records.ApplicationAccessType;
 import org.apache.hadoop.yarn.api.records.ApplicationId;
 import org.apache.hadoop.yarn.api.records.ApplicationReport;
 import org.apache.hadoop.yarn.api.records.ApplicationResourceUsageReport;
@@ -163,6 +165,7 @@ public class GobblinYarnAppLauncher {
 
   private final String applicationName;
   private final String appQueueName;
+  private final String appViewAcl;
 
   private final Config config;
 
@@ -261,6 +264,9 @@ public class GobblinYarnAppLauncher {
         GobblinYarnConfigurationKeys.CONTAINER_JVM_MEMORY_OVERHEAD_MBS_KEY + " 
cannot be more than "
             + GobblinYarnConfigurationKeys.CONTAINER_MEMORY_MBS_KEY + " * "
             + GobblinYarnConfigurationKeys.CONTAINER_JVM_MEMORY_XMX_RATIO_KEY);
+
+    this.appViewAcl = ConfigUtils.getString(this.config, 
GobblinYarnConfigurationKeys.APP_VIEW_ACL,
+        GobblinYarnConfigurationKeys.DEFAULT_APP_VIEW_ACL);
   }
 
   /**
@@ -504,6 +510,11 @@ public class GobblinYarnAppLauncher {
     amContainerLaunchContext.setLocalResources(appMasterLocalResources);
     
amContainerLaunchContext.setEnvironment(YarnHelixUtils.getEnvironmentVariables(this.yarnConfiguration));
     
amContainerLaunchContext.setCommands(Lists.newArrayList(buildApplicationMasterCommand(resource.getMemory())));
+
+    Map<ApplicationAccessType, String> acls = new HashMap<>(1);
+    acls.put(ApplicationAccessType.VIEW_APP, this.appViewAcl);
+    amContainerLaunchContext.setApplicationACLs(acls);
+
     if (UserGroupInformation.isSecurityEnabled()) {
       setupSecurityTokens(amContainerLaunchContext);
     }
diff --git 
a/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/GobblinYarnConfigurationKeys.java
 
b/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/GobblinYarnConfigurationKeys.java
index 7c80063..ce4ded6 100644
--- 
a/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/GobblinYarnConfigurationKeys.java
+++ 
b/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/GobblinYarnConfigurationKeys.java
@@ -35,6 +35,8 @@ public class GobblinYarnConfigurationKeys {
       GOBBLIN_YARN_PREFIX + "email.notification.on.shutdown";
   public static final String RELEASED_CONTAINERS_CACHE_EXPIRY_SECS = 
GOBBLIN_YARN_PREFIX + "releasedContainersCacheExpirySecs";
   public static final int DEFAULT_RELEASED_CONTAINERS_CACHE_EXPIRY_SECS = 300;
+  public static final String APP_VIEW_ACL = GOBBLIN_YARN_PREFIX + "appViewAcl";
+  public static final String DEFAULT_APP_VIEW_ACL = "*";
 
   // Gobblin Yarn ApplicationMaster configuration properties.
   public static final String APP_MASTER_MEMORY_MBS_KEY = GOBBLIN_YARN_PREFIX + 
"app.master.memory.mbs";
diff --git 
a/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/YarnService.java 
b/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/YarnService.java
index ce53075..5a7e294 100644
--- a/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/YarnService.java
+++ b/gobblin-yarn/src/main/java/org/apache/gobblin/yarn/YarnService.java
@@ -24,6 +24,7 @@ import java.util.AbstractMap;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -45,6 +46,7 @@ import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.security.token.Token;
 import org.apache.hadoop.yarn.api.ApplicationConstants;
 import 
org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterResponse;
+import org.apache.hadoop.yarn.api.records.ApplicationAccessType;
 import org.apache.hadoop.yarn.api.records.Container;
 import org.apache.hadoop.yarn.api.records.ContainerExitStatus;
 import org.apache.hadoop.yarn.api.records.ContainerId;
@@ -64,7 +66,6 @@ import org.apache.hadoop.yarn.conf.YarnConfiguration;
 import org.apache.hadoop.yarn.exceptions.YarnException;
 import org.apache.hadoop.yarn.security.AMRMTokenIdentifier;
 import org.apache.hadoop.yarn.util.Records;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -86,25 +87,23 @@ import com.google.common.eventbus.EventBus;
 import com.google.common.eventbus.Subscribe;
 import com.google.common.io.Closer;
 import com.google.common.util.concurrent.AbstractIdleService;
-
 import com.typesafe.config.Config;
 
 import lombok.AccessLevel;
 import lombok.Getter;
 
-import org.apache.gobblin.configuration.ConfigurationKeys;
-
 import org.apache.gobblin.cluster.GobblinClusterConfigurationKeys;
 import org.apache.gobblin.cluster.GobblinClusterMetricTagNames;
 import org.apache.gobblin.cluster.GobblinClusterUtils;
 import org.apache.gobblin.cluster.HelixUtils;
+import org.apache.gobblin.cluster.event.ClusterManagerShutdownRequest;
+import org.apache.gobblin.configuration.ConfigurationKeys;
 import org.apache.gobblin.metrics.GobblinMetrics;
 import org.apache.gobblin.metrics.Tag;
 import org.apache.gobblin.metrics.event.EventSubmitter;
 import org.apache.gobblin.util.ConfigUtils;
 import org.apache.gobblin.util.ExecutorsUtils;
 import org.apache.gobblin.util.JvmUtils;
-import org.apache.gobblin.cluster.event.ClusterManagerShutdownRequest;
 import org.apache.gobblin.yarn.event.ContainerReleaseRequest;
 import org.apache.gobblin.yarn.event.ContainerShutdownRequest;
 import org.apache.gobblin.yarn.event.NewContainerRequest;
@@ -124,6 +123,7 @@ public class YarnService extends AbstractIdleService {
 
   private final String applicationName;
   private final String applicationId;
+  private final String appViewAcl;
 
   private final Config config;
 
@@ -254,6 +254,9 @@ public class YarnService extends AbstractIdleService {
         GobblinYarnConfigurationKeys.CONTAINER_JVM_MEMORY_OVERHEAD_MBS_KEY + " 
cannot be more than "
             + GobblinYarnConfigurationKeys.CONTAINER_MEMORY_MBS_KEY + " * "
             + GobblinYarnConfigurationKeys.CONTAINER_JVM_MEMORY_XMX_RATIO_KEY);
+
+    this.appViewAcl = ConfigUtils.getString(this.config, 
GobblinYarnConfigurationKeys.APP_VIEW_ACL,
+        GobblinYarnConfigurationKeys.DEFAULT_APP_VIEW_ACL);
   }
 
   @SuppressWarnings("unused")
@@ -491,6 +494,10 @@ public class YarnService extends AbstractIdleService {
     
containerLaunchContext.setEnvironment(YarnHelixUtils.getEnvironmentVariables(this.yarnConfiguration));
     
containerLaunchContext.setCommands(Lists.newArrayList(buildContainerCommand(container,
 helixInstanceName)));
 
+    Map<ApplicationAccessType, String> acls = new HashMap<>(1);
+    acls.put(ApplicationAccessType.VIEW_APP, this.appViewAcl);
+    containerLaunchContext.setApplicationACLs(acls);
+
     if (UserGroupInformation.isSecurityEnabled()) {
       containerLaunchContext.setTokens(this.tokens.duplicate());
     }

Reply via email to