http://git-wip-us.apache.org/repos/asf/hbase/blob/fc29f802/apidocs/src-html/org/apache/hadoop/hbase/security/visibility/VisibilityClient.html ---------------------------------------------------------------------- diff --git a/apidocs/src-html/org/apache/hadoop/hbase/security/visibility/VisibilityClient.html b/apidocs/src-html/org/apache/hadoop/hbase/security/visibility/VisibilityClient.html deleted file mode 100644 index 9b8b7cf..0000000 --- a/apidocs/src-html/org/apache/hadoop/hbase/security/visibility/VisibilityClient.html +++ /dev/null @@ -1,443 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html lang="en"> -<head> -<title>Source code</title> -<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style"> -</head> -<body> -<div class="sourceContainer"> -<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a> -<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a> -<span class="sourceLineNo">003</span> * or more contributor license agreements. See the NOTICE file<a name="line.3"></a> -<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a> -<span class="sourceLineNo">005</span> * regarding copyright ownership. The ASF licenses this file<a name="line.5"></a> -<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a> -<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a> -<span class="sourceLineNo">008</span> * with the License. You may obtain a copy of the License at<a name="line.8"></a> -<span class="sourceLineNo">009</span> *<a name="line.9"></a> -<span class="sourceLineNo">010</span> * http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a> -<span class="sourceLineNo">011</span> *<a name="line.11"></a> -<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a> -<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a> -<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a> -<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a> -<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a> -<span class="sourceLineNo">017</span> */<a name="line.17"></a> -<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.security.visibility;<a name="line.18"></a> -<span class="sourceLineNo">019</span><a name="line.19"></a> -<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.security.visibility.VisibilityConstants.LABELS_TABLE_NAME;<a name="line.20"></a> -<span class="sourceLineNo">021</span><a name="line.21"></a> -<span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a> -<span class="sourceLineNo">023</span>import java.util.Map;<a name="line.23"></a> -<span class="sourceLineNo">024</span>import java.util.regex.Pattern;<a name="line.24"></a> -<span class="sourceLineNo">025</span><a name="line.25"></a> -<span class="sourceLineNo">026</span>import org.apache.hadoop.conf.Configuration;<a name="line.26"></a> -<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.HConstants;<a name="line.27"></a> -<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.28"></a> -<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.classification.InterfaceStability;<a name="line.29"></a> -<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.30"></a> -<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.31"></a> -<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.Table;<a name="line.32"></a> -<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.coprocessor.Batch;<a name="line.33"></a> -<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.client.security.SecurityCapability;<a name="line.34"></a> -<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.ipc.BlockingRpcCallback;<a name="line.35"></a> -<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.ipc.ServerRpcController;<a name="line.36"></a> -<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.protobuf.generated.VisibilityLabelsProtos.GetAuthsRequest;<a name="line.37"></a> -<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.protobuf.generated.VisibilityLabelsProtos.GetAuthsResponse;<a name="line.38"></a> -<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.protobuf.generated.VisibilityLabelsProtos.ListLabelsRequest;<a name="line.39"></a> -<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.protobuf.generated.VisibilityLabelsProtos.ListLabelsResponse;<a name="line.40"></a> -<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.protobuf.generated.VisibilityLabelsProtos.SetAuthsRequest;<a name="line.41"></a> -<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.protobuf.generated.VisibilityLabelsProtos.VisibilityLabel;<a name="line.42"></a> -<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.protobuf.generated.VisibilityLabelsProtos.VisibilityLabelsRequest;<a name="line.43"></a> -<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.protobuf.generated.VisibilityLabelsProtos.VisibilityLabelsResponse;<a name="line.44"></a> -<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.protobuf.generated.VisibilityLabelsProtos.VisibilityLabelsService;<a name="line.45"></a> -<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.ByteStringer;<a name="line.46"></a> -<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.47"></a> -<span class="sourceLineNo">048</span><a name="line.48"></a> -<span class="sourceLineNo">049</span>import com.google.protobuf.ServiceException;<a name="line.49"></a> -<span class="sourceLineNo">050</span><a name="line.50"></a> -<span class="sourceLineNo">051</span>/**<a name="line.51"></a> -<span class="sourceLineNo">052</span> * Utility client for doing visibility labels admin operations.<a name="line.52"></a> -<span class="sourceLineNo">053</span> */<a name="line.53"></a> -<span class="sourceLineNo">054</span>@InterfaceAudience.Public<a name="line.54"></a> -<span class="sourceLineNo">055</span>@InterfaceStability.Evolving<a name="line.55"></a> -<span class="sourceLineNo">056</span>public class VisibilityClient {<a name="line.56"></a> -<span class="sourceLineNo">057</span><a name="line.57"></a> -<span class="sourceLineNo">058</span> /**<a name="line.58"></a> -<span class="sourceLineNo">059</span> * Return true if cell visibility features are supported and enabled<a name="line.59"></a> -<span class="sourceLineNo">060</span> * @param connection The connection to use<a name="line.60"></a> -<span class="sourceLineNo">061</span> * @return true if cell visibility features are supported and enabled, false otherwise<a name="line.61"></a> -<span class="sourceLineNo">062</span> * @throws IOException<a name="line.62"></a> -<span class="sourceLineNo">063</span> */<a name="line.63"></a> -<span class="sourceLineNo">064</span> public static boolean isCellVisibilityEnabled(Connection connection) throws IOException {<a name="line.64"></a> -<span class="sourceLineNo">065</span> return connection.getAdmin().getSecurityCapabilities()<a name="line.65"></a> -<span class="sourceLineNo">066</span> .contains(SecurityCapability.CELL_VISIBILITY);<a name="line.66"></a> -<span class="sourceLineNo">067</span> }<a name="line.67"></a> -<span class="sourceLineNo">068</span><a name="line.68"></a> -<span class="sourceLineNo">069</span> /**<a name="line.69"></a> -<span class="sourceLineNo">070</span> * Utility method for adding label to the system.<a name="line.70"></a> -<span class="sourceLineNo">071</span> *<a name="line.71"></a> -<span class="sourceLineNo">072</span> * @param conf<a name="line.72"></a> -<span class="sourceLineNo">073</span> * @param label<a name="line.73"></a> -<span class="sourceLineNo">074</span> * @return VisibilityLabelsResponse<a name="line.74"></a> -<span class="sourceLineNo">075</span> * @throws Throwable<a name="line.75"></a> -<span class="sourceLineNo">076</span> * @deprecated Use {@link #addLabel(Connection,String)} instead.<a name="line.76"></a> -<span class="sourceLineNo">077</span> */<a name="line.77"></a> -<span class="sourceLineNo">078</span> @Deprecated<a name="line.78"></a> -<span class="sourceLineNo">079</span> public static VisibilityLabelsResponse addLabel(Configuration conf, final String label)<a name="line.79"></a> -<span class="sourceLineNo">080</span> throws Throwable {<a name="line.80"></a> -<span class="sourceLineNo">081</span> try (Connection connection = ConnectionFactory.createConnection(conf)) {<a name="line.81"></a> -<span class="sourceLineNo">082</span> return addLabels(connection, new String[] { label });<a name="line.82"></a> -<span class="sourceLineNo">083</span> }<a name="line.83"></a> -<span class="sourceLineNo">084</span> }<a name="line.84"></a> -<span class="sourceLineNo">085</span><a name="line.85"></a> -<span class="sourceLineNo">086</span> /**<a name="line.86"></a> -<span class="sourceLineNo">087</span> * Utility method for adding label to the system.<a name="line.87"></a> -<span class="sourceLineNo">088</span> *<a name="line.88"></a> -<span class="sourceLineNo">089</span> * @param connection<a name="line.89"></a> -<span class="sourceLineNo">090</span> * @param label<a name="line.90"></a> -<span class="sourceLineNo">091</span> * @return VisibilityLabelsResponse<a name="line.91"></a> -<span class="sourceLineNo">092</span> * @throws Throwable<a name="line.92"></a> -<span class="sourceLineNo">093</span> */<a name="line.93"></a> -<span class="sourceLineNo">094</span> public static VisibilityLabelsResponse addLabel(Connection connection, final String label)<a name="line.94"></a> -<span class="sourceLineNo">095</span> throws Throwable {<a name="line.95"></a> -<span class="sourceLineNo">096</span> return addLabels(connection, new String[] { label });<a name="line.96"></a> -<span class="sourceLineNo">097</span> }<a name="line.97"></a> -<span class="sourceLineNo">098</span><a name="line.98"></a> -<span class="sourceLineNo">099</span> /**<a name="line.99"></a> -<span class="sourceLineNo">100</span> * Utility method for adding labels to the system.<a name="line.100"></a> -<span class="sourceLineNo">101</span> *<a name="line.101"></a> -<span class="sourceLineNo">102</span> * @param conf<a name="line.102"></a> -<span class="sourceLineNo">103</span> * @param labels<a name="line.103"></a> -<span class="sourceLineNo">104</span> * @return VisibilityLabelsResponse<a name="line.104"></a> -<span class="sourceLineNo">105</span> * @throws Throwable<a name="line.105"></a> -<span class="sourceLineNo">106</span> * @deprecated Use {@link #addLabels(Connection,String[])} instead.<a name="line.106"></a> -<span class="sourceLineNo">107</span> */<a name="line.107"></a> -<span class="sourceLineNo">108</span> @Deprecated<a name="line.108"></a> -<span class="sourceLineNo">109</span> public static VisibilityLabelsResponse addLabels(Configuration conf, final String[] labels)<a name="line.109"></a> -<span class="sourceLineNo">110</span> throws Throwable {<a name="line.110"></a> -<span class="sourceLineNo">111</span> try (Connection connection = ConnectionFactory.createConnection(conf)) {<a name="line.111"></a> -<span class="sourceLineNo">112</span> return addLabels(connection, labels);<a name="line.112"></a> -<span class="sourceLineNo">113</span> }<a name="line.113"></a> -<span class="sourceLineNo">114</span> }<a name="line.114"></a> -<span class="sourceLineNo">115</span><a name="line.115"></a> -<span class="sourceLineNo">116</span> /**<a name="line.116"></a> -<span class="sourceLineNo">117</span> * Utility method for adding labels to the system.<a name="line.117"></a> -<span class="sourceLineNo">118</span> *<a name="line.118"></a> -<span class="sourceLineNo">119</span> * @param connection<a name="line.119"></a> -<span class="sourceLineNo">120</span> * @param labels<a name="line.120"></a> -<span class="sourceLineNo">121</span> * @return VisibilityLabelsResponse<a name="line.121"></a> -<span class="sourceLineNo">122</span> * @throws Throwable<a name="line.122"></a> -<span class="sourceLineNo">123</span> */<a name="line.123"></a> -<span class="sourceLineNo">124</span> public static VisibilityLabelsResponse addLabels(Connection connection, final String[] labels)<a name="line.124"></a> -<span class="sourceLineNo">125</span> throws Throwable {<a name="line.125"></a> -<span class="sourceLineNo">126</span><a name="line.126"></a> -<span class="sourceLineNo">127</span> try (Table table = connection.getTable(LABELS_TABLE_NAME)) {<a name="line.127"></a> -<span class="sourceLineNo">128</span> Batch.Call<VisibilityLabelsService, VisibilityLabelsResponse> callable =<a name="line.128"></a> -<span class="sourceLineNo">129</span> new Batch.Call<VisibilityLabelsService, VisibilityLabelsResponse>() {<a name="line.129"></a> -<span class="sourceLineNo">130</span> ServerRpcController controller = new ServerRpcController();<a name="line.130"></a> -<span class="sourceLineNo">131</span> BlockingRpcCallback<VisibilityLabelsResponse> rpcCallback =<a name="line.131"></a> -<span class="sourceLineNo">132</span> new BlockingRpcCallback<VisibilityLabelsResponse>();<a name="line.132"></a> -<span class="sourceLineNo">133</span><a name="line.133"></a> -<span class="sourceLineNo">134</span> public VisibilityLabelsResponse call(VisibilityLabelsService service)<a name="line.134"></a> -<span class="sourceLineNo">135</span> throws IOException {<a name="line.135"></a> -<span class="sourceLineNo">136</span> VisibilityLabelsRequest.Builder builder = VisibilityLabelsRequest.newBuilder();<a name="line.136"></a> -<span class="sourceLineNo">137</span> for (String label : labels) {<a name="line.137"></a> -<span class="sourceLineNo">138</span> if (label.length() > 0) {<a name="line.138"></a> -<span class="sourceLineNo">139</span> VisibilityLabel.Builder newBuilder = VisibilityLabel.newBuilder();<a name="line.139"></a> -<span class="sourceLineNo">140</span> newBuilder.setLabel(ByteStringer.wrap(Bytes.toBytes(label)));<a name="line.140"></a> -<span class="sourceLineNo">141</span> builder.addVisLabel(newBuilder.build());<a name="line.141"></a> -<span class="sourceLineNo">142</span> }<a name="line.142"></a> -<span class="sourceLineNo">143</span> }<a name="line.143"></a> -<span class="sourceLineNo">144</span> service.addLabels(controller, builder.build(), rpcCallback);<a name="line.144"></a> -<span class="sourceLineNo">145</span> VisibilityLabelsResponse response = rpcCallback.get();<a name="line.145"></a> -<span class="sourceLineNo">146</span> if (controller.failedOnException()) {<a name="line.146"></a> -<span class="sourceLineNo">147</span> throw controller.getFailedOn();<a name="line.147"></a> -<span class="sourceLineNo">148</span> }<a name="line.148"></a> -<span class="sourceLineNo">149</span> return response;<a name="line.149"></a> -<span class="sourceLineNo">150</span> }<a name="line.150"></a> -<span class="sourceLineNo">151</span> };<a name="line.151"></a> -<span class="sourceLineNo">152</span> Map<byte[], VisibilityLabelsResponse> result =<a name="line.152"></a> -<span class="sourceLineNo">153</span> table.coprocessorService(VisibilityLabelsService.class, HConstants.EMPTY_BYTE_ARRAY,<a name="line.153"></a> -<span class="sourceLineNo">154</span> HConstants.EMPTY_BYTE_ARRAY, callable);<a name="line.154"></a> -<span class="sourceLineNo">155</span> return result.values().iterator().next(); // There will be exactly one region for labels<a name="line.155"></a> -<span class="sourceLineNo">156</span> // table and so one entry in result Map.<a name="line.156"></a> -<span class="sourceLineNo">157</span> }<a name="line.157"></a> -<span class="sourceLineNo">158</span> }<a name="line.158"></a> -<span class="sourceLineNo">159</span><a name="line.159"></a> -<span class="sourceLineNo">160</span> /**<a name="line.160"></a> -<span class="sourceLineNo">161</span> * Sets given labels globally authorized for the user.<a name="line.161"></a> -<span class="sourceLineNo">162</span> * @param conf<a name="line.162"></a> -<span class="sourceLineNo">163</span> * @param auths<a name="line.163"></a> -<span class="sourceLineNo">164</span> * @param user<a name="line.164"></a> -<span class="sourceLineNo">165</span> * @return VisibilityLabelsResponse<a name="line.165"></a> -<span class="sourceLineNo">166</span> * @throws Throwable<a name="line.166"></a> -<span class="sourceLineNo">167</span> * @deprecated Use {@link #setAuths(Connection,String[],String)} instead.<a name="line.167"></a> -<span class="sourceLineNo">168</span> */<a name="line.168"></a> -<span class="sourceLineNo">169</span> @Deprecated<a name="line.169"></a> -<span class="sourceLineNo">170</span> public static VisibilityLabelsResponse setAuths(Configuration conf, final String[] auths,<a name="line.170"></a> -<span class="sourceLineNo">171</span> final String user) throws Throwable {<a name="line.171"></a> -<span class="sourceLineNo">172</span> try (Connection connection = ConnectionFactory.createConnection(conf)) {<a name="line.172"></a> -<span class="sourceLineNo">173</span> return setOrClearAuths(connection, auths, user, true);<a name="line.173"></a> -<span class="sourceLineNo">174</span> }<a name="line.174"></a> -<span class="sourceLineNo">175</span> }<a name="line.175"></a> -<span class="sourceLineNo">176</span><a name="line.176"></a> -<span class="sourceLineNo">177</span> /**<a name="line.177"></a> -<span class="sourceLineNo">178</span> * Sets given labels globally authorized for the user.<a name="line.178"></a> -<span class="sourceLineNo">179</span> * @param connection<a name="line.179"></a> -<span class="sourceLineNo">180</span> * @param auths<a name="line.180"></a> -<span class="sourceLineNo">181</span> * @param user<a name="line.181"></a> -<span class="sourceLineNo">182</span> * @return VisibilityLabelsResponse<a name="line.182"></a> -<span class="sourceLineNo">183</span> * @throws Throwable<a name="line.183"></a> -<span class="sourceLineNo">184</span> */<a name="line.184"></a> -<span class="sourceLineNo">185</span> public static VisibilityLabelsResponse setAuths(Connection connection, final String[] auths,<a name="line.185"></a> -<span class="sourceLineNo">186</span> final String user) throws Throwable {<a name="line.186"></a> -<span class="sourceLineNo">187</span> return setOrClearAuths(connection, auths, user, true);<a name="line.187"></a> -<span class="sourceLineNo">188</span> }<a name="line.188"></a> -<span class="sourceLineNo">189</span><a name="line.189"></a> -<span class="sourceLineNo">190</span> /**<a name="line.190"></a> -<span class="sourceLineNo">191</span> * @param conf<a name="line.191"></a> -<span class="sourceLineNo">192</span> * @param user<a name="line.192"></a> -<span class="sourceLineNo">193</span> * @return labels, the given user is globally authorized for.<a name="line.193"></a> -<span class="sourceLineNo">194</span> * @throws Throwable<a name="line.194"></a> -<span class="sourceLineNo">195</span> * @deprecated Use {@link #getAuths(Connection,String)} instead.<a name="line.195"></a> -<span class="sourceLineNo">196</span> */<a name="line.196"></a> -<span class="sourceLineNo">197</span> @Deprecated<a name="line.197"></a> -<span class="sourceLineNo">198</span> public static GetAuthsResponse getAuths(Configuration conf, final String user) throws Throwable {<a name="line.198"></a> -<span class="sourceLineNo">199</span> try (Connection connection = ConnectionFactory.createConnection(conf)) {<a name="line.199"></a> -<span class="sourceLineNo">200</span> return getAuths(connection, user);<a name="line.200"></a> -<span class="sourceLineNo">201</span> }<a name="line.201"></a> -<span class="sourceLineNo">202</span> }<a name="line.202"></a> -<span class="sourceLineNo">203</span><a name="line.203"></a> -<span class="sourceLineNo">204</span> /**<a name="line.204"></a> -<span class="sourceLineNo">205</span> * @param connection the Connection instance to use.<a name="line.205"></a> -<span class="sourceLineNo">206</span> * @param user<a name="line.206"></a> -<span class="sourceLineNo">207</span> * @return labels, the given user is globally authorized for.<a name="line.207"></a> -<span class="sourceLineNo">208</span> * @throws Throwable<a name="line.208"></a> -<span class="sourceLineNo">209</span> */<a name="line.209"></a> -<span class="sourceLineNo">210</span> public static GetAuthsResponse getAuths(Connection connection, final String user)<a name="line.210"></a> -<span class="sourceLineNo">211</span> throws Throwable {<a name="line.211"></a> -<span class="sourceLineNo">212</span> try (Table table = connection.getTable(LABELS_TABLE_NAME)) {<a name="line.212"></a> -<span class="sourceLineNo">213</span> Batch.Call<VisibilityLabelsService, GetAuthsResponse> callable = <a name="line.213"></a> -<span class="sourceLineNo">214</span> new Batch.Call<VisibilityLabelsService, GetAuthsResponse>() {<a name="line.214"></a> -<span class="sourceLineNo">215</span> ServerRpcController controller = new ServerRpcController();<a name="line.215"></a> -<span class="sourceLineNo">216</span> BlockingRpcCallback<GetAuthsResponse> rpcCallback = <a name="line.216"></a> -<span class="sourceLineNo">217</span> new BlockingRpcCallback<GetAuthsResponse>();<a name="line.217"></a> -<span class="sourceLineNo">218</span><a name="line.218"></a> -<span class="sourceLineNo">219</span> public GetAuthsResponse call(VisibilityLabelsService service) throws IOException {<a name="line.219"></a> -<span class="sourceLineNo">220</span> GetAuthsRequest.Builder getAuthReqBuilder = GetAuthsRequest.newBuilder();<a name="line.220"></a> -<span class="sourceLineNo">221</span> getAuthReqBuilder.setUser(ByteStringer.wrap(Bytes.toBytes(user)));<a name="line.221"></a> -<span class="sourceLineNo">222</span> service.getAuths(controller, getAuthReqBuilder.build(), rpcCallback);<a name="line.222"></a> -<span class="sourceLineNo">223</span> GetAuthsResponse response = rpcCallback.get();<a name="line.223"></a> -<span class="sourceLineNo">224</span> if (controller.failedOnException()) {<a name="line.224"></a> -<span class="sourceLineNo">225</span> throw controller.getFailedOn();<a name="line.225"></a> -<span class="sourceLineNo">226</span> }<a name="line.226"></a> -<span class="sourceLineNo">227</span> return response;<a name="line.227"></a> -<span class="sourceLineNo">228</span> }<a name="line.228"></a> -<span class="sourceLineNo">229</span> };<a name="line.229"></a> -<span class="sourceLineNo">230</span> Map<byte[], GetAuthsResponse> result =<a name="line.230"></a> -<span class="sourceLineNo">231</span> table.coprocessorService(VisibilityLabelsService.class,<a name="line.231"></a> -<span class="sourceLineNo">232</span> HConstants.EMPTY_BYTE_ARRAY, HConstants.EMPTY_BYTE_ARRAY, callable);<a name="line.232"></a> -<span class="sourceLineNo">233</span> return result.values().iterator().next(); // There will be exactly one region for labels<a name="line.233"></a> -<span class="sourceLineNo">234</span> // table and so one entry in result Map.<a name="line.234"></a> -<span class="sourceLineNo">235</span> }<a name="line.235"></a> -<span class="sourceLineNo">236</span> }<a name="line.236"></a> -<span class="sourceLineNo">237</span><a name="line.237"></a> -<span class="sourceLineNo">238</span> /**<a name="line.238"></a> -<span class="sourceLineNo">239</span> * Retrieve the list of visibility labels defined in the system.<a name="line.239"></a> -<span class="sourceLineNo">240</span> * @param conf<a name="line.240"></a> -<span class="sourceLineNo">241</span> * @param regex The regular expression to filter which labels are returned.<a name="line.241"></a> -<span class="sourceLineNo">242</span> * @return labels The list of visibility labels defined in the system.<a name="line.242"></a> -<span class="sourceLineNo">243</span> * @throws Throwable<a name="line.243"></a> -<span class="sourceLineNo">244</span> * @deprecated Use {@link #listLabels(Connection,String)} instead.<a name="line.244"></a> -<span class="sourceLineNo">245</span> */<a name="line.245"></a> -<span class="sourceLineNo">246</span> @Deprecated<a name="line.246"></a> -<span class="sourceLineNo">247</span> public static ListLabelsResponse listLabels(Configuration conf, final String regex)<a name="line.247"></a> -<span class="sourceLineNo">248</span> throws Throwable {<a name="line.248"></a> -<span class="sourceLineNo">249</span> try(Connection connection = ConnectionFactory.createConnection(conf)){<a name="line.249"></a> -<span class="sourceLineNo">250</span> return listLabels(connection, regex);<a name="line.250"></a> -<span class="sourceLineNo">251</span> }<a name="line.251"></a> -<span class="sourceLineNo">252</span> }<a name="line.252"></a> -<span class="sourceLineNo">253</span><a name="line.253"></a> -<span class="sourceLineNo">254</span> /**<a name="line.254"></a> -<span class="sourceLineNo">255</span> * Retrieve the list of visibility labels defined in the system.<a name="line.255"></a> -<span class="sourceLineNo">256</span> * @param connection The Connection instance to use.<a name="line.256"></a> -<span class="sourceLineNo">257</span> * @param regex The regular expression to filter which labels are returned.<a name="line.257"></a> -<span class="sourceLineNo">258</span> * @return labels The list of visibility labels defined in the system.<a name="line.258"></a> -<span class="sourceLineNo">259</span> * @throws Throwable<a name="line.259"></a> -<span class="sourceLineNo">260</span> */<a name="line.260"></a> -<span class="sourceLineNo">261</span> public static ListLabelsResponse listLabels(Connection connection, final String regex)<a name="line.261"></a> -<span class="sourceLineNo">262</span> throws Throwable {<a name="line.262"></a> -<span class="sourceLineNo">263</span> Table table = null;<a name="line.263"></a> -<span class="sourceLineNo">264</span> try {<a name="line.264"></a> -<span class="sourceLineNo">265</span> table = connection.getTable(LABELS_TABLE_NAME);<a name="line.265"></a> -<span class="sourceLineNo">266</span> Batch.Call<VisibilityLabelsService, ListLabelsResponse> callable =<a name="line.266"></a> -<span class="sourceLineNo">267</span> new Batch.Call<VisibilityLabelsService, ListLabelsResponse>() {<a name="line.267"></a> -<span class="sourceLineNo">268</span> ServerRpcController controller = new ServerRpcController();<a name="line.268"></a> -<span class="sourceLineNo">269</span> BlockingRpcCallback<ListLabelsResponse> rpcCallback =<a name="line.269"></a> -<span class="sourceLineNo">270</span> new BlockingRpcCallback<ListLabelsResponse>();<a name="line.270"></a> -<span class="sourceLineNo">271</span><a name="line.271"></a> -<span class="sourceLineNo">272</span> public ListLabelsResponse call(VisibilityLabelsService service) throws IOException {<a name="line.272"></a> -<span class="sourceLineNo">273</span> ListLabelsRequest.Builder listAuthLabelsReqBuilder = ListLabelsRequest.newBuilder();<a name="line.273"></a> -<span class="sourceLineNo">274</span> if (regex != null) {<a name="line.274"></a> -<span class="sourceLineNo">275</span> // Compile the regex here to catch any regex exception earlier.<a name="line.275"></a> -<span class="sourceLineNo">276</span> Pattern pattern = Pattern.compile(regex);<a name="line.276"></a> -<span class="sourceLineNo">277</span> listAuthLabelsReqBuilder.setRegex(pattern.toString());<a name="line.277"></a> -<span class="sourceLineNo">278</span> }<a name="line.278"></a> -<span class="sourceLineNo">279</span> service.listLabels(controller, listAuthLabelsReqBuilder.build(), rpcCallback);<a name="line.279"></a> -<span class="sourceLineNo">280</span> ListLabelsResponse response = rpcCallback.get();<a name="line.280"></a> -<span class="sourceLineNo">281</span> if (controller.failedOnException()) {<a name="line.281"></a> -<span class="sourceLineNo">282</span> throw controller.getFailedOn();<a name="line.282"></a> -<span class="sourceLineNo">283</span> }<a name="line.283"></a> -<span class="sourceLineNo">284</span> return response;<a name="line.284"></a> -<span class="sourceLineNo">285</span> }<a name="line.285"></a> -<span class="sourceLineNo">286</span> };<a name="line.286"></a> -<span class="sourceLineNo">287</span> Map<byte[], ListLabelsResponse> result =<a name="line.287"></a> -<span class="sourceLineNo">288</span> table.coprocessorService(VisibilityLabelsService.class, HConstants.EMPTY_BYTE_ARRAY,<a name="line.288"></a> -<span class="sourceLineNo">289</span> HConstants.EMPTY_BYTE_ARRAY, callable);<a name="line.289"></a> -<span class="sourceLineNo">290</span> return result.values().iterator().next(); // There will be exactly one region for labels<a name="line.290"></a> -<span class="sourceLineNo">291</span> // table and so one entry in result Map.<a name="line.291"></a> -<span class="sourceLineNo">292</span> }<a name="line.292"></a> -<span class="sourceLineNo">293</span> finally {<a name="line.293"></a> -<span class="sourceLineNo">294</span> if (table != null) {<a name="line.294"></a> -<span class="sourceLineNo">295</span> table.close();<a name="line.295"></a> -<span class="sourceLineNo">296</span> }<a name="line.296"></a> -<span class="sourceLineNo">297</span> if (connection != null) {<a name="line.297"></a> -<span class="sourceLineNo">298</span> connection.close();<a name="line.298"></a> -<span class="sourceLineNo">299</span> }<a name="line.299"></a> -<span class="sourceLineNo">300</span> }<a name="line.300"></a> -<span class="sourceLineNo">301</span> }<a name="line.301"></a> -<span class="sourceLineNo">302</span><a name="line.302"></a> -<span class="sourceLineNo">303</span> /**<a name="line.303"></a> -<span class="sourceLineNo">304</span> * Removes given labels from user's globally authorized list of labels.<a name="line.304"></a> -<span class="sourceLineNo">305</span> * @param conf<a name="line.305"></a> -<span class="sourceLineNo">306</span> * @param auths<a name="line.306"></a> -<span class="sourceLineNo">307</span> * @param user<a name="line.307"></a> -<span class="sourceLineNo">308</span> * @return VisibilityLabelsResponse<a name="line.308"></a> -<span class="sourceLineNo">309</span> * @throws Throwable<a name="line.309"></a> -<span class="sourceLineNo">310</span> * @deprecated Use {@link #clearAuths(Connection,String[],String)} instead.<a name="line.310"></a> -<span class="sourceLineNo">311</span> */<a name="line.311"></a> -<span class="sourceLineNo">312</span> @Deprecated<a name="line.312"></a> -<span class="sourceLineNo">313</span> public static VisibilityLabelsResponse clearAuths(Configuration conf, final String[] auths,<a name="line.313"></a> -<span class="sourceLineNo">314</span> final String user) throws Throwable {<a name="line.314"></a> -<span class="sourceLineNo">315</span> try (Connection connection = ConnectionFactory.createConnection(conf)) {<a name="line.315"></a> -<span class="sourceLineNo">316</span> return setOrClearAuths(connection, auths, user, false);<a name="line.316"></a> -<span class="sourceLineNo">317</span> }<a name="line.317"></a> -<span class="sourceLineNo">318</span> }<a name="line.318"></a> -<span class="sourceLineNo">319</span><a name="line.319"></a> -<span class="sourceLineNo">320</span> /**<a name="line.320"></a> -<span class="sourceLineNo">321</span> * Removes given labels from user's globally authorized list of labels.<a name="line.321"></a> -<span class="sourceLineNo">322</span> * @param connection<a name="line.322"></a> -<span class="sourceLineNo">323</span> * @param auths<a name="line.323"></a> -<span class="sourceLineNo">324</span> * @param user<a name="line.324"></a> -<span class="sourceLineNo">325</span> * @return VisibilityLabelsResponse<a name="line.325"></a> -<span class="sourceLineNo">326</span> * @throws Throwable<a name="line.326"></a> -<span class="sourceLineNo">327</span> */<a name="line.327"></a> -<span class="sourceLineNo">328</span> public static VisibilityLabelsResponse clearAuths(Connection connection, final String[] auths,<a name="line.328"></a> -<span class="sourceLineNo">329</span> final String user) throws Throwable {<a name="line.329"></a> -<span class="sourceLineNo">330</span> return setOrClearAuths(connection, auths, user, false);<a name="line.330"></a> -<span class="sourceLineNo">331</span> }<a name="line.331"></a> -<span class="sourceLineNo">332</span><a name="line.332"></a> -<span class="sourceLineNo">333</span> private static VisibilityLabelsResponse setOrClearAuths(Connection connection,<a name="line.333"></a> -<span class="sourceLineNo">334</span> final String[] auths, final String user, final boolean setOrClear)<a name="line.334"></a> -<span class="sourceLineNo">335</span> throws IOException, ServiceException, Throwable {<a name="line.335"></a> -<span class="sourceLineNo">336</span><a name="line.336"></a> -<span class="sourceLineNo">337</span> try (Table table = connection.getTable(LABELS_TABLE_NAME)) {<a name="line.337"></a> -<span class="sourceLineNo">338</span> Batch.Call<VisibilityLabelsService, VisibilityLabelsResponse> callable = <a name="line.338"></a> -<span class="sourceLineNo">339</span> new Batch.Call<VisibilityLabelsService, VisibilityLabelsResponse>() {<a name="line.339"></a> -<span class="sourceLineNo">340</span> ServerRpcController controller = new ServerRpcController();<a name="line.340"></a> -<span class="sourceLineNo">341</span> BlockingRpcCallback<VisibilityLabelsResponse> rpcCallback = <a name="line.341"></a> -<span class="sourceLineNo">342</span> new BlockingRpcCallback<VisibilityLabelsResponse>();<a name="line.342"></a> -<span class="sourceLineNo">343</span><a name="line.343"></a> -<span class="sourceLineNo">344</span> public VisibilityLabelsResponse call(VisibilityLabelsService service) throws IOException {<a name="line.344"></a> -<span class="sourceLineNo">345</span> SetAuthsRequest.Builder setAuthReqBuilder = SetAuthsRequest.newBuilder();<a name="line.345"></a> -<span class="sourceLineNo">346</span> setAuthReqBuilder.setUser(ByteStringer.wrap(Bytes.toBytes(user)));<a name="line.346"></a> -<span class="sourceLineNo">347</span> for (String auth : auths) {<a name="line.347"></a> -<span class="sourceLineNo">348</span> if (auth.length() > 0) {<a name="line.348"></a> -<span class="sourceLineNo">349</span> setAuthReqBuilder.addAuth(ByteStringer.wrap(Bytes.toBytes(auth)));<a name="line.349"></a> -<span class="sourceLineNo">350</span> }<a name="line.350"></a> -<span class="sourceLineNo">351</span> }<a name="line.351"></a> -<span class="sourceLineNo">352</span> if (setOrClear) {<a name="line.352"></a> -<span class="sourceLineNo">353</span> service.setAuths(controller, setAuthReqBuilder.build(), rpcCallback);<a name="line.353"></a> -<span class="sourceLineNo">354</span> } else {<a name="line.354"></a> -<span class="sourceLineNo">355</span> service.clearAuths(controller, setAuthReqBuilder.build(), rpcCallback);<a name="line.355"></a> -<span class="sourceLineNo">356</span> }<a name="line.356"></a> -<span class="sourceLineNo">357</span> VisibilityLabelsResponse response = rpcCallback.get();<a name="line.357"></a> -<span class="sourceLineNo">358</span> if (controller.failedOnException()) {<a name="line.358"></a> -<span class="sourceLineNo">359</span> throw controller.getFailedOn();<a name="line.359"></a> -<span class="sourceLineNo">360</span> }<a name="line.360"></a> -<span class="sourceLineNo">361</span> return response;<a name="line.361"></a> -<span class="sourceLineNo">362</span> }<a name="line.362"></a> -<span class="sourceLineNo">363</span> };<a name="line.363"></a> -<span class="sourceLineNo">364</span> Map<byte[], VisibilityLabelsResponse> result = table.coprocessorService(<a name="line.364"></a> -<span class="sourceLineNo">365</span> VisibilityLabelsService.class, HConstants.EMPTY_BYTE_ARRAY, HConstants.EMPTY_BYTE_ARRAY,<a name="line.365"></a> -<span class="sourceLineNo">366</span> callable);<a name="line.366"></a> -<span class="sourceLineNo">367</span> return result.values().iterator().next(); // There will be exactly one region for labels<a name="line.367"></a> -<span class="sourceLineNo">368</span> // table and so one entry in result Map.<a name="line.368"></a> -<span class="sourceLineNo">369</span> }<a name="line.369"></a> -<span class="sourceLineNo">370</span> }<a name="line.370"></a> -<span class="sourceLineNo">371</span>}<a name="line.371"></a> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</pre> -</div> -</body> -</html>
http://git-wip-us.apache.org/repos/asf/hbase/blob/fc29f802/apidocs/src-html/org/apache/hadoop/hbase/security/visibility/VisibilityControllerNotReadyException.html ---------------------------------------------------------------------- diff --git a/apidocs/src-html/org/apache/hadoop/hbase/security/visibility/VisibilityControllerNotReadyException.html b/apidocs/src-html/org/apache/hadoop/hbase/security/visibility/VisibilityControllerNotReadyException.html deleted file mode 100644 index b0f1501..0000000 --- a/apidocs/src-html/org/apache/hadoop/hbase/security/visibility/VisibilityControllerNotReadyException.html +++ /dev/null @@ -1,109 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html lang="en"> -<head> -<title>Source code</title> -<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style"> -</head> -<body> -<div class="sourceContainer"> -<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a> -<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a> -<span class="sourceLineNo">003</span> * or more contributor license agreements. See the NOTICE file<a name="line.3"></a> -<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a> -<span class="sourceLineNo">005</span> * regarding copyright ownership. The ASF licenses this file<a name="line.5"></a> -<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a> -<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a> -<span class="sourceLineNo">008</span> * with the License. You may obtain a copy of the License at<a name="line.8"></a> -<span class="sourceLineNo">009</span> *<a name="line.9"></a> -<span class="sourceLineNo">010</span> * http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a> -<span class="sourceLineNo">011</span> *<a name="line.11"></a> -<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a> -<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a> -<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a> -<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a> -<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a> -<span class="sourceLineNo">017</span> */<a name="line.17"></a> -<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.security.visibility;<a name="line.18"></a> -<span class="sourceLineNo">019</span><a name="line.19"></a> -<span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a> -<span class="sourceLineNo">021</span><a name="line.21"></a> -<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.22"></a> -<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.classification.InterfaceStability;<a name="line.23"></a> -<span class="sourceLineNo">024</span><a name="line.24"></a> -<span class="sourceLineNo">025</span>/*<a name="line.25"></a> -<span class="sourceLineNo">026</span> * This exception indicates that VisibilityController hasn't finished initialization.<a name="line.26"></a> -<span class="sourceLineNo">027</span> */<a name="line.27"></a> -<span class="sourceLineNo">028</span>@InterfaceAudience.Public<a name="line.28"></a> -<span class="sourceLineNo">029</span>@InterfaceStability.Evolving<a name="line.29"></a> -<span class="sourceLineNo">030</span>public class VisibilityControllerNotReadyException extends IOException {<a name="line.30"></a> -<span class="sourceLineNo">031</span><a name="line.31"></a> -<span class="sourceLineNo">032</span> private static final long serialVersionUID = 1725986525207989173L;<a name="line.32"></a> -<span class="sourceLineNo">033</span><a name="line.33"></a> -<span class="sourceLineNo">034</span> public VisibilityControllerNotReadyException(String msg) {<a name="line.34"></a> -<span class="sourceLineNo">035</span> super(msg);<a name="line.35"></a> -<span class="sourceLineNo">036</span> }<a name="line.36"></a> -<span class="sourceLineNo">037</span>}<a name="line.37"></a> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</pre> -</div> -</body> -</html> http://git-wip-us.apache.org/repos/asf/hbase/blob/fc29f802/apidocs/src-html/org/apache/hadoop/hbase/security/visibility/VisibilityExpEvaluator.html ---------------------------------------------------------------------- diff --git a/apidocs/src-html/org/apache/hadoop/hbase/security/visibility/VisibilityExpEvaluator.html b/apidocs/src-html/org/apache/hadoop/hbase/security/visibility/VisibilityExpEvaluator.html deleted file mode 100644 index 696c482..0000000 --- a/apidocs/src-html/org/apache/hadoop/hbase/security/visibility/VisibilityExpEvaluator.html +++ /dev/null @@ -1,114 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html lang="en"> -<head> -<title>Source code</title> -<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style"> -</head> -<body> -<div class="sourceContainer"> -<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a> -<span class="sourceLineNo">002</span> *<a name="line.2"></a> -<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a> -<span class="sourceLineNo">004</span> * or more contributor license agreements. See the NOTICE file<a name="line.4"></a> -<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a> -<span class="sourceLineNo">006</span> * regarding copyright ownership. The ASF licenses this file<a name="line.6"></a> -<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a> -<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a> -<span class="sourceLineNo">009</span> * with the License. You may obtain a copy of the License at<a name="line.9"></a> -<span class="sourceLineNo">010</span> *<a name="line.10"></a> -<span class="sourceLineNo">011</span> * http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a> -<span class="sourceLineNo">012</span> *<a name="line.12"></a> -<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a> -<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a> -<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a> -<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a> -<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a> -<span class="sourceLineNo">018</span> */<a name="line.18"></a> -<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.security.visibility;<a name="line.19"></a> -<span class="sourceLineNo">020</span><a name="line.20"></a> -<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a> -<span class="sourceLineNo">022</span><a name="line.22"></a> -<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.23"></a> -<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.classification.InterfaceStability;<a name="line.24"></a> -<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.Cell;<a name="line.25"></a> -<span class="sourceLineNo">026</span><a name="line.26"></a> -<span class="sourceLineNo">027</span>/**<a name="line.27"></a> -<span class="sourceLineNo">028</span> * During the read (ie. get/Scan) the VisibilityController calls this interface for each of the<a name="line.28"></a> -<span class="sourceLineNo">029</span> * Cell. Depending on the evaluate() result, a cell can be either included or filtered out from the<a name="line.29"></a> -<span class="sourceLineNo">030</span> * read results.<a name="line.30"></a> -<span class="sourceLineNo">031</span> */<a name="line.31"></a> -<span class="sourceLineNo">032</span>@InterfaceAudience.Public<a name="line.32"></a> -<span class="sourceLineNo">033</span>@InterfaceStability.Evolving<a name="line.33"></a> -<span class="sourceLineNo">034</span>public interface VisibilityExpEvaluator {<a name="line.34"></a> -<span class="sourceLineNo">035</span><a name="line.35"></a> -<span class="sourceLineNo">036</span> /**<a name="line.36"></a> -<span class="sourceLineNo">037</span> * Evaluates whether the passed cell passes Scan/Get Authorization.<a name="line.37"></a> -<span class="sourceLineNo">038</span> * @param cell Cell under evaluation<a name="line.38"></a> -<span class="sourceLineNo">039</span> * @return true if this cell can be included in the Result. Else false.<a name="line.39"></a> -<span class="sourceLineNo">040</span> */<a name="line.40"></a> -<span class="sourceLineNo">041</span> boolean evaluate(Cell cell) throws IOException;<a name="line.41"></a> -<span class="sourceLineNo">042</span>}<a name="line.42"></a> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</pre> -</div> -</body> -</html> http://git-wip-us.apache.org/repos/asf/hbase/blob/fc29f802/apidocs/src-html/org/apache/hadoop/hbase/security/visibility/VisibilityLabelService.html ---------------------------------------------------------------------- diff --git a/apidocs/src-html/org/apache/hadoop/hbase/security/visibility/VisibilityLabelService.html b/apidocs/src-html/org/apache/hadoop/hbase/security/visibility/VisibilityLabelService.html deleted file mode 100644 index 72ab3b1..0000000 --- a/apidocs/src-html/org/apache/hadoop/hbase/security/visibility/VisibilityLabelService.html +++ /dev/null @@ -1,255 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html lang="en"> -<head> -<title>Source code</title> -<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style"> -</head> -<body> -<div class="sourceContainer"> -<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a> -<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a> -<span class="sourceLineNo">003</span> * or more contributor license agreements. See the NOTICE file<a name="line.3"></a> -<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a> -<span class="sourceLineNo">005</span> * regarding copyright ownership. The ASF licenses this file<a name="line.5"></a> -<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a> -<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a> -<span class="sourceLineNo">008</span> * with the License. You may obtain a copy of the License at<a name="line.8"></a> -<span class="sourceLineNo">009</span> *<a name="line.9"></a> -<span class="sourceLineNo">010</span> * http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a> -<span class="sourceLineNo">011</span> *<a name="line.11"></a> -<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a> -<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a> -<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a> -<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a> -<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a> -<span class="sourceLineNo">017</span> */<a name="line.17"></a> -<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.security.visibility;<a name="line.18"></a> -<span class="sourceLineNo">019</span><a name="line.19"></a> -<span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a> -<span class="sourceLineNo">021</span>import java.util.List;<a name="line.21"></a> -<span class="sourceLineNo">022</span><a name="line.22"></a> -<span class="sourceLineNo">023</span>import org.apache.hadoop.conf.Configurable;<a name="line.23"></a> -<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.Tag;<a name="line.24"></a> -<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.TagType;<a name="line.25"></a> -<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.26"></a> -<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.classification.InterfaceStability;<a name="line.27"></a> -<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.28"></a> -<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.regionserver.OperationStatus;<a name="line.29"></a> -<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.security.User;<a name="line.30"></a> -<span class="sourceLineNo">031</span><a name="line.31"></a> -<span class="sourceLineNo">032</span>/**<a name="line.32"></a> -<span class="sourceLineNo">033</span> * The interface which deals with visibility labels and user auths admin service as well as the cell<a name="line.33"></a> -<span class="sourceLineNo">034</span> * visibility expression storage part and read time evaluation.<a name="line.34"></a> -<span class="sourceLineNo">035</span> */<a name="line.35"></a> -<span class="sourceLineNo">036</span>@InterfaceAudience.Public<a name="line.36"></a> -<span class="sourceLineNo">037</span>@InterfaceStability.Evolving<a name="line.37"></a> -<span class="sourceLineNo">038</span>public interface VisibilityLabelService extends Configurable {<a name="line.38"></a> -<span class="sourceLineNo">039</span><a name="line.39"></a> -<span class="sourceLineNo">040</span> /**<a name="line.40"></a> -<span class="sourceLineNo">041</span> * System calls this after opening of regions. Gives a chance for the VisibilityLabelService to so<a name="line.41"></a> -<span class="sourceLineNo">042</span> * any initialization logic.<a name="line.42"></a> -<span class="sourceLineNo">043</span> * @param e<a name="line.43"></a> -<span class="sourceLineNo">044</span> * the region coprocessor env<a name="line.44"></a> -<span class="sourceLineNo">045</span> */<a name="line.45"></a> -<span class="sourceLineNo">046</span> void init(RegionCoprocessorEnvironment e) throws IOException;<a name="line.46"></a> -<span class="sourceLineNo">047</span><a name="line.47"></a> -<span class="sourceLineNo">048</span> /**<a name="line.48"></a> -<span class="sourceLineNo">049</span> * Adds the set of labels into the system.<a name="line.49"></a> -<span class="sourceLineNo">050</span> * @param labels<a name="line.50"></a> -<span class="sourceLineNo">051</span> * Labels to add to the system.<a name="line.51"></a> -<span class="sourceLineNo">052</span> * @return OperationStatus for each of the label addition<a name="line.52"></a> -<span class="sourceLineNo">053</span> */<a name="line.53"></a> -<span class="sourceLineNo">054</span> OperationStatus[] addLabels(List<byte[]> labels) throws IOException;<a name="line.54"></a> -<span class="sourceLineNo">055</span><a name="line.55"></a> -<span class="sourceLineNo">056</span> /**<a name="line.56"></a> -<span class="sourceLineNo">057</span> * Sets given labels globally authorized for the user.<a name="line.57"></a> -<span class="sourceLineNo">058</span> * @param user<a name="line.58"></a> -<span class="sourceLineNo">059</span> * The authorizing user<a name="line.59"></a> -<span class="sourceLineNo">060</span> * @param authLabels<a name="line.60"></a> -<span class="sourceLineNo">061</span> * Labels which are getting authorized for the user<a name="line.61"></a> -<span class="sourceLineNo">062</span> * @return OperationStatus for each of the label auth addition<a name="line.62"></a> -<span class="sourceLineNo">063</span> */<a name="line.63"></a> -<span class="sourceLineNo">064</span> OperationStatus[] setAuths(byte[] user, List<byte[]> authLabels) throws IOException;<a name="line.64"></a> -<span class="sourceLineNo">065</span><a name="line.65"></a> -<span class="sourceLineNo">066</span> /**<a name="line.66"></a> -<span class="sourceLineNo">067</span> * Removes given labels from user's globally authorized list of labels.<a name="line.67"></a> -<span class="sourceLineNo">068</span> * @param user<a name="line.68"></a> -<span class="sourceLineNo">069</span> * The user whose authorization to be removed<a name="line.69"></a> -<span class="sourceLineNo">070</span> * @param authLabels<a name="line.70"></a> -<span class="sourceLineNo">071</span> * Labels which are getting removed from authorization set<a name="line.71"></a> -<span class="sourceLineNo">072</span> * @return OperationStatus for each of the label auth removal<a name="line.72"></a> -<span class="sourceLineNo">073</span> */<a name="line.73"></a> -<span class="sourceLineNo">074</span> OperationStatus[] clearAuths(byte[] user, List<byte[]> authLabels) throws IOException;<a name="line.74"></a> -<span class="sourceLineNo">075</span><a name="line.75"></a> -<span class="sourceLineNo">076</span> /**<a name="line.76"></a> -<span class="sourceLineNo">077</span> * Retrieve the visibility labels for the user.<a name="line.77"></a> -<span class="sourceLineNo">078</span> * @param user<a name="line.78"></a> -<span class="sourceLineNo">079</span> * Name of the user whose authorization to be retrieved<a name="line.79"></a> -<span class="sourceLineNo">080</span> * @param systemCall<a name="line.80"></a> -<span class="sourceLineNo">081</span> * Whether a system or user originated call.<a name="line.81"></a> -<span class="sourceLineNo">082</span> * @return Visibility labels authorized for the given user.<a name="line.82"></a> -<span class="sourceLineNo">083</span> */<a name="line.83"></a> -<span class="sourceLineNo">084</span> List<String> getUserAuths(byte[] user, boolean systemCall) throws IOException;<a name="line.84"></a> -<span class="sourceLineNo">085</span><a name="line.85"></a> -<span class="sourceLineNo">086</span> /**<a name="line.86"></a> -<span class="sourceLineNo">087</span> * Retrieve the visibility labels for the groups.<a name="line.87"></a> -<span class="sourceLineNo">088</span> * @param groups<a name="line.88"></a> -<span class="sourceLineNo">089</span> * Name of the groups whose authorization to be retrieved<a name="line.89"></a> -<span class="sourceLineNo">090</span> * @param systemCall<a name="line.90"></a> -<span class="sourceLineNo">091</span> * Whether a system or user originated call.<a name="line.91"></a> -<span class="sourceLineNo">092</span> * @return Visibility labels authorized for the given group.<a name="line.92"></a> -<span class="sourceLineNo">093</span> */<a name="line.93"></a> -<span class="sourceLineNo">094</span> List<String> getGroupAuths(String[] groups, boolean systemCall) throws IOException;<a name="line.94"></a> -<span class="sourceLineNo">095</span><a name="line.95"></a> -<span class="sourceLineNo">096</span> /**<a name="line.96"></a> -<span class="sourceLineNo">097</span> * Retrieve the list of visibility labels defined in the system.<a name="line.97"></a> -<span class="sourceLineNo">098</span> * @param regex The regular expression to filter which labels are returned.<a name="line.98"></a> -<span class="sourceLineNo">099</span> * @return List of visibility labels<a name="line.99"></a> -<span class="sourceLineNo">100</span> */<a name="line.100"></a> -<span class="sourceLineNo">101</span> List<String> listLabels(String regex) throws IOException;<a name="line.101"></a> -<span class="sourceLineNo">102</span><a name="line.102"></a> -<span class="sourceLineNo">103</span> /**<a name="line.103"></a> -<span class="sourceLineNo">104</span> * Creates tags corresponding to given visibility expression.<a name="line.104"></a> -<span class="sourceLineNo">105</span> * <br><a name="line.105"></a> -<span class="sourceLineNo">106</span> * Note: This will be concurrently called from multiple threads and implementation should<a name="line.106"></a> -<span class="sourceLineNo">107</span> * take care of thread safety.<a name="line.107"></a> -<span class="sourceLineNo">108</span> * @param visExpression The Expression for which corresponding Tags to be created.<a name="line.108"></a> -<span class="sourceLineNo">109</span> * @param withSerializationFormat specifies whether a tag, denoting the serialization version<a name="line.109"></a> -<span class="sourceLineNo">110</span> * of the tags, to be added in the list. When this is true make sure to add the<a name="line.110"></a> -<span class="sourceLineNo">111</span> * serialization format Tag also. The format tag value should be byte type.<a name="line.111"></a> -<span class="sourceLineNo">112</span> * @param checkAuths denotes whether to check individual labels in visExpression against user's<a name="line.112"></a> -<span class="sourceLineNo">113</span> * global auth label.<a name="line.113"></a> -<span class="sourceLineNo">114</span> * @return The list of tags corresponds to the visibility expression. These tags will be stored<a name="line.114"></a> -<span class="sourceLineNo">115</span> * along with the Cells.<a name="line.115"></a> -<span class="sourceLineNo">116</span> */<a name="line.116"></a> -<span class="sourceLineNo">117</span> List<Tag> createVisibilityExpTags(String visExpression, boolean withSerializationFormat,<a name="line.117"></a> -<span class="sourceLineNo">118</span> boolean checkAuths) throws IOException;<a name="line.118"></a> -<span class="sourceLineNo">119</span><a name="line.119"></a> -<span class="sourceLineNo">120</span> /**<a name="line.120"></a> -<span class="sourceLineNo">121</span> * Creates VisibilityExpEvaluator corresponding to given Authorizations. <br><a name="line.121"></a> -<span class="sourceLineNo">122</span> * Note: This will be concurrently called from multiple threads and implementation should take<a name="line.122"></a> -<span class="sourceLineNo">123</span> * care of thread safety.<a name="line.123"></a> -<span class="sourceLineNo">124</span> * @param authorizations<a name="line.124"></a> -<span class="sourceLineNo">125</span> * Authorizations for the read request<a name="line.125"></a> -<span class="sourceLineNo">126</span> * @return The VisibilityExpEvaluator corresponding to the given set of authorization labels.<a name="line.126"></a> -<span class="sourceLineNo">127</span> */<a name="line.127"></a> -<span class="sourceLineNo">128</span> VisibilityExpEvaluator getVisibilityExpEvaluator(Authorizations authorizations)<a name="line.128"></a> -<span class="sourceLineNo">129</span> throws IOException;<a name="line.129"></a> -<span class="sourceLineNo">130</span><a name="line.130"></a> -<span class="sourceLineNo">131</span> /**<a name="line.131"></a> -<span class="sourceLineNo">132</span> * System checks for user auth during admin operations. (ie. Label add, set/clear auth). The<a name="line.132"></a> -<span class="sourceLineNo">133</span> * operation is allowed only for users having system auth. Also during read, if the requesting<a name="line.133"></a> -<span class="sourceLineNo">134</span> * user has system auth, he can view all the data irrespective of its labels.<a name="line.134"></a> -<span class="sourceLineNo">135</span> * @param user<a name="line.135"></a> -<span class="sourceLineNo">136</span> * User for whom system auth check to be done.<a name="line.136"></a> -<span class="sourceLineNo">137</span> * @return true if the given user is having system/super auth<a name="line.137"></a> -<span class="sourceLineNo">138</span> */<a name="line.138"></a> -<span class="sourceLineNo">139</span> boolean havingSystemAuth(User user) throws IOException;<a name="line.139"></a> -<span class="sourceLineNo">140</span><a name="line.140"></a> -<span class="sourceLineNo">141</span> /**<a name="line.141"></a> -<span class="sourceLineNo">142</span> * System uses this for deciding whether a Cell can be deleted by matching visibility expression<a name="line.142"></a> -<span class="sourceLineNo">143</span> * in Delete mutation and the cell in consideration. Also system passes the serialization format<a name="line.143"></a> -<span class="sourceLineNo">144</span> * of visibility tags in Put and Delete.<br><a name="line.144"></a> -<span class="sourceLineNo">145</span> * Note: This will be concurrently called from multiple threads and implementation should take<a name="line.145"></a> -<span class="sourceLineNo">146</span> * care of thread safety.<a name="line.146"></a> -<span class="sourceLineNo">147</span> * @param putVisTags<a name="line.147"></a> -<span class="sourceLineNo">148</span> * The visibility tags present in the Put mutation<a name="line.148"></a> -<span class="sourceLineNo">149</span> * @param putVisTagFormat<a name="line.149"></a> -<span class="sourceLineNo">150</span> * The serialization format for the Put visibility tags. A <code>null</code> value for<a name="line.150"></a> -<span class="sourceLineNo">151</span> * this format means the tags are written with unsorted label ordinals<a name="line.151"></a> -<span class="sourceLineNo">152</span> * @param deleteVisTags<a name="line.152"></a> -<span class="sourceLineNo">153</span> * - The visibility tags in the delete mutation (the specified Cell Visibility)<a name="line.153"></a> -<span class="sourceLineNo">154</span> * @param deleteVisTagFormat<a name="line.154"></a> -<span class="sourceLineNo">155</span> * The serialization format for the Delete visibility tags. A <code>null</code> value for<a name="line.155"></a> -<span class="sourceLineNo">156</span> * this format means the tags are written with unsorted label ordinals<a name="line.156"></a> -<span class="sourceLineNo">157</span> * @return true if matching tags are found<a name="line.157"></a> -<span class="sourceLineNo">158</span> * @see VisibilityConstants#SORTED_ORDINAL_SERIALIZATION_FORMAT<a name="line.158"></a> -<span class="sourceLineNo">159</span> */<a name="line.159"></a> -<span class="sourceLineNo">160</span> boolean matchVisibility(List<Tag> putVisTags, Byte putVisTagFormat, List<Tag> deleteVisTags,<a name="line.160"></a> -<span class="sourceLineNo">161</span> Byte deleteVisTagFormat) throws IOException;<a name="line.161"></a> -<span class="sourceLineNo">162</span><a name="line.162"></a> -<span class="sourceLineNo">163</span> /**<a name="line.163"></a> -<span class="sourceLineNo">164</span> * Provides a way to modify the visibility tags of type {@link TagType}<a name="line.164"></a> -<span class="sourceLineNo">165</span> * .VISIBILITY_TAG_TYPE, that are part of the cell created from the WALEdits<a name="line.165"></a> -<span class="sourceLineNo">166</span> * that are prepared for replication while calling<a name="line.166"></a> -<span class="sourceLineNo">167</span> * {@link org.apache.hadoop.hbase.replication.ReplicationEndpoint}<a name="line.167"></a> -<span class="sourceLineNo">168</span> * .replicate().<a name="line.168"></a> -<span class="sourceLineNo">169</span> * {@link org.apache.hadoop.hbase.security.visibility.VisibilityReplicationEndpoint}<a name="line.169"></a> -<span class="sourceLineNo">170</span> * calls this API to provide an opportunity to modify the visibility tags<a name="line.170"></a> -<span class="sourceLineNo">171</span> * before replicating.<a name="line.171"></a> -<span class="sourceLineNo">172</span> *<a name="line.172"></a> -<span class="sourceLineNo">173</span> * @param visTags<a name="line.173"></a> -<span class="sourceLineNo">174</span> * the visibility tags associated with the cell<a name="line.174"></a> -<span class="sourceLineNo">175</span> * @param serializationFormat<a name="line.175"></a> -<span class="sourceLineNo">176</span> * the serialization format associated with the tag<a name="line.176"></a> -<span class="sourceLineNo">177</span> * @return the modified visibility expression in the form of byte[]<a name="line.177"></a> -<span class="sourceLineNo">178</span> * @throws IOException<a name="line.178"></a> -<span class="sourceLineNo">179</span> */<a name="line.179"></a> -<span class="sourceLineNo">180</span> byte[] encodeVisibilityForReplication(final List<Tag> visTags,<a name="line.180"></a> -<span class="sourceLineNo">181</span> final Byte serializationFormat) throws IOException;<a name="line.181"></a> -<span class="sourceLineNo">182</span><a name="line.182"></a> -<span class="sourceLineNo">183</span>}<a name="line.183"></a> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</pre> -</div> -</body> -</html> http://git-wip-us.apache.org/repos/asf/hbase/blob/fc29f802/book.html ---------------------------------------------------------------------- diff --git a/book.html b/book.html index f1cf337..8de8a1c 100644 --- a/book.html +++ b/book.html @@ -7718,7 +7718,7 @@ hash-joins). So which is the best approach? It depends on what you are trying to <h2 id="_acid"><a class="anchor" href="#_acid"></a>31. ACID</h2> <div class="sectionbody"> <div class="paragraph"> -<p>See <a href="http://hbase.apache.org/acid-semantics.html">ACID Semantics</a>. +<p>See <a href="/acid-semantics.html">ACID Semantics</a>. Lars Hofhansl has also written a note on <a href="http://hadoop-hbase.blogspot.com/2012/03/acid-in-hbase.html">ACID in HBase</a>.</p> </div> </div> @@ -11785,7 +11785,7 @@ The correct way to apply cell level labels is to do so in the application code w <div class="paragraph"> <p><a href="#reading_cells_with_labels">[reading_cells_with_labels]</a> ==== Reading Cells with Labels -When you issue a Scan or Get, HBase uses your default set of authorizations to filter out cells that you do not have access to. A superuser can set the default set of authorizations for a given user by using the <code>set_auths</code> HBase Shell command or the <a href="http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/security/visibility/VisibilityClient.html#setAuths(org.apache.hadoop.conf.Configuration,%20java.lang.String\">],%20java.lang.String)[VisibilityClient.setAuths()</a> method.</p> +When you issue a Scan or Get, HBase uses your default set of authorizations to filter out cells that you do not have access to. A superuser can set the default set of authorizations for a given user by using the <code>set_auths</code> HBase Shell command or the <a href="http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/security/visibility/VisibilityClient.html#setAuths(org.apache.hadoop.hbase.client.Connection,%20java.lang.String" class="bare">http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/security/visibility/VisibilityClient.html#setAuths(org.apache.hadoop.hbase.client.Connection,%20java.lang.String</a>,%20java.lang.String)[VisibilityClient.setAuths()] method.</p> </div> <div class="paragraph"> <p>You can specify a different authorization during the Scan or Get, by passing the AUTHORIZATIONS option in HBase Shell, or the <a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Scan.html#setAuthorizations%28org.apache.hadoop.hbase.security.visibility.Authorizations%29">setAuthorizations()</a> method if you use the API. This authorization will be combined with your default set as an additional filter. It will further filter your results, rather than giving you additional authorization.</p> @@ -12114,7 +12114,8 @@ Next, configure fallback to the old master key in the <em>hbase-site.xml</em> fi <h3 id="hbase.secure.bulkload"><a class="anchor" href="#hbase.secure.bulkload"></a>59.5. Secure Bulk Load</h3> <div class="paragraph"> <p>Bulk loading in secure mode is a bit more involved than normal setup, since the client has to transfer the ownership of the files generated from the MapReduce job to HBase. -Secure bulk loading is implemented by a coprocessor, named <a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/security/access/SecureBulkLoadEndpoint.html">SecureBulkLoadEndpoint</a>, which uses a staging directory configured by the configuration property <code>hbase.bulkload.staging.dir</code>, which defaults to <em>/tmp/hbase-staging/</em>.</p> +Secure bulk loading is implemented by a coprocessor, named link:http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/security/access/SecureBulkLoadEndpoint.html +[SecureBulkLoadEndpoint], which uses a staging directory configured by the configuration property <code>hbase.bulkload.staging.dir</code>, which defaults to <em>/tmp/hbase-staging/</em>.</p> </div> <div class="ulist"> <div class="title">Secure Bulk Load Algorithm</div> @@ -12503,7 +12504,10 @@ If a region has both an empty start and an empty end key, it is the only region </table> </div> <div class="paragraph"> -<p>In the (hopefully unlikely) event that programmatic processing of catalog metadata is required, see the <a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/util/Writables.html#getHRegionInfo%28byte" class="bare">http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/util/Writables.html#getHRegionInfo%28byte</a>%29[Writables] utility.</p> +<p>In the (hopefully unlikely) event that programmatic processing of catalog metadata +is required, see the +<a href="http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/util/Writables.html#getHRegionInfo%28byte" class="bare">http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/util/Writables.html#getHRegionInfo%28byte</a>%29[Writables] +utility.</p> </div> </div> <div class="sect2"> @@ -12628,13 +12632,13 @@ Please use <a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/clie <div class="sect2"> <h3 id="client.writebuffer"><a class="anchor" href="#client.writebuffer"></a>63.2. WriteBuffer and Batch Methods</h3> <div class="paragraph"> -<p>In HBase 1.0 and later, <a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.html">HTable</a> is deprecated in favor of <a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Table.html">Table</a>. <code>Table</code> does not use autoflush. To do buffered writes, use the BufferedMutator class.</p> +<p>In HBase 1.0 and later, <a href="http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/client/HTable.html">HTable</a> is deprecated in favor of <a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Table.html">Table</a>. <code>Table</code> does not use autoflush. To do buffered writes, use the BufferedMutator class.</p> </div> <div class="paragraph"> <p>Before a <code>Table</code> or <code>HTable</code> instance is discarded, invoke either <code>close()</code> or <code>flushCommits()</code>, so `Put`s will not be lost.</p> </div> <div class="paragraph"> -<p>For additional information on write durability, review the <a href="../acid-semantics.html">ACID semantics</a> page.</p> +<p>For additional information on write durability, review the <a href="/acid-semantics.html">ACID semantics</a> page.</p> </div> <div class="paragraph"> <p>For fine-grained control of batching of <code>Put</code>s or <code>Delete</code>s, see the <a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Table.html#batch%28java.util.List%29">batch</a> methods on Table.</p> @@ -13295,7 +13299,7 @@ Let us call this deploy format, <em>Raw L1+L2</em>.</p> </div> <div class="paragraph"> <p>Other BucketCache configs include: specifying a location to persist cache to across restarts, how many threads to use writing the cache, etc. -See the <a href="https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/io/hfile/CacheConfig.html">CacheConfig.html</a> class for configuration options and descriptions.</p> +See the <a href="https://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/io/hfile/CacheConfig.html">CacheConfig.html</a> class for configuration options and descriptions.</p> </div> <div class="sect5"> <h6 id="_bucketcache_example_configuration"><a class="anchor" href="#_bucketcache_example_configuration"></a>BucketCache Example Configuration</h6> @@ -14289,8 +14293,10 @@ See <a href="#disable.splitting">Managed Splitting</a> for how to manually manag <div class="sect3"> <h4 id="_custom_split_policies"><a class="anchor" href="#_custom_split_policies"></a>67.4.1. Custom Split Policies</h4> <div class="paragraph"> -<p>You can override the default split policy using a custom <a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html">RegionSplitPolicy</a>(HBase 0.94+). Typically a custom split policy should extend -HBase’s default split policy: <a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/regionserver/IncreasingToUpperBoundRegionSplitPolicy.html">IncreasingToUpperBoundRegionSplitPolicy</a>.</p> +<p>You can override the default split policy using a custom +<a href="http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html">RegionSplitPolicy</a>(HBase 0.94+). +Typically a custom split policy should extend HBase’s default split policy: +<a href="http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/regionserver/IncreasingToUpperBoundRegionSplitPolicy.html">IncreasingToUpperBoundRegionSplitPolicy</a>.</p> </div> <div class="paragraph"> <p>The policy can set globally through the HBase configuration or on a per-table @@ -14323,7 +14329,10 @@ admin.createTable(tableDesc); </div> </div> <div class="paragraph"> -<p>The default split policy can be overwritten using a custom <a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html">RegionSplitPolicy(HBase 0.94+)</a>. Typically a custom split policy should extend HBase’s default split policy: <a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/regionserver/ConstantSizeRegionSplitPolicy.html">ConstantSizeRegionSplitPolicy</a>.</p> +<p>The default split policy can be overwritten using a custom +link:http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html +[RegionSplitPolicy(HBase 0.94+)]. Typically a custom split policy should extend HBase’s default split policy: +<a href="http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/regionserver/ConstantSizeRegionSplitPolicy.html">ConstantSizeRegionSplitPolicy</a>.</p> </div> <div class="paragraph"> <p>The policy can be set globally through the HBaseConfiguration used or on a per table basis:</p> @@ -14411,9 +14420,15 @@ For instance, the following command creates a table with regions that split at e <p>The RegionSplitter tool is provided with HBase, and uses a <em>SplitAlgorithm</em> to determine split points for you. As parameters, you give it the algorithm, desired number of regions, and column families. It includes two split algorithms. -The first is the <code><a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/util/RegionSplitter.HexStringSplit.html">HexStringSplit</a></code> algorithm, which assumes the row keys are hexadecimal strings. -The second, <code><a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/util/RegionSplitter.UniformSplit.html">UniformSplit</a></code>, assumes the row keys are random byte arrays. -You will probably need to develop your own <code><a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/util/RegionSplitter.SplitAlgorithm.html">SplitAlgorithm</a></code>, using the provided ones as models.</p> +The first is the +<code><a href="http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/util/RegionSplitter.HexStringSplit.html">HexStringSplit</a></code> +algorithm, which assumes the row keys are hexadecimal strings. +The second, +<code><a href="http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/util/RegionSplitter.UniformSplit.html">UniformSplit</a></code>, +assumes the row keys are random byte arrays. +You will probably need to develop your own +<code><a href="http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/util/RegionSplitter.SplitAlgorithm.html">SplitAlgorithm</a></code>, +using the provided ones as models.</p> </dd> </dl> </div> @@ -17247,12 +17262,13 @@ libraryDependencies ++= Seq( <div class="listingblock"> <div class="content"> <pre class="CodeRay highlight"><code data-lang="scala">import org.apache.hadoop.hbase.HBaseConfiguration -import org.apache.hadoop.hbase.client.{HBaseAdmin,HTable,Put,Get} +import org.apache.hadoop.hbase.client.{Connection,ConnectionFactory,HBaseAdmin,HTable,Put,Get} import org.apache.hadoop.hbase.util.Bytes val conf = new HBaseConfiguration() -val admin = new HBaseAdmin(conf) +val connection = ConnectionFactory.createConnection(conf); +val admin = connection.getAdmin(); // list the tables val listtables=admin.listTables() @@ -18921,10 +18937,11 @@ coprocessor.jar| org.myname.hbase.Coprocessor.RegionObserverExample|1073741823|' <p><strong>Using setValue()</strong> method of HTableDescriptor: This is done entirely in Java as follows:</p> <div class="listingblock"> <div class="content"> -<pre class="CodeRay highlight"><code data-lang="java"><span class="predefined-type">String</span> tableName = <span class="string"><span class="delimiter">"</span><span class="content">users</span><span class="delimiter">"</span></span>; +<pre class="CodeRay highlight"><code data-lang="java">TableName tableName = TableName.valueOf(<span class="string"><span class="delimiter">"</span><span class="content">users</span><span class="delimiter">"</span></span>); <span class="predefined-type">String</span> path = <span class="string"><span class="delimiter">"</span><span class="content">hdfs://<namenode>:<port>/user/<hadoop-user>/coprocessor.jar</span><span class="delimiter">"</span></span>; <span class="predefined-type">Configuration</span> conf = HBaseConfiguration.create(); -HBaseAdmin admin = <span class="keyword">new</span> HBaseAdmin(conf); +<span class="predefined-type">Connection</span> connection = ConnectionFactory.createConnection(conf); +Admin admin = connection.getAdmin(); admin.disableTable(tableName); HTableDescriptor hTableDescriptor = <span class="keyword">new</span> HTableDescriptor(tableName); HColumnDescriptor columnFamily1 = <span class="keyword">new</span> HColumnDescriptor(<span class="string"><span class="delimiter">"</span><span class="content">personalDet</span><span class="delimiter">"</span></span>); @@ -19004,10 +19021,11 @@ Coprocessor either in setValue() or addCoprocessor() methods. This will remove t attached to this table, if any. For example:</p> <div class="listingblock"> <div class="content"> -<pre class="CodeRay highlight"><code data-lang="java"><span class="predefined-type">String</span> tableName = <span class="string"><span class="delimiter">"</span><span class="content">users</span><span class="delimiter">"</span></span>; +<pre class="CodeRay highlight"><code data-lang="java">TableName tableName = TableName.valueOf(<span class="string"><span class="delimiter">"</span><span class="content">users</span><span class="delimiter">"</span></span>); <span class="predefined-type">String</span> path = <span class="string"><span class="delimiter">"</span><span class="content">hdfs://<namenode>:<port>/user/<hadoop-user>/coprocessor.jar</span><span class="delimiter">"</span></span>; <span class="predefined-type">Configuration</span> conf = HBaseConfiguration.create(); -HBaseAdmin admin = <span class="keyword">new</span> HBaseAdmin(conf); +<span class="predefined-type">Connection</span> connection = ConnectionFactory.createConnection(conf); +Admin admin = connection.getAdmin(); admin.disableTable(tableName); HTableDescriptor hTableDescriptor = <span class="keyword">new</span> HTableDescriptor(tableName); HColumnDescriptor columnFamily1 = <span class="keyword">new</span> HColumnDescriptor(<span class="string"><span class="delimiter">"</span><span class="content">personalDet</span><span class="delimiter">"</span></span>); @@ -19117,7 +19135,7 @@ Following are the implementation steps:</p> <ol class="arabic"> <li> <p>Write a class that extends the -<a href="https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.html">BaseRegionObserver</a> +<a href="https://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.html">BaseRegionObserver</a> class.</p> </li> <li> @@ -19729,7 +19747,8 @@ tableDesc.addFamily(cfDesc); </div> </div> <div class="paragraph"> -<p>See the API documentation for <a href="https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/io/hfile/CacheConfig.html">CacheConfig</a>.</p> +<p>See the API documentation for +<a href="https://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/io/hfile/CacheConfig.html">CacheConfig</a>.</p> </div> </div> <div class="sect2"> @@ -23442,10 +23461,14 @@ See <a href="https://issues.apache.org/jira/browse/HBASE-4391">HBASE-4391 Add ab <div class="sect2"> <h3 id="compaction.tool"><a class="anchor" href="#compaction.tool"></a>126.16. Offline Compaction Tool</h3> <div class="paragraph"> -<p>See the usage for the <a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/regionserver/CompactionTool.html">Compaction - Tool</a>. -Run it like this ./bin/hbase - org.apache.hadoop.hbase.regionserver.CompactionTool</p> +<p>See the usage for the +<a href="http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/regionserver/CompactionTool.html">CompactionTool</a>. +Run it like:</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre class="CodeRay highlight"><code data-lang="bash">$ ./bin/hbase org.apache.hadoop.hbase.regionserver.CompactionTool</code></pre> +</div> </div> </div> <div class="sect2"> @@ -26218,13 +26241,6 @@ It is <a href="http://jira.codehaus.org/browse/MSITE-286">officially ugly</a> though.</p> </div> </div> -<div class="sect3"> -<h4 id="build.snappy"><a class="anchor" href="#build.snappy"></a>140.1.8. Building in snappy compression support</h4> -<div class="paragraph"> -<p>Pass <code>-Psnappy</code> to trigger the <code>hadoop-snappy</code> maven profile for building Google Snappy native libraries into HBase. -See also <a href="#snappy.compression.installation">snappy.compression.installation</a></p> -</div> -</div> </div> </div> </div> @@ -31971,7 +31987,7 @@ The length can be calculated from entryOffsets.</p> <div class="sect3"> <h4 id="_file_info_format_in_versions_1_and_2"><a class="anchor" href="#_file_info_format_in_versions_1_and_2"></a>H.2.8. File Info format in versions 1 and 2</h4> <div class="paragraph"> -<p>The file info block is a serialized <a href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/io/HbaseMapWritable.html">HbaseMapWritable</a> (essentially a map from byte arrays to byte arrays) with the following keys, among others. +<p>The file info block is a serialized <a href="http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/io/HbaseMapWritable.html">HbaseMapWritable</a> (essentially a map from byte arrays to byte arrays) with the following keys, among others. StoreFile-level logic adds more keys to this.</p> </div> <table class="tableblock frame-all grid-all spread"> @@ -32792,7 +32808,7 @@ The server will return cellblocks compressed using this same compressor as long <div id="footer"> <div id="footer-text"> Version 2.0.0-SNAPSHOT<br> -Last updated 2015-11-05 09:17:27 +10:00 +Last updated 2015-11-07 15:37:35 +10:00 </div> </div> </body> http://git-wip-us.apache.org/repos/asf/hbase/blob/fc29f802/bulk-loads.html ---------------------------------------------------------------------- diff --git a/bulk-loads.html b/bulk-loads.html index f13e36c..21fd185 100644 --- a/bulk-loads.html +++ b/bulk-loads.html @@ -7,7 +7,7 @@ <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="Date-Revision-yyyymmdd" content="20151105" /> + <meta name="Date-Revision-yyyymmdd" content="20151107" /> <meta http-equiv="Content-Language" content="en" /> <title>Apache HBase – Bulk Loads in Apache HBase (TM) @@ -290,7 +290,7 @@ under the License. --> <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved. - <li id="publishDate" class="pull-right">Last Published: 2015-11-05</li> + <li id="publishDate" class="pull-right">Last Published: 2015-11-07</li> </p> </div>
