Index: src/test/java/org/apache/hadoop/hbase/zookeeper/TestZooKeeperMainServerArg.java =================================================================== --- src/test/java/org/apache/hadoop/hbase/zookeeper/TestZooKeeperMainServerArg.java (revision 0) +++ src/test/java/org/apache/hadoop/hbase/zookeeper/TestZooKeeperMainServerArg.java (revision 0) @@ -0,0 +1,6 @@ +package org.apache.hadoop.hbase.zookeeper; + + +public class TestZooKeeperMainServerArg { + +} Index: src/main/java/org/apache/hadoop/hbase/zookeeper/ZKServerTool.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/zookeeper/ZKServerTool.java (revision 1024523) +++ src/main/java/org/apache/hadoop/hbase/zookeeper/ZKServerTool.java (working copy) @@ -33,7 +33,7 @@ public class ZKServerTool { /** * Run the tool. - * @param args Command line arguments. First arg is path to zookeepers file. + * @param args Command line arguments. */ public static void main(String args[]) { Configuration conf = HBaseConfiguration.create(); @@ -51,4 +51,4 @@ } } } -} +} \ No newline at end of file Index: src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperMainServerArg.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperMainServerArg.java (revision 0) +++ src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperMainServerArg.java (revision 0) @@ -0,0 +1,61 @@ +/** + * Copyright 2010 The Apache Software Foundation + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hbase.zookeeper; + +import java.util.Properties; +import java.util.Map.Entry; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hbase.HBaseConfiguration; + +/** + * Tool for reading a ZooKeeper server from HBase XML configuration producing + * the '-server host:port' argument to pass ZooKeeperMain. This program + * emits either '-server HOST:PORT" where HOST is one of the zk ensemble + * members plus zk client port OR it emits '' if no zk servers found (Yes, + * it emits '-server' too). + */ +public class ZooKeeperMainServerArg { + public void parse(final Configuration c) { + // Note that we do not simply grab the property + // HConstants.ZOOKEEPER_QUORUM from the HBaseConfiguration because the + // user may be using a zoo.cfg file. + Properties zkProps = ZKConfig.makeZKProps(c); + for (Entry entry: zkProps.entrySet()) { + String key = entry.getKey().toString().trim(); + String value = entry.getValue().toString().trim(); + /*if (key.startsWith("server.")) { + String[] parts = value.split(":"); + String host = parts[0];*/ + System.out.println(key + " " + value); + /* + }*/ + } + } + + /** + * Run the tool. + * @param args Command line arguments. First arg is path to zookeepers file. + */ + public static void main(String args[]) { + Configuration conf = HBaseConfiguration.create(); + } +} \ No newline at end of file Index: bin/hbase =================================================================== --- bin/hbase (revision 1024523) +++ bin/hbase (working copy) @@ -262,7 +262,8 @@ HBASE_OPTS="$HBASE_OPTS $HBASE_ZOOKEEPER_OPTS" fi elif [ "$COMMAND" = "zkcli" ] ; then - CLASS='org.apache.zookeeper.ZooKeeperMain' + SERVERPORT=`"$bin"/hbase org.apache.hadoop.hbase.zookeeper.ZKServerTool -hostport | grep '^ZK hostport:' | sed 's,^ZK host:,,'` + CLASS='org.apache.zookeeper.ZooKeeperMain -server ${SERVERPORT}' elif [ "$COMMAND" = "classpath" ] ; then echo $CLASSPATH exit 0