Return-Path: Delivered-To: apmail-hadoop-common-commits-archive@www.apache.org Received: (qmail 95638 invoked from network); 4 Mar 2011 04:52:23 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 4 Mar 2011 04:52:23 -0000 Received: (qmail 45089 invoked by uid 500); 4 Mar 2011 04:52:23 -0000 Delivered-To: apmail-hadoop-common-commits-archive@hadoop.apache.org Received: (qmail 45044 invoked by uid 500); 4 Mar 2011 04:52:23 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: common-dev@hadoop.apache.org Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 45035 invoked by uid 99); 4 Mar 2011 04:52:23 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Mar 2011 04:52:23 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Mar 2011 04:52:19 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 9C35523888CD; Fri, 4 Mar 2011 04:51:58 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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/ Date: Fri, 04 Mar 2011 04:51:58 -0000 To: common-commits@hadoop.apache.org From: omalley@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110304045158.9C35523888CD@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 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 + 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 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 --> - test.system.hdrc.multi-user.list.path - $(YINST_ROOT)/conf/hadoop/proxyusers - - Multi user list for creating the proxy users. - - - test.system.hdrc.multi-user.binary.path $(YINST_ROOT)/conf/hadoop/runAs 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 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 usersList = new ArrayList(); - String strLine = null; - while((strLine = disObj.readLine()) != null){ - usersList.add(strLine.substring(0,strLine.indexOf(','))); - } - return usersList; + Iterator itr = conf.iterator(); + ArrayList proxyUsers = new ArrayList(); + 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 proxyUsers = new ArrayList(); + 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 groups = Arrays.asList(conf.get("hadoop.proxyuser." + + userName + ".groups").split("//,")); + List 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; } /**