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 om...@apache.org on 2011/03/04 05:51:58 UTC

svn commit: r1077755 - in /hadoop/common/branches/branch-0.20-security-patches/src: contrib/gridmix/src/test/system/org/apache/hadoop/mapred/gridmix/ test/system/conf/ test/system/java/org/apache/hadoop/test/system/

Author: omalley
Date: Fri Mar  4 04:51:58 2011
New Revision: 1077755

URL: http://svn.apache.org/viewvc?rev=1077755&view=rev
Log:
commit c0a9dca954b9edf17047c52334b2749b51b34c71
Author: Vinay Kumar Thota <vi...@yahoo-inc.com>
Date:   Fri Oct 1 08:52:12 2010 +0000

    3967785 from

Modified:
    hadoop/common/branches/branch-0.20-security-patches/src/contrib/gridmix/src/test/system/org/apache/hadoop/mapred/gridmix/TestGridMixDataGeneration.java
    hadoop/common/branches/branch-0.20-security-patches/src/contrib/gridmix/src/test/system/org/apache/hadoop/mapred/gridmix/UtilsForGridmix.java
    hadoop/common/branches/branch-0.20-security-patches/src/test/system/conf/system-test.xml
    hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/test/system/AbstractDaemonCluster.java

Modified: hadoop/common/branches/branch-0.20-security-patches/src/contrib/gridmix/src/test/system/org/apache/hadoop/mapred/gridmix/TestGridMixDataGeneration.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/contrib/gridmix/src/test/system/org/apache/hadoop/mapred/gridmix/TestGridMixDataGeneration.java?rev=1077755&r1=1077754&r2=1077755&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/contrib/gridmix/src/test/system/org/apache/hadoop/mapred/gridmix/TestGridMixDataGeneration.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/contrib/gridmix/src/test/system/org/apache/hadoop/mapred/gridmix/TestGridMixDataGeneration.java Fri Mar  4 04:51:58 2011
@@ -109,7 +109,7 @@ public class TestGridMixDataGeneration {
        RoundRobinUserResolver.class.getName(),
        "REPLAY",
        inputSize +"m",
-       "file://" + cluster.getProxyUsersFilePath(),
+       "file://" + UtilsForGridmix.getProxyUsersFile(cluster.getHadoopProxyUsers()),
        "file:///dev/null"};
     
     int exitCode = UtilsForGridmix.runGridmixJob(gridmixDir, 

Modified: hadoop/common/branches/branch-0.20-security-patches/src/contrib/gridmix/src/test/system/org/apache/hadoop/mapred/gridmix/UtilsForGridmix.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/contrib/gridmix/src/test/system/org/apache/hadoop/mapred/gridmix/UtilsForGridmix.java?rev=1077755&r1=1077754&r2=1077755&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/contrib/gridmix/src/test/system/org/apache/hadoop/mapred/gridmix/UtilsForGridmix.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/contrib/gridmix/src/test/system/org/apache/hadoop/mapred/gridmix/UtilsForGridmix.java Fri Mar  4 04:51:58 2011
@@ -29,6 +29,14 @@ import org.apache.hadoop.conf.Configurat
 import java.util.Date;
 import java.text.SimpleDateFormat;
 import java.io.OutputStream;
+import java.util.Set;
+import java.util.List;
+import java.util.Iterator;
+import java.util.Map;
+import java.io.File;
+import java.io.FileOutputStream;
+import org.apache.hadoop.test.system.ProxyUserDefinitions;
+import org.apache.hadoop.test.system.ProxyUserDefinitions.GroupsAndHost;
 
 /**
  * Gridmix utilities.
@@ -211,4 +219,64 @@ public class UtilsForGridmix {
     int exitCode = ToolRunner.run(conf, gridmix, args);
     return exitCode;
   }
+
+  /**
+   * Get the proxy users file.
+   * @param ProxyUserDefinitions - proxy users data container.
+   * @return String - proxy users file.
+   * @Exception - if no proxy users found in configuration.
+   */
+  public static String getProxyUsersFile(ProxyUserDefinitions pud)
+      throws Exception  {
+     String fileName = buildProxyUsersFile(pud.getProxyUsers());
+     if (fileName == null) {
+        LOG.error("Proxy users file not found.");
+        throw new Exception("Proxy users file not found.");
+     } else {
+        return fileName;
+     }
+  }
+
+  /**
+   * Build the proxy users file. 
+   * @param proxyUserData - groups and hostnames against proxy user.
+   * @return String - proxy users file.
+   * @throws Exception - if an exception occurs.
+   */
+  public static String buildProxyUsersFile(final Map<String, GroupsAndHost> 
+      proxyUserData) throws Exception {
+     FileOutputStream fos = null;
+     File file = null;
+     StringBuffer input = new StringBuffer();
+     Set users = proxyUserData.keySet();
+     Iterator itr = users.iterator();
+     while (itr.hasNext()) {
+        String user = itr.next().toString();
+        input.append(user);
+        final GroupsAndHost gah = proxyUserData.get(user);
+        final List <String> groups = gah.getGroups();
+        for (String group : groups) {
+           input.append(",");
+           input.append(group);
+        }
+        input.append("\n");
+     }
+     if (input.length() > 0) {
+        try {
+           file = File.createTempFile("proxyusers",null);
+           fos = new FileOutputStream(file);
+           fos.write(input.toString().getBytes());
+        } catch(IOException ioexp) {
+           LOG.warn(ioexp.getMessage());
+           return null;
+        } finally {
+           fos.close();
+           file.deleteOnExit();
+        }
+        LOG.info("file.toString():" + file.toString());
+        return file.toString();
+     } else {
+        return null;
+     }
+  }
 }

Modified: hadoop/common/branches/branch-0.20-security-patches/src/test/system/conf/system-test.xml
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/test/system/conf/system-test.xml?rev=1077755&r1=1077754&r2=1077755&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/test/system/conf/system-test.xml (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/test/system/conf/system-test.xml Fri Mar  4 04:51:58 2011
@@ -117,13 +117,6 @@ neutral at the forward-port stage -->
   </description>
 </property>
 <property>
-  <name>test.system.hdrc.multi-user.list.path</name>
-  <value>$(YINST_ROOT)/conf/hadoop/proxyusers</value>
-  <description>
-  Multi user list for creating the proxy users.
-  </description>
-</property>
-<property>
   <name>test.system.hdrc.multi-user.binary.path</name>
   <value>$(YINST_ROOT)/conf/hadoop/runAs</value>
   <description>

Modified: hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/test/system/AbstractDaemonCluster.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/test/system/AbstractDaemonCluster.java?rev=1077755&r1=1077754&r2=1077755&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/test/system/AbstractDaemonCluster.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/test/system/java/org/apache/hadoop/test/system/AbstractDaemonCluster.java Fri Mar  4 04:51:58 2011
@@ -29,6 +29,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.Enumeration;
 import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Arrays;
+import java.net.URI;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
@@ -51,8 +54,6 @@ public abstract class AbstractDaemonClus
   File localFolderObj = null;
   private static final  String CONF_HADOOP_LOCAL_DIR =
       "test.system.hdrc.hadoop.local.confdir"; 
-  private static final  String CONF_HADOOP_MULTI_USER_LIST =
-      "test.system.hdrc.multi-user.list.path";
   private final static Object waitLock = new Object();
   
   /**
@@ -309,29 +310,64 @@ public abstract class AbstractDaemonClus
    */
   public ArrayList<String> getHadoopMultiUsersList() throws
      IOException {
-    String hadoopUserListPath = conf.get(CONF_HADOOP_MULTI_USER_LIST);
-    if (hadoopUserListPath == null || hadoopUserListPath.isEmpty()) {
-      LOG.error("Proxy user list path has not been passed for "
-          + CONF_HADOOP_MULTI_USER_LIST);
-      throw new IllegalArgumentException(
-          "Proxy user list hasn't been provided.");
-    }
-    File fileObj = new File(hadoopUserListPath);
-    DataInputStream disObj = new DataInputStream(new FileInputStream(fileObj));
-    ArrayList<String> usersList = new ArrayList<String>();
-    String strLine = null;
-    while((strLine = disObj.readLine()) != null){
-      usersList.add(strLine.substring(0,strLine.indexOf(',')));
-    }
-    return usersList;
+     Iterator itr = conf.iterator();
+     ArrayList<String> proxyUsers = new ArrayList<String>();
+     while (itr.hasNext()) {
+        String property = itr.next().toString();
+        if (property.indexOf("hadoop.proxyuser") >= 0 &&
+           property.indexOf("groups=") >= 0) {
+           proxyUsers.add(property.split("\\.")[2]);
+        }
+     }
+
+     if (proxyUsers.size() == 0) {
+        LOG.error("No proxy users found in the configuration.");
+        throw new IOException("No proxy users found in the configuration.");
+     }
+
+    return proxyUsers;
   }
   
   /**
-   * Get the proxy userlist path.
-   * @return String - userlist path
-   */
-  public String getProxyUsersFilePath() {
-    return null;
+   * Get the proxy user definitions from cluster from configuration.
+   * @return ProxyUserDefinitions - proxy users data like groups and hosts.
+   * @throws Exception - if no proxy users found in the config.
+   */
+  public ProxyUserDefinitions getHadoopProxyUsers() throws
+      Exception {
+     Iterator itr = conf.iterator();
+     ArrayList<String> proxyUsers = new ArrayList<String>();
+     while (itr.hasNext()) {
+        String property = itr.next().toString();
+        if (property.indexOf("hadoop.proxyuser") >= 0 &&
+           property.indexOf("groups=") >= 0) {
+           proxyUsers.add(property.split("\\.")[2]);
+        }
+     }
+   
+     if (proxyUsers.size() == 0) {
+        LOG.error("No proxy users found in the configuration.");
+        throw new Exception("No proxy users found in the configuration.");
+     } 
+    
+     ProxyUserDefinitions pud = new ProxyUserDefinitions() {
+        public boolean writeToFile(URI filePath) throws IOException {
+            throw new UnsupportedOperationException("No such methood exists.");
+        };
+     };
+    
+     for (String userName : proxyUsers) {
+        List<String> groups = Arrays.asList(conf.get("hadoop.proxyuser." + 
+            userName + ".groups").split("//,"));
+        List<String> hosts = Arrays.asList(conf.get("hadoop.proxyuser." + 
+            userName + ".hosts").split("//,"));
+        ProxyUserDefinitions.GroupsAndHost definitions = 
+            pud.new GroupsAndHost();
+        definitions.setGroups(groups);
+        definitions.setHosts(hosts);
+        pud.addProxyUser(userName, definitions);
+     }
+     return pud;
   }
 
   /**