http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e6bd0774/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.OpType.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.OpType.html b/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.OpType.html index ee54e1d..be637e0 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.OpType.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.OpType.html @@ -106,32 +106,32 @@ <span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.98"></a> <span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos;<a name="line.99"></a> <span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService;<a name="line.100"></a> -<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.101"></a> -<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress;<a name="line.102"></a> -<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.103"></a> -<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.104"></a> -<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.regionserver.ScanType;<a name="line.105"></a> -<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.regionserver.ScannerContext;<a name="line.106"></a> -<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.107"></a> -<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.108"></a> -<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.replication.ReplicationEndpoint;<a name="line.109"></a> -<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.110"></a> -<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.111"></a> -<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.112"></a> -<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.security.User;<a name="line.113"></a> -<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.114"></a> -<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.security.access.Permission.Action;<a name="line.115"></a> -<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.ArrayListMultimap;<a name="line.116"></a> -<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.ImmutableSet;<a name="line.117"></a> -<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.ListMultimap;<a name="line.118"></a> -<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Lists;<a name="line.119"></a> -<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.MapMaker;<a name="line.120"></a> -<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Maps;<a name="line.121"></a> -<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Sets;<a name="line.122"></a> -<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry;<a name="line.123"></a> -<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CleanupBulkLoadRequest;<a name="line.124"></a> -<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.PrepareBulkLoadRequest;<a name="line.125"></a> -<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.126"></a> +<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.quotas.GlobalQuotaSettings;<a name="line.101"></a> +<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.102"></a> +<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress;<a name="line.103"></a> +<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.104"></a> +<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.105"></a> +<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.regionserver.ScanType;<a name="line.106"></a> +<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.regionserver.ScannerContext;<a name="line.107"></a> +<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.108"></a> +<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.109"></a> +<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.replication.ReplicationEndpoint;<a name="line.110"></a> +<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.111"></a> +<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.112"></a> +<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.113"></a> +<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.security.User;<a name="line.114"></a> +<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.115"></a> +<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.security.access.Permission.Action;<a name="line.116"></a> +<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.ArrayListMultimap;<a name="line.117"></a> +<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.ImmutableSet;<a name="line.118"></a> +<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.ListMultimap;<a name="line.119"></a> +<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Lists;<a name="line.120"></a> +<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.MapMaker;<a name="line.121"></a> +<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Maps;<a name="line.122"></a> +<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Sets;<a name="line.123"></a> +<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry;<a name="line.124"></a> +<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CleanupBulkLoadRequest;<a name="line.125"></a> +<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.PrepareBulkLoadRequest;<a name="line.126"></a> <span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.127"></a> <span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.128"></a> <span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.util.ByteRange;<a name="line.129"></a> @@ -2593,168 +2593,170 @@ <span class="sourceLineNo">2585</span><a name="line.2585"></a> <span class="sourceLineNo">2586</span> @Override<a name="line.2586"></a> <span class="sourceLineNo">2587</span> public void preSetUserQuota(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2587"></a> -<span class="sourceLineNo">2588</span> final String userName, final Quotas quotas) throws IOException {<a name="line.2588"></a> +<span class="sourceLineNo">2588</span> final String userName, final GlobalQuotaSettings quotas) throws IOException {<a name="line.2588"></a> <span class="sourceLineNo">2589</span> requirePermission(getActiveUser(ctx), "setUserQuota", Action.ADMIN);<a name="line.2589"></a> <span class="sourceLineNo">2590</span> }<a name="line.2590"></a> <span class="sourceLineNo">2591</span><a name="line.2591"></a> <span class="sourceLineNo">2592</span> @Override<a name="line.2592"></a> <span class="sourceLineNo">2593</span> public void preSetUserQuota(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2593"></a> -<span class="sourceLineNo">2594</span> final String userName, final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2594"></a> -<span class="sourceLineNo">2595</span> requirePermission(getActiveUser(ctx), "setUserTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2595"></a> -<span class="sourceLineNo">2596</span> }<a name="line.2596"></a> -<span class="sourceLineNo">2597</span><a name="line.2597"></a> -<span class="sourceLineNo">2598</span> @Override<a name="line.2598"></a> -<span class="sourceLineNo">2599</span> public void preSetUserQuota(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2599"></a> -<span class="sourceLineNo">2600</span> final String userName, final String namespace, final Quotas quotas) throws IOException {<a name="line.2600"></a> -<span class="sourceLineNo">2601</span> requirePermission(getActiveUser(ctx), "setUserNamespaceQuota", Action.ADMIN);<a name="line.2601"></a> -<span class="sourceLineNo">2602</span> }<a name="line.2602"></a> -<span class="sourceLineNo">2603</span><a name="line.2603"></a> -<span class="sourceLineNo">2604</span> @Override<a name="line.2604"></a> -<span class="sourceLineNo">2605</span> public void preSetTableQuota(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2605"></a> -<span class="sourceLineNo">2606</span> final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2606"></a> -<span class="sourceLineNo">2607</span> requirePermission(getActiveUser(ctx), "setTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2607"></a> -<span class="sourceLineNo">2608</span> }<a name="line.2608"></a> -<span class="sourceLineNo">2609</span><a name="line.2609"></a> -<span class="sourceLineNo">2610</span> @Override<a name="line.2610"></a> -<span class="sourceLineNo">2611</span> public void preSetNamespaceQuota(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2611"></a> -<span class="sourceLineNo">2612</span> final String namespace, final Quotas quotas) throws IOException {<a name="line.2612"></a> -<span class="sourceLineNo">2613</span> requirePermission(getActiveUser(ctx), "setNamespaceQuota", Action.ADMIN);<a name="line.2613"></a> -<span class="sourceLineNo">2614</span> }<a name="line.2614"></a> -<span class="sourceLineNo">2615</span><a name="line.2615"></a> -<span class="sourceLineNo">2616</span> @Override<a name="line.2616"></a> -<span class="sourceLineNo">2617</span> public ReplicationEndpoint postCreateReplicationEndPoint(<a name="line.2617"></a> -<span class="sourceLineNo">2618</span> ObserverContext<RegionServerCoprocessorEnvironment> ctx, ReplicationEndpoint endpoint) {<a name="line.2618"></a> -<span class="sourceLineNo">2619</span> return endpoint;<a name="line.2619"></a> -<span class="sourceLineNo">2620</span> }<a name="line.2620"></a> -<span class="sourceLineNo">2621</span><a name="line.2621"></a> -<span class="sourceLineNo">2622</span> @Override<a name="line.2622"></a> -<span class="sourceLineNo">2623</span> public void preReplicateLogEntries(ObserverContext<RegionServerCoprocessorEnvironment> ctx,<a name="line.2623"></a> -<span class="sourceLineNo">2624</span> List<WALEntry> entries, CellScanner cells) throws IOException {<a name="line.2624"></a> -<span class="sourceLineNo">2625</span> requirePermission(getActiveUser(ctx), "replicateLogEntries", Action.WRITE);<a name="line.2625"></a> -<span class="sourceLineNo">2626</span> }<a name="line.2626"></a> -<span class="sourceLineNo">2627</span><a name="line.2627"></a> -<span class="sourceLineNo">2628</span> @Override<a name="line.2628"></a> -<span class="sourceLineNo">2629</span> public void postReplicateLogEntries(ObserverContext<RegionServerCoprocessorEnvironment> ctx,<a name="line.2629"></a> -<span class="sourceLineNo">2630</span> List<WALEntry> entries, CellScanner cells) throws IOException {<a name="line.2630"></a> -<span class="sourceLineNo">2631</span> }<a name="line.2631"></a> -<span class="sourceLineNo">2632</span><a name="line.2632"></a> -<span class="sourceLineNo">2633</span> @Override<a name="line.2633"></a> -<span class="sourceLineNo">2634</span> public void preClearCompactionQueues(ObserverContext<RegionServerCoprocessorEnvironment> ctx)<a name="line.2634"></a> -<span class="sourceLineNo">2635</span> throws IOException {<a name="line.2635"></a> -<span class="sourceLineNo">2636</span> requirePermission(getActiveUser(ctx), "preClearCompactionQueues", Permission.Action.ADMIN);<a name="line.2636"></a> -<span class="sourceLineNo">2637</span> }<a name="line.2637"></a> -<span class="sourceLineNo">2638</span><a name="line.2638"></a> -<span class="sourceLineNo">2639</span> @Override<a name="line.2639"></a> -<span class="sourceLineNo">2640</span> public void preMoveServersAndTables(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2640"></a> -<span class="sourceLineNo">2641</span> Set<Address> servers, Set<TableName> tables, String targetGroup) throws IOException {<a name="line.2641"></a> -<span class="sourceLineNo">2642</span> requirePermission(getActiveUser(ctx), "moveServersAndTables", Action.ADMIN);<a name="line.2642"></a> -<span class="sourceLineNo">2643</span> }<a name="line.2643"></a> -<span class="sourceLineNo">2644</span><a name="line.2644"></a> -<span class="sourceLineNo">2645</span> @Override<a name="line.2645"></a> -<span class="sourceLineNo">2646</span> public void preMoveServers(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2646"></a> -<span class="sourceLineNo">2647</span> Set<Address> servers, String targetGroup) throws IOException {<a name="line.2647"></a> -<span class="sourceLineNo">2648</span> requirePermission(getActiveUser(ctx), "moveServers", Action.ADMIN);<a name="line.2648"></a> -<span class="sourceLineNo">2649</span> }<a name="line.2649"></a> -<span class="sourceLineNo">2650</span><a name="line.2650"></a> -<span class="sourceLineNo">2651</span> @Override<a name="line.2651"></a> -<span class="sourceLineNo">2652</span> public void preMoveTables(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2652"></a> -<span class="sourceLineNo">2653</span> Set<TableName> tables, String targetGroup) throws IOException {<a name="line.2653"></a> -<span class="sourceLineNo">2654</span> requirePermission(getActiveUser(ctx), "moveTables", Action.ADMIN);<a name="line.2654"></a> -<span class="sourceLineNo">2655</span> }<a name="line.2655"></a> -<span class="sourceLineNo">2656</span><a name="line.2656"></a> -<span class="sourceLineNo">2657</span> @Override<a name="line.2657"></a> -<span class="sourceLineNo">2658</span> public void preAddRSGroup(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2658"></a> -<span class="sourceLineNo">2659</span> String name) throws IOException {<a name="line.2659"></a> -<span class="sourceLineNo">2660</span> requirePermission(getActiveUser(ctx), "addRSGroup", Action.ADMIN);<a name="line.2660"></a> -<span class="sourceLineNo">2661</span> }<a name="line.2661"></a> -<span class="sourceLineNo">2662</span><a name="line.2662"></a> -<span class="sourceLineNo">2663</span> @Override<a name="line.2663"></a> -<span class="sourceLineNo">2664</span> public void preRemoveRSGroup(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2664"></a> -<span class="sourceLineNo">2665</span> String name) throws IOException {<a name="line.2665"></a> -<span class="sourceLineNo">2666</span> requirePermission(getActiveUser(ctx), "removeRSGroup", Action.ADMIN);<a name="line.2666"></a> -<span class="sourceLineNo">2667</span> }<a name="line.2667"></a> -<span class="sourceLineNo">2668</span><a name="line.2668"></a> -<span class="sourceLineNo">2669</span> @Override<a name="line.2669"></a> -<span class="sourceLineNo">2670</span> public void preBalanceRSGroup(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2670"></a> -<span class="sourceLineNo">2671</span> String groupName) throws IOException {<a name="line.2671"></a> -<span class="sourceLineNo">2672</span> requirePermission(getActiveUser(ctx), "balanceRSGroup", Action.ADMIN);<a name="line.2672"></a> -<span class="sourceLineNo">2673</span> }<a name="line.2673"></a> -<span class="sourceLineNo">2674</span><a name="line.2674"></a> -<span class="sourceLineNo">2675</span> @Override<a name="line.2675"></a> -<span class="sourceLineNo">2676</span> public void preAddReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2676"></a> -<span class="sourceLineNo">2677</span> String peerId, ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2677"></a> -<span class="sourceLineNo">2678</span> requirePermission(getActiveUser(ctx), "addReplicationPeer", Action.ADMIN);<a name="line.2678"></a> -<span class="sourceLineNo">2679</span> }<a name="line.2679"></a> -<span class="sourceLineNo">2680</span><a name="line.2680"></a> -<span class="sourceLineNo">2681</span> @Override<a name="line.2681"></a> -<span class="sourceLineNo">2682</span> public void preRemoveReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2682"></a> -<span class="sourceLineNo">2683</span> String peerId) throws IOException {<a name="line.2683"></a> -<span class="sourceLineNo">2684</span> requirePermission(getActiveUser(ctx), "removeReplicationPeer", Action.ADMIN);<a name="line.2684"></a> -<span class="sourceLineNo">2685</span> }<a name="line.2685"></a> -<span class="sourceLineNo">2686</span><a name="line.2686"></a> -<span class="sourceLineNo">2687</span> @Override<a name="line.2687"></a> -<span class="sourceLineNo">2688</span> public void preEnableReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2688"></a> -<span class="sourceLineNo">2689</span> String peerId) throws IOException {<a name="line.2689"></a> -<span class="sourceLineNo">2690</span> requirePermission(getActiveUser(ctx), "enableReplicationPeer", Action.ADMIN);<a name="line.2690"></a> -<span class="sourceLineNo">2691</span> }<a name="line.2691"></a> -<span class="sourceLineNo">2692</span><a name="line.2692"></a> -<span class="sourceLineNo">2693</span> @Override<a name="line.2693"></a> -<span class="sourceLineNo">2694</span> public void preDisableReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2694"></a> -<span class="sourceLineNo">2695</span> String peerId) throws IOException {<a name="line.2695"></a> -<span class="sourceLineNo">2696</span> requirePermission(getActiveUser(ctx), "disableReplicationPeer", Action.ADMIN);<a name="line.2696"></a> -<span class="sourceLineNo">2697</span> }<a name="line.2697"></a> -<span class="sourceLineNo">2698</span><a name="line.2698"></a> -<span class="sourceLineNo">2699</span> @Override<a name="line.2699"></a> -<span class="sourceLineNo">2700</span> public void preGetReplicationPeerConfig(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2700"></a> -<span class="sourceLineNo">2701</span> String peerId) throws IOException {<a name="line.2701"></a> -<span class="sourceLineNo">2702</span> requirePermission(getActiveUser(ctx), "getReplicationPeerConfig", Action.ADMIN);<a name="line.2702"></a> -<span class="sourceLineNo">2703</span> }<a name="line.2703"></a> -<span class="sourceLineNo">2704</span><a name="line.2704"></a> -<span class="sourceLineNo">2705</span> @Override<a name="line.2705"></a> -<span class="sourceLineNo">2706</span> public void preUpdateReplicationPeerConfig(<a name="line.2706"></a> -<span class="sourceLineNo">2707</span> final ObserverContext<MasterCoprocessorEnvironment> ctx, String peerId,<a name="line.2707"></a> -<span class="sourceLineNo">2708</span> ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2708"></a> -<span class="sourceLineNo">2709</span> requirePermission(getActiveUser(ctx), "updateReplicationPeerConfig", Action.ADMIN);<a name="line.2709"></a> -<span class="sourceLineNo">2710</span> }<a name="line.2710"></a> -<span class="sourceLineNo">2711</span><a name="line.2711"></a> -<span class="sourceLineNo">2712</span> @Override<a name="line.2712"></a> -<span class="sourceLineNo">2713</span> public void preListReplicationPeers(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2713"></a> -<span class="sourceLineNo">2714</span> String regex) throws IOException {<a name="line.2714"></a> -<span class="sourceLineNo">2715</span> requirePermission(getActiveUser(ctx), "listReplicationPeers", Action.ADMIN);<a name="line.2715"></a> -<span class="sourceLineNo">2716</span> }<a name="line.2716"></a> -<span class="sourceLineNo">2717</span><a name="line.2717"></a> -<span class="sourceLineNo">2718</span> @Override<a name="line.2718"></a> -<span class="sourceLineNo">2719</span> public void preRequestLock(ObserverContext<MasterCoprocessorEnvironment> ctx, String namespace,<a name="line.2719"></a> -<span class="sourceLineNo">2720</span> TableName tableName, RegionInfo[] regionInfos, LockType type, String description)<a name="line.2720"></a> -<span class="sourceLineNo">2721</span> throws IOException {<a name="line.2721"></a> -<span class="sourceLineNo">2722</span> // There are operations in the CREATE and ADMIN domain which may require lock, READ<a name="line.2722"></a> -<span class="sourceLineNo">2723</span> // or WRITE. So for any lock request, we check for these two perms irrespective of lock type.<a name="line.2723"></a> -<span class="sourceLineNo">2724</span> String reason = String.format("Lock %s, description=%s", type, description);<a name="line.2724"></a> -<span class="sourceLineNo">2725</span> checkLockPermissions(getActiveUser(ctx), namespace, tableName, regionInfos, reason);<a name="line.2725"></a> -<span class="sourceLineNo">2726</span> }<a name="line.2726"></a> -<span class="sourceLineNo">2727</span><a name="line.2727"></a> -<span class="sourceLineNo">2728</span> @Override<a name="line.2728"></a> -<span class="sourceLineNo">2729</span> public void preLockHeartbeat(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2729"></a> -<span class="sourceLineNo">2730</span> LockProcedure proc, boolean keepAlive) throws IOException {<a name="line.2730"></a> -<span class="sourceLineNo">2731</span> String reason = "Heartbeat for lock " + proc.getProcId();<a name="line.2731"></a> -<span class="sourceLineNo">2732</span> checkLockPermissions(getActiveUser(ctx), null, proc.getTableName(), null, reason);<a name="line.2732"></a> -<span class="sourceLineNo">2733</span> }<a name="line.2733"></a> -<span class="sourceLineNo">2734</span><a name="line.2734"></a> -<span class="sourceLineNo">2735</span> private void checkLockPermissions(User user, String namespace,<a name="line.2735"></a> -<span class="sourceLineNo">2736</span> TableName tableName, RegionInfo[] regionInfos, String reason)<a name="line.2736"></a> -<span class="sourceLineNo">2737</span> throws IOException {<a name="line.2737"></a> -<span class="sourceLineNo">2738</span> if (namespace != null && !namespace.isEmpty()) {<a name="line.2738"></a> -<span class="sourceLineNo">2739</span> requireNamespacePermission(user, reason, namespace, Action.ADMIN, Action.CREATE);<a name="line.2739"></a> -<span class="sourceLineNo">2740</span> } else if (tableName != null || (regionInfos != null && regionInfos.length > 0)) {<a name="line.2740"></a> -<span class="sourceLineNo">2741</span> // So, either a table or regions op. If latter, check perms ons table.<a name="line.2741"></a> -<span class="sourceLineNo">2742</span> TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.2742"></a> -<span class="sourceLineNo">2743</span> requireTablePermission(user, reason, tn, null, null,<a name="line.2743"></a> -<span class="sourceLineNo">2744</span> Action.ADMIN, Action.CREATE);<a name="line.2744"></a> -<span class="sourceLineNo">2745</span> } else {<a name="line.2745"></a> -<span class="sourceLineNo">2746</span> throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.2746"></a> -<span class="sourceLineNo">2747</span> }<a name="line.2747"></a> -<span class="sourceLineNo">2748</span> }<a name="line.2748"></a> -<span class="sourceLineNo">2749</span>}<a name="line.2749"></a> +<span class="sourceLineNo">2594</span> final String userName, final TableName tableName, final GlobalQuotaSettings quotas)<a name="line.2594"></a> +<span class="sourceLineNo">2595</span> throws IOException {<a name="line.2595"></a> +<span class="sourceLineNo">2596</span> requirePermission(getActiveUser(ctx), "setUserTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2596"></a> +<span class="sourceLineNo">2597</span> }<a name="line.2597"></a> +<span class="sourceLineNo">2598</span><a name="line.2598"></a> +<span class="sourceLineNo">2599</span> @Override<a name="line.2599"></a> +<span class="sourceLineNo">2600</span> public void preSetUserQuota(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2600"></a> +<span class="sourceLineNo">2601</span> final String userName, final String namespace, final GlobalQuotaSettings quotas)<a name="line.2601"></a> +<span class="sourceLineNo">2602</span> throws IOException {<a name="line.2602"></a> +<span class="sourceLineNo">2603</span> requirePermission(getActiveUser(ctx), "setUserNamespaceQuota", Action.ADMIN);<a name="line.2603"></a> +<span class="sourceLineNo">2604</span> }<a name="line.2604"></a> +<span class="sourceLineNo">2605</span><a name="line.2605"></a> +<span class="sourceLineNo">2606</span> @Override<a name="line.2606"></a> +<span class="sourceLineNo">2607</span> public void preSetTableQuota(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2607"></a> +<span class="sourceLineNo">2608</span> final TableName tableName, final GlobalQuotaSettings quotas) throws IOException {<a name="line.2608"></a> +<span class="sourceLineNo">2609</span> requirePermission(getActiveUser(ctx), "setTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2609"></a> +<span class="sourceLineNo">2610</span> }<a name="line.2610"></a> +<span class="sourceLineNo">2611</span><a name="line.2611"></a> +<span class="sourceLineNo">2612</span> @Override<a name="line.2612"></a> +<span class="sourceLineNo">2613</span> public void preSetNamespaceQuota(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2613"></a> +<span class="sourceLineNo">2614</span> final String namespace, final GlobalQuotaSettings quotas) throws IOException {<a name="line.2614"></a> +<span class="sourceLineNo">2615</span> requirePermission(getActiveUser(ctx), "setNamespaceQuota", Action.ADMIN);<a name="line.2615"></a> +<span class="sourceLineNo">2616</span> }<a name="line.2616"></a> +<span class="sourceLineNo">2617</span><a name="line.2617"></a> +<span class="sourceLineNo">2618</span> @Override<a name="line.2618"></a> +<span class="sourceLineNo">2619</span> public ReplicationEndpoint postCreateReplicationEndPoint(<a name="line.2619"></a> +<span class="sourceLineNo">2620</span> ObserverContext<RegionServerCoprocessorEnvironment> ctx, ReplicationEndpoint endpoint) {<a name="line.2620"></a> +<span class="sourceLineNo">2621</span> return endpoint;<a name="line.2621"></a> +<span class="sourceLineNo">2622</span> }<a name="line.2622"></a> +<span class="sourceLineNo">2623</span><a name="line.2623"></a> +<span class="sourceLineNo">2624</span> @Override<a name="line.2624"></a> +<span class="sourceLineNo">2625</span> public void preReplicateLogEntries(ObserverContext<RegionServerCoprocessorEnvironment> ctx,<a name="line.2625"></a> +<span class="sourceLineNo">2626</span> List<WALEntry> entries, CellScanner cells) throws IOException {<a name="line.2626"></a> +<span class="sourceLineNo">2627</span> requirePermission(getActiveUser(ctx), "replicateLogEntries", Action.WRITE);<a name="line.2627"></a> +<span class="sourceLineNo">2628</span> }<a name="line.2628"></a> +<span class="sourceLineNo">2629</span><a name="line.2629"></a> +<span class="sourceLineNo">2630</span> @Override<a name="line.2630"></a> +<span class="sourceLineNo">2631</span> public void postReplicateLogEntries(ObserverContext<RegionServerCoprocessorEnvironment> ctx,<a name="line.2631"></a> +<span class="sourceLineNo">2632</span> List<WALEntry> entries, CellScanner cells) throws IOException {<a name="line.2632"></a> +<span class="sourceLineNo">2633</span> }<a name="line.2633"></a> +<span class="sourceLineNo">2634</span><a name="line.2634"></a> +<span class="sourceLineNo">2635</span> @Override<a name="line.2635"></a> +<span class="sourceLineNo">2636</span> public void preClearCompactionQueues(ObserverContext<RegionServerCoprocessorEnvironment> ctx)<a name="line.2636"></a> +<span class="sourceLineNo">2637</span> throws IOException {<a name="line.2637"></a> +<span class="sourceLineNo">2638</span> requirePermission(getActiveUser(ctx), "preClearCompactionQueues", Permission.Action.ADMIN);<a name="line.2638"></a> +<span class="sourceLineNo">2639</span> }<a name="line.2639"></a> +<span class="sourceLineNo">2640</span><a name="line.2640"></a> +<span class="sourceLineNo">2641</span> @Override<a name="line.2641"></a> +<span class="sourceLineNo">2642</span> public void preMoveServersAndTables(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2642"></a> +<span class="sourceLineNo">2643</span> Set<Address> servers, Set<TableName> tables, String targetGroup) throws IOException {<a name="line.2643"></a> +<span class="sourceLineNo">2644</span> requirePermission(getActiveUser(ctx), "moveServersAndTables", Action.ADMIN);<a name="line.2644"></a> +<span class="sourceLineNo">2645</span> }<a name="line.2645"></a> +<span class="sourceLineNo">2646</span><a name="line.2646"></a> +<span class="sourceLineNo">2647</span> @Override<a name="line.2647"></a> +<span class="sourceLineNo">2648</span> public void preMoveServers(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2648"></a> +<span class="sourceLineNo">2649</span> Set<Address> servers, String targetGroup) throws IOException {<a name="line.2649"></a> +<span class="sourceLineNo">2650</span> requirePermission(getActiveUser(ctx), "moveServers", Action.ADMIN);<a name="line.2650"></a> +<span class="sourceLineNo">2651</span> }<a name="line.2651"></a> +<span class="sourceLineNo">2652</span><a name="line.2652"></a> +<span class="sourceLineNo">2653</span> @Override<a name="line.2653"></a> +<span class="sourceLineNo">2654</span> public void preMoveTables(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2654"></a> +<span class="sourceLineNo">2655</span> Set<TableName> tables, String targetGroup) throws IOException {<a name="line.2655"></a> +<span class="sourceLineNo">2656</span> requirePermission(getActiveUser(ctx), "moveTables", Action.ADMIN);<a name="line.2656"></a> +<span class="sourceLineNo">2657</span> }<a name="line.2657"></a> +<span class="sourceLineNo">2658</span><a name="line.2658"></a> +<span class="sourceLineNo">2659</span> @Override<a name="line.2659"></a> +<span class="sourceLineNo">2660</span> public void preAddRSGroup(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2660"></a> +<span class="sourceLineNo">2661</span> String name) throws IOException {<a name="line.2661"></a> +<span class="sourceLineNo">2662</span> requirePermission(getActiveUser(ctx), "addRSGroup", Action.ADMIN);<a name="line.2662"></a> +<span class="sourceLineNo">2663</span> }<a name="line.2663"></a> +<span class="sourceLineNo">2664</span><a name="line.2664"></a> +<span class="sourceLineNo">2665</span> @Override<a name="line.2665"></a> +<span class="sourceLineNo">2666</span> public void preRemoveRSGroup(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2666"></a> +<span class="sourceLineNo">2667</span> String name) throws IOException {<a name="line.2667"></a> +<span class="sourceLineNo">2668</span> requirePermission(getActiveUser(ctx), "removeRSGroup", Action.ADMIN);<a name="line.2668"></a> +<span class="sourceLineNo">2669</span> }<a name="line.2669"></a> +<span class="sourceLineNo">2670</span><a name="line.2670"></a> +<span class="sourceLineNo">2671</span> @Override<a name="line.2671"></a> +<span class="sourceLineNo">2672</span> public void preBalanceRSGroup(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2672"></a> +<span class="sourceLineNo">2673</span> String groupName) throws IOException {<a name="line.2673"></a> +<span class="sourceLineNo">2674</span> requirePermission(getActiveUser(ctx), "balanceRSGroup", Action.ADMIN);<a name="line.2674"></a> +<span class="sourceLineNo">2675</span> }<a name="line.2675"></a> +<span class="sourceLineNo">2676</span><a name="line.2676"></a> +<span class="sourceLineNo">2677</span> @Override<a name="line.2677"></a> +<span class="sourceLineNo">2678</span> public void preAddReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2678"></a> +<span class="sourceLineNo">2679</span> String peerId, ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2679"></a> +<span class="sourceLineNo">2680</span> requirePermission(getActiveUser(ctx), "addReplicationPeer", Action.ADMIN);<a name="line.2680"></a> +<span class="sourceLineNo">2681</span> }<a name="line.2681"></a> +<span class="sourceLineNo">2682</span><a name="line.2682"></a> +<span class="sourceLineNo">2683</span> @Override<a name="line.2683"></a> +<span class="sourceLineNo">2684</span> public void preRemoveReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2684"></a> +<span class="sourceLineNo">2685</span> String peerId) throws IOException {<a name="line.2685"></a> +<span class="sourceLineNo">2686</span> requirePermission(getActiveUser(ctx), "removeReplicationPeer", Action.ADMIN);<a name="line.2686"></a> +<span class="sourceLineNo">2687</span> }<a name="line.2687"></a> +<span class="sourceLineNo">2688</span><a name="line.2688"></a> +<span class="sourceLineNo">2689</span> @Override<a name="line.2689"></a> +<span class="sourceLineNo">2690</span> public void preEnableReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2690"></a> +<span class="sourceLineNo">2691</span> String peerId) throws IOException {<a name="line.2691"></a> +<span class="sourceLineNo">2692</span> requirePermission(getActiveUser(ctx), "enableReplicationPeer", Action.ADMIN);<a name="line.2692"></a> +<span class="sourceLineNo">2693</span> }<a name="line.2693"></a> +<span class="sourceLineNo">2694</span><a name="line.2694"></a> +<span class="sourceLineNo">2695</span> @Override<a name="line.2695"></a> +<span class="sourceLineNo">2696</span> public void preDisableReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2696"></a> +<span class="sourceLineNo">2697</span> String peerId) throws IOException {<a name="line.2697"></a> +<span class="sourceLineNo">2698</span> requirePermission(getActiveUser(ctx), "disableReplicationPeer", Action.ADMIN);<a name="line.2698"></a> +<span class="sourceLineNo">2699</span> }<a name="line.2699"></a> +<span class="sourceLineNo">2700</span><a name="line.2700"></a> +<span class="sourceLineNo">2701</span> @Override<a name="line.2701"></a> +<span class="sourceLineNo">2702</span> public void preGetReplicationPeerConfig(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2702"></a> +<span class="sourceLineNo">2703</span> String peerId) throws IOException {<a name="line.2703"></a> +<span class="sourceLineNo">2704</span> requirePermission(getActiveUser(ctx), "getReplicationPeerConfig", Action.ADMIN);<a name="line.2704"></a> +<span class="sourceLineNo">2705</span> }<a name="line.2705"></a> +<span class="sourceLineNo">2706</span><a name="line.2706"></a> +<span class="sourceLineNo">2707</span> @Override<a name="line.2707"></a> +<span class="sourceLineNo">2708</span> public void preUpdateReplicationPeerConfig(<a name="line.2708"></a> +<span class="sourceLineNo">2709</span> final ObserverContext<MasterCoprocessorEnvironment> ctx, String peerId,<a name="line.2709"></a> +<span class="sourceLineNo">2710</span> ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2710"></a> +<span class="sourceLineNo">2711</span> requirePermission(getActiveUser(ctx), "updateReplicationPeerConfig", Action.ADMIN);<a name="line.2711"></a> +<span class="sourceLineNo">2712</span> }<a name="line.2712"></a> +<span class="sourceLineNo">2713</span><a name="line.2713"></a> +<span class="sourceLineNo">2714</span> @Override<a name="line.2714"></a> +<span class="sourceLineNo">2715</span> public void preListReplicationPeers(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2715"></a> +<span class="sourceLineNo">2716</span> String regex) throws IOException {<a name="line.2716"></a> +<span class="sourceLineNo">2717</span> requirePermission(getActiveUser(ctx), "listReplicationPeers", Action.ADMIN);<a name="line.2717"></a> +<span class="sourceLineNo">2718</span> }<a name="line.2718"></a> +<span class="sourceLineNo">2719</span><a name="line.2719"></a> +<span class="sourceLineNo">2720</span> @Override<a name="line.2720"></a> +<span class="sourceLineNo">2721</span> public void preRequestLock(ObserverContext<MasterCoprocessorEnvironment> ctx, String namespace,<a name="line.2721"></a> +<span class="sourceLineNo">2722</span> TableName tableName, RegionInfo[] regionInfos, LockType type, String description)<a name="line.2722"></a> +<span class="sourceLineNo">2723</span> throws IOException {<a name="line.2723"></a> +<span class="sourceLineNo">2724</span> // There are operations in the CREATE and ADMIN domain which may require lock, READ<a name="line.2724"></a> +<span class="sourceLineNo">2725</span> // or WRITE. So for any lock request, we check for these two perms irrespective of lock type.<a name="line.2725"></a> +<span class="sourceLineNo">2726</span> String reason = String.format("Lock %s, description=%s", type, description);<a name="line.2726"></a> +<span class="sourceLineNo">2727</span> checkLockPermissions(getActiveUser(ctx), namespace, tableName, regionInfos, reason);<a name="line.2727"></a> +<span class="sourceLineNo">2728</span> }<a name="line.2728"></a> +<span class="sourceLineNo">2729</span><a name="line.2729"></a> +<span class="sourceLineNo">2730</span> @Override<a name="line.2730"></a> +<span class="sourceLineNo">2731</span> public void preLockHeartbeat(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2731"></a> +<span class="sourceLineNo">2732</span> LockProcedure proc, boolean keepAlive) throws IOException {<a name="line.2732"></a> +<span class="sourceLineNo">2733</span> String reason = "Heartbeat for lock " + proc.getProcId();<a name="line.2733"></a> +<span class="sourceLineNo">2734</span> checkLockPermissions(getActiveUser(ctx), null, proc.getTableName(), null, reason);<a name="line.2734"></a> +<span class="sourceLineNo">2735</span> }<a name="line.2735"></a> +<span class="sourceLineNo">2736</span><a name="line.2736"></a> +<span class="sourceLineNo">2737</span> private void checkLockPermissions(User user, String namespace,<a name="line.2737"></a> +<span class="sourceLineNo">2738</span> TableName tableName, RegionInfo[] regionInfos, String reason)<a name="line.2738"></a> +<span class="sourceLineNo">2739</span> throws IOException {<a name="line.2739"></a> +<span class="sourceLineNo">2740</span> if (namespace != null && !namespace.isEmpty()) {<a name="line.2740"></a> +<span class="sourceLineNo">2741</span> requireNamespacePermission(user, reason, namespace, Action.ADMIN, Action.CREATE);<a name="line.2741"></a> +<span class="sourceLineNo">2742</span> } else if (tableName != null || (regionInfos != null && regionInfos.length > 0)) {<a name="line.2742"></a> +<span class="sourceLineNo">2743</span> // So, either a table or regions op. If latter, check perms ons table.<a name="line.2743"></a> +<span class="sourceLineNo">2744</span> TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.2744"></a> +<span class="sourceLineNo">2745</span> requireTablePermission(user, reason, tn, null, null,<a name="line.2745"></a> +<span class="sourceLineNo">2746</span> Action.ADMIN, Action.CREATE);<a name="line.2746"></a> +<span class="sourceLineNo">2747</span> } else {<a name="line.2747"></a> +<span class="sourceLineNo">2748</span> throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.2748"></a> +<span class="sourceLineNo">2749</span> }<a name="line.2749"></a> +<span class="sourceLineNo">2750</span> }<a name="line.2750"></a> +<span class="sourceLineNo">2751</span>}<a name="line.2751"></a>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e6bd0774/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.html b/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.html index ee54e1d..be637e0 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.html @@ -106,32 +106,32 @@ <span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.98"></a> <span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos;<a name="line.99"></a> <span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService;<a name="line.100"></a> -<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.101"></a> -<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress;<a name="line.102"></a> -<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.103"></a> -<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.104"></a> -<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.regionserver.ScanType;<a name="line.105"></a> -<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.regionserver.ScannerContext;<a name="line.106"></a> -<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.107"></a> -<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.108"></a> -<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.replication.ReplicationEndpoint;<a name="line.109"></a> -<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.110"></a> -<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.111"></a> -<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.112"></a> -<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.security.User;<a name="line.113"></a> -<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.114"></a> -<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.security.access.Permission.Action;<a name="line.115"></a> -<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.ArrayListMultimap;<a name="line.116"></a> -<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.ImmutableSet;<a name="line.117"></a> -<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.ListMultimap;<a name="line.118"></a> -<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Lists;<a name="line.119"></a> -<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.MapMaker;<a name="line.120"></a> -<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Maps;<a name="line.121"></a> -<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Sets;<a name="line.122"></a> -<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry;<a name="line.123"></a> -<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CleanupBulkLoadRequest;<a name="line.124"></a> -<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.PrepareBulkLoadRequest;<a name="line.125"></a> -<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.126"></a> +<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.quotas.GlobalQuotaSettings;<a name="line.101"></a> +<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.102"></a> +<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress;<a name="line.103"></a> +<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.104"></a> +<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.105"></a> +<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.regionserver.ScanType;<a name="line.106"></a> +<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.regionserver.ScannerContext;<a name="line.107"></a> +<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.108"></a> +<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.109"></a> +<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.replication.ReplicationEndpoint;<a name="line.110"></a> +<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.111"></a> +<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.112"></a> +<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.113"></a> +<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.security.User;<a name="line.114"></a> +<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.115"></a> +<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.security.access.Permission.Action;<a name="line.116"></a> +<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.ArrayListMultimap;<a name="line.117"></a> +<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.ImmutableSet;<a name="line.118"></a> +<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.ListMultimap;<a name="line.119"></a> +<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Lists;<a name="line.120"></a> +<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.MapMaker;<a name="line.121"></a> +<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Maps;<a name="line.122"></a> +<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Sets;<a name="line.123"></a> +<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry;<a name="line.124"></a> +<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CleanupBulkLoadRequest;<a name="line.125"></a> +<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.PrepareBulkLoadRequest;<a name="line.126"></a> <span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.127"></a> <span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.128"></a> <span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.util.ByteRange;<a name="line.129"></a> @@ -2593,168 +2593,170 @@ <span class="sourceLineNo">2585</span><a name="line.2585"></a> <span class="sourceLineNo">2586</span> @Override<a name="line.2586"></a> <span class="sourceLineNo">2587</span> public void preSetUserQuota(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2587"></a> -<span class="sourceLineNo">2588</span> final String userName, final Quotas quotas) throws IOException {<a name="line.2588"></a> +<span class="sourceLineNo">2588</span> final String userName, final GlobalQuotaSettings quotas) throws IOException {<a name="line.2588"></a> <span class="sourceLineNo">2589</span> requirePermission(getActiveUser(ctx), "setUserQuota", Action.ADMIN);<a name="line.2589"></a> <span class="sourceLineNo">2590</span> }<a name="line.2590"></a> <span class="sourceLineNo">2591</span><a name="line.2591"></a> <span class="sourceLineNo">2592</span> @Override<a name="line.2592"></a> <span class="sourceLineNo">2593</span> public void preSetUserQuota(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2593"></a> -<span class="sourceLineNo">2594</span> final String userName, final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2594"></a> -<span class="sourceLineNo">2595</span> requirePermission(getActiveUser(ctx), "setUserTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2595"></a> -<span class="sourceLineNo">2596</span> }<a name="line.2596"></a> -<span class="sourceLineNo">2597</span><a name="line.2597"></a> -<span class="sourceLineNo">2598</span> @Override<a name="line.2598"></a> -<span class="sourceLineNo">2599</span> public void preSetUserQuota(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2599"></a> -<span class="sourceLineNo">2600</span> final String userName, final String namespace, final Quotas quotas) throws IOException {<a name="line.2600"></a> -<span class="sourceLineNo">2601</span> requirePermission(getActiveUser(ctx), "setUserNamespaceQuota", Action.ADMIN);<a name="line.2601"></a> -<span class="sourceLineNo">2602</span> }<a name="line.2602"></a> -<span class="sourceLineNo">2603</span><a name="line.2603"></a> -<span class="sourceLineNo">2604</span> @Override<a name="line.2604"></a> -<span class="sourceLineNo">2605</span> public void preSetTableQuota(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2605"></a> -<span class="sourceLineNo">2606</span> final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2606"></a> -<span class="sourceLineNo">2607</span> requirePermission(getActiveUser(ctx), "setTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2607"></a> -<span class="sourceLineNo">2608</span> }<a name="line.2608"></a> -<span class="sourceLineNo">2609</span><a name="line.2609"></a> -<span class="sourceLineNo">2610</span> @Override<a name="line.2610"></a> -<span class="sourceLineNo">2611</span> public void preSetNamespaceQuota(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2611"></a> -<span class="sourceLineNo">2612</span> final String namespace, final Quotas quotas) throws IOException {<a name="line.2612"></a> -<span class="sourceLineNo">2613</span> requirePermission(getActiveUser(ctx), "setNamespaceQuota", Action.ADMIN);<a name="line.2613"></a> -<span class="sourceLineNo">2614</span> }<a name="line.2614"></a> -<span class="sourceLineNo">2615</span><a name="line.2615"></a> -<span class="sourceLineNo">2616</span> @Override<a name="line.2616"></a> -<span class="sourceLineNo">2617</span> public ReplicationEndpoint postCreateReplicationEndPoint(<a name="line.2617"></a> -<span class="sourceLineNo">2618</span> ObserverContext<RegionServerCoprocessorEnvironment> ctx, ReplicationEndpoint endpoint) {<a name="line.2618"></a> -<span class="sourceLineNo">2619</span> return endpoint;<a name="line.2619"></a> -<span class="sourceLineNo">2620</span> }<a name="line.2620"></a> -<span class="sourceLineNo">2621</span><a name="line.2621"></a> -<span class="sourceLineNo">2622</span> @Override<a name="line.2622"></a> -<span class="sourceLineNo">2623</span> public void preReplicateLogEntries(ObserverContext<RegionServerCoprocessorEnvironment> ctx,<a name="line.2623"></a> -<span class="sourceLineNo">2624</span> List<WALEntry> entries, CellScanner cells) throws IOException {<a name="line.2624"></a> -<span class="sourceLineNo">2625</span> requirePermission(getActiveUser(ctx), "replicateLogEntries", Action.WRITE);<a name="line.2625"></a> -<span class="sourceLineNo">2626</span> }<a name="line.2626"></a> -<span class="sourceLineNo">2627</span><a name="line.2627"></a> -<span class="sourceLineNo">2628</span> @Override<a name="line.2628"></a> -<span class="sourceLineNo">2629</span> public void postReplicateLogEntries(ObserverContext<RegionServerCoprocessorEnvironment> ctx,<a name="line.2629"></a> -<span class="sourceLineNo">2630</span> List<WALEntry> entries, CellScanner cells) throws IOException {<a name="line.2630"></a> -<span class="sourceLineNo">2631</span> }<a name="line.2631"></a> -<span class="sourceLineNo">2632</span><a name="line.2632"></a> -<span class="sourceLineNo">2633</span> @Override<a name="line.2633"></a> -<span class="sourceLineNo">2634</span> public void preClearCompactionQueues(ObserverContext<RegionServerCoprocessorEnvironment> ctx)<a name="line.2634"></a> -<span class="sourceLineNo">2635</span> throws IOException {<a name="line.2635"></a> -<span class="sourceLineNo">2636</span> requirePermission(getActiveUser(ctx), "preClearCompactionQueues", Permission.Action.ADMIN);<a name="line.2636"></a> -<span class="sourceLineNo">2637</span> }<a name="line.2637"></a> -<span class="sourceLineNo">2638</span><a name="line.2638"></a> -<span class="sourceLineNo">2639</span> @Override<a name="line.2639"></a> -<span class="sourceLineNo">2640</span> public void preMoveServersAndTables(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2640"></a> -<span class="sourceLineNo">2641</span> Set<Address> servers, Set<TableName> tables, String targetGroup) throws IOException {<a name="line.2641"></a> -<span class="sourceLineNo">2642</span> requirePermission(getActiveUser(ctx), "moveServersAndTables", Action.ADMIN);<a name="line.2642"></a> -<span class="sourceLineNo">2643</span> }<a name="line.2643"></a> -<span class="sourceLineNo">2644</span><a name="line.2644"></a> -<span class="sourceLineNo">2645</span> @Override<a name="line.2645"></a> -<span class="sourceLineNo">2646</span> public void preMoveServers(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2646"></a> -<span class="sourceLineNo">2647</span> Set<Address> servers, String targetGroup) throws IOException {<a name="line.2647"></a> -<span class="sourceLineNo">2648</span> requirePermission(getActiveUser(ctx), "moveServers", Action.ADMIN);<a name="line.2648"></a> -<span class="sourceLineNo">2649</span> }<a name="line.2649"></a> -<span class="sourceLineNo">2650</span><a name="line.2650"></a> -<span class="sourceLineNo">2651</span> @Override<a name="line.2651"></a> -<span class="sourceLineNo">2652</span> public void preMoveTables(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2652"></a> -<span class="sourceLineNo">2653</span> Set<TableName> tables, String targetGroup) throws IOException {<a name="line.2653"></a> -<span class="sourceLineNo">2654</span> requirePermission(getActiveUser(ctx), "moveTables", Action.ADMIN);<a name="line.2654"></a> -<span class="sourceLineNo">2655</span> }<a name="line.2655"></a> -<span class="sourceLineNo">2656</span><a name="line.2656"></a> -<span class="sourceLineNo">2657</span> @Override<a name="line.2657"></a> -<span class="sourceLineNo">2658</span> public void preAddRSGroup(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2658"></a> -<span class="sourceLineNo">2659</span> String name) throws IOException {<a name="line.2659"></a> -<span class="sourceLineNo">2660</span> requirePermission(getActiveUser(ctx), "addRSGroup", Action.ADMIN);<a name="line.2660"></a> -<span class="sourceLineNo">2661</span> }<a name="line.2661"></a> -<span class="sourceLineNo">2662</span><a name="line.2662"></a> -<span class="sourceLineNo">2663</span> @Override<a name="line.2663"></a> -<span class="sourceLineNo">2664</span> public void preRemoveRSGroup(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2664"></a> -<span class="sourceLineNo">2665</span> String name) throws IOException {<a name="line.2665"></a> -<span class="sourceLineNo">2666</span> requirePermission(getActiveUser(ctx), "removeRSGroup", Action.ADMIN);<a name="line.2666"></a> -<span class="sourceLineNo">2667</span> }<a name="line.2667"></a> -<span class="sourceLineNo">2668</span><a name="line.2668"></a> -<span class="sourceLineNo">2669</span> @Override<a name="line.2669"></a> -<span class="sourceLineNo">2670</span> public void preBalanceRSGroup(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2670"></a> -<span class="sourceLineNo">2671</span> String groupName) throws IOException {<a name="line.2671"></a> -<span class="sourceLineNo">2672</span> requirePermission(getActiveUser(ctx), "balanceRSGroup", Action.ADMIN);<a name="line.2672"></a> -<span class="sourceLineNo">2673</span> }<a name="line.2673"></a> -<span class="sourceLineNo">2674</span><a name="line.2674"></a> -<span class="sourceLineNo">2675</span> @Override<a name="line.2675"></a> -<span class="sourceLineNo">2676</span> public void preAddReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2676"></a> -<span class="sourceLineNo">2677</span> String peerId, ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2677"></a> -<span class="sourceLineNo">2678</span> requirePermission(getActiveUser(ctx), "addReplicationPeer", Action.ADMIN);<a name="line.2678"></a> -<span class="sourceLineNo">2679</span> }<a name="line.2679"></a> -<span class="sourceLineNo">2680</span><a name="line.2680"></a> -<span class="sourceLineNo">2681</span> @Override<a name="line.2681"></a> -<span class="sourceLineNo">2682</span> public void preRemoveReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2682"></a> -<span class="sourceLineNo">2683</span> String peerId) throws IOException {<a name="line.2683"></a> -<span class="sourceLineNo">2684</span> requirePermission(getActiveUser(ctx), "removeReplicationPeer", Action.ADMIN);<a name="line.2684"></a> -<span class="sourceLineNo">2685</span> }<a name="line.2685"></a> -<span class="sourceLineNo">2686</span><a name="line.2686"></a> -<span class="sourceLineNo">2687</span> @Override<a name="line.2687"></a> -<span class="sourceLineNo">2688</span> public void preEnableReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2688"></a> -<span class="sourceLineNo">2689</span> String peerId) throws IOException {<a name="line.2689"></a> -<span class="sourceLineNo">2690</span> requirePermission(getActiveUser(ctx), "enableReplicationPeer", Action.ADMIN);<a name="line.2690"></a> -<span class="sourceLineNo">2691</span> }<a name="line.2691"></a> -<span class="sourceLineNo">2692</span><a name="line.2692"></a> -<span class="sourceLineNo">2693</span> @Override<a name="line.2693"></a> -<span class="sourceLineNo">2694</span> public void preDisableReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2694"></a> -<span class="sourceLineNo">2695</span> String peerId) throws IOException {<a name="line.2695"></a> -<span class="sourceLineNo">2696</span> requirePermission(getActiveUser(ctx), "disableReplicationPeer", Action.ADMIN);<a name="line.2696"></a> -<span class="sourceLineNo">2697</span> }<a name="line.2697"></a> -<span class="sourceLineNo">2698</span><a name="line.2698"></a> -<span class="sourceLineNo">2699</span> @Override<a name="line.2699"></a> -<span class="sourceLineNo">2700</span> public void preGetReplicationPeerConfig(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2700"></a> -<span class="sourceLineNo">2701</span> String peerId) throws IOException {<a name="line.2701"></a> -<span class="sourceLineNo">2702</span> requirePermission(getActiveUser(ctx), "getReplicationPeerConfig", Action.ADMIN);<a name="line.2702"></a> -<span class="sourceLineNo">2703</span> }<a name="line.2703"></a> -<span class="sourceLineNo">2704</span><a name="line.2704"></a> -<span class="sourceLineNo">2705</span> @Override<a name="line.2705"></a> -<span class="sourceLineNo">2706</span> public void preUpdateReplicationPeerConfig(<a name="line.2706"></a> -<span class="sourceLineNo">2707</span> final ObserverContext<MasterCoprocessorEnvironment> ctx, String peerId,<a name="line.2707"></a> -<span class="sourceLineNo">2708</span> ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2708"></a> -<span class="sourceLineNo">2709</span> requirePermission(getActiveUser(ctx), "updateReplicationPeerConfig", Action.ADMIN);<a name="line.2709"></a> -<span class="sourceLineNo">2710</span> }<a name="line.2710"></a> -<span class="sourceLineNo">2711</span><a name="line.2711"></a> -<span class="sourceLineNo">2712</span> @Override<a name="line.2712"></a> -<span class="sourceLineNo">2713</span> public void preListReplicationPeers(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2713"></a> -<span class="sourceLineNo">2714</span> String regex) throws IOException {<a name="line.2714"></a> -<span class="sourceLineNo">2715</span> requirePermission(getActiveUser(ctx), "listReplicationPeers", Action.ADMIN);<a name="line.2715"></a> -<span class="sourceLineNo">2716</span> }<a name="line.2716"></a> -<span class="sourceLineNo">2717</span><a name="line.2717"></a> -<span class="sourceLineNo">2718</span> @Override<a name="line.2718"></a> -<span class="sourceLineNo">2719</span> public void preRequestLock(ObserverContext<MasterCoprocessorEnvironment> ctx, String namespace,<a name="line.2719"></a> -<span class="sourceLineNo">2720</span> TableName tableName, RegionInfo[] regionInfos, LockType type, String description)<a name="line.2720"></a> -<span class="sourceLineNo">2721</span> throws IOException {<a name="line.2721"></a> -<span class="sourceLineNo">2722</span> // There are operations in the CREATE and ADMIN domain which may require lock, READ<a name="line.2722"></a> -<span class="sourceLineNo">2723</span> // or WRITE. So for any lock request, we check for these two perms irrespective of lock type.<a name="line.2723"></a> -<span class="sourceLineNo">2724</span> String reason = String.format("Lock %s, description=%s", type, description);<a name="line.2724"></a> -<span class="sourceLineNo">2725</span> checkLockPermissions(getActiveUser(ctx), namespace, tableName, regionInfos, reason);<a name="line.2725"></a> -<span class="sourceLineNo">2726</span> }<a name="line.2726"></a> -<span class="sourceLineNo">2727</span><a name="line.2727"></a> -<span class="sourceLineNo">2728</span> @Override<a name="line.2728"></a> -<span class="sourceLineNo">2729</span> public void preLockHeartbeat(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2729"></a> -<span class="sourceLineNo">2730</span> LockProcedure proc, boolean keepAlive) throws IOException {<a name="line.2730"></a> -<span class="sourceLineNo">2731</span> String reason = "Heartbeat for lock " + proc.getProcId();<a name="line.2731"></a> -<span class="sourceLineNo">2732</span> checkLockPermissions(getActiveUser(ctx), null, proc.getTableName(), null, reason);<a name="line.2732"></a> -<span class="sourceLineNo">2733</span> }<a name="line.2733"></a> -<span class="sourceLineNo">2734</span><a name="line.2734"></a> -<span class="sourceLineNo">2735</span> private void checkLockPermissions(User user, String namespace,<a name="line.2735"></a> -<span class="sourceLineNo">2736</span> TableName tableName, RegionInfo[] regionInfos, String reason)<a name="line.2736"></a> -<span class="sourceLineNo">2737</span> throws IOException {<a name="line.2737"></a> -<span class="sourceLineNo">2738</span> if (namespace != null && !namespace.isEmpty()) {<a name="line.2738"></a> -<span class="sourceLineNo">2739</span> requireNamespacePermission(user, reason, namespace, Action.ADMIN, Action.CREATE);<a name="line.2739"></a> -<span class="sourceLineNo">2740</span> } else if (tableName != null || (regionInfos != null && regionInfos.length > 0)) {<a name="line.2740"></a> -<span class="sourceLineNo">2741</span> // So, either a table or regions op. If latter, check perms ons table.<a name="line.2741"></a> -<span class="sourceLineNo">2742</span> TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.2742"></a> -<span class="sourceLineNo">2743</span> requireTablePermission(user, reason, tn, null, null,<a name="line.2743"></a> -<span class="sourceLineNo">2744</span> Action.ADMIN, Action.CREATE);<a name="line.2744"></a> -<span class="sourceLineNo">2745</span> } else {<a name="line.2745"></a> -<span class="sourceLineNo">2746</span> throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.2746"></a> -<span class="sourceLineNo">2747</span> }<a name="line.2747"></a> -<span class="sourceLineNo">2748</span> }<a name="line.2748"></a> -<span class="sourceLineNo">2749</span>}<a name="line.2749"></a> +<span class="sourceLineNo">2594</span> final String userName, final TableName tableName, final GlobalQuotaSettings quotas)<a name="line.2594"></a> +<span class="sourceLineNo">2595</span> throws IOException {<a name="line.2595"></a> +<span class="sourceLineNo">2596</span> requirePermission(getActiveUser(ctx), "setUserTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2596"></a> +<span class="sourceLineNo">2597</span> }<a name="line.2597"></a> +<span class="sourceLineNo">2598</span><a name="line.2598"></a> +<span class="sourceLineNo">2599</span> @Override<a name="line.2599"></a> +<span class="sourceLineNo">2600</span> public void preSetUserQuota(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2600"></a> +<span class="sourceLineNo">2601</span> final String userName, final String namespace, final GlobalQuotaSettings quotas)<a name="line.2601"></a> +<span class="sourceLineNo">2602</span> throws IOException {<a name="line.2602"></a> +<span class="sourceLineNo">2603</span> requirePermission(getActiveUser(ctx), "setUserNamespaceQuota", Action.ADMIN);<a name="line.2603"></a> +<span class="sourceLineNo">2604</span> }<a name="line.2604"></a> +<span class="sourceLineNo">2605</span><a name="line.2605"></a> +<span class="sourceLineNo">2606</span> @Override<a name="line.2606"></a> +<span class="sourceLineNo">2607</span> public void preSetTableQuota(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2607"></a> +<span class="sourceLineNo">2608</span> final TableName tableName, final GlobalQuotaSettings quotas) throws IOException {<a name="line.2608"></a> +<span class="sourceLineNo">2609</span> requirePermission(getActiveUser(ctx), "setTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2609"></a> +<span class="sourceLineNo">2610</span> }<a name="line.2610"></a> +<span class="sourceLineNo">2611</span><a name="line.2611"></a> +<span class="sourceLineNo">2612</span> @Override<a name="line.2612"></a> +<span class="sourceLineNo">2613</span> public void preSetNamespaceQuota(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2613"></a> +<span class="sourceLineNo">2614</span> final String namespace, final GlobalQuotaSettings quotas) throws IOException {<a name="line.2614"></a> +<span class="sourceLineNo">2615</span> requirePermission(getActiveUser(ctx), "setNamespaceQuota", Action.ADMIN);<a name="line.2615"></a> +<span class="sourceLineNo">2616</span> }<a name="line.2616"></a> +<span class="sourceLineNo">2617</span><a name="line.2617"></a> +<span class="sourceLineNo">2618</span> @Override<a name="line.2618"></a> +<span class="sourceLineNo">2619</span> public ReplicationEndpoint postCreateReplicationEndPoint(<a name="line.2619"></a> +<span class="sourceLineNo">2620</span> ObserverContext<RegionServerCoprocessorEnvironment> ctx, ReplicationEndpoint endpoint) {<a name="line.2620"></a> +<span class="sourceLineNo">2621</span> return endpoint;<a name="line.2621"></a> +<span class="sourceLineNo">2622</span> }<a name="line.2622"></a> +<span class="sourceLineNo">2623</span><a name="line.2623"></a> +<span class="sourceLineNo">2624</span> @Override<a name="line.2624"></a> +<span class="sourceLineNo">2625</span> public void preReplicateLogEntries(ObserverContext<RegionServerCoprocessorEnvironment> ctx,<a name="line.2625"></a> +<span class="sourceLineNo">2626</span> List<WALEntry> entries, CellScanner cells) throws IOException {<a name="line.2626"></a> +<span class="sourceLineNo">2627</span> requirePermission(getActiveUser(ctx), "replicateLogEntries", Action.WRITE);<a name="line.2627"></a> +<span class="sourceLineNo">2628</span> }<a name="line.2628"></a> +<span class="sourceLineNo">2629</span><a name="line.2629"></a> +<span class="sourceLineNo">2630</span> @Override<a name="line.2630"></a> +<span class="sourceLineNo">2631</span> public void postReplicateLogEntries(ObserverContext<RegionServerCoprocessorEnvironment> ctx,<a name="line.2631"></a> +<span class="sourceLineNo">2632</span> List<WALEntry> entries, CellScanner cells) throws IOException {<a name="line.2632"></a> +<span class="sourceLineNo">2633</span> }<a name="line.2633"></a> +<span class="sourceLineNo">2634</span><a name="line.2634"></a> +<span class="sourceLineNo">2635</span> @Override<a name="line.2635"></a> +<span class="sourceLineNo">2636</span> public void preClearCompactionQueues(ObserverContext<RegionServerCoprocessorEnvironment> ctx)<a name="line.2636"></a> +<span class="sourceLineNo">2637</span> throws IOException {<a name="line.2637"></a> +<span class="sourceLineNo">2638</span> requirePermission(getActiveUser(ctx), "preClearCompactionQueues", Permission.Action.ADMIN);<a name="line.2638"></a> +<span class="sourceLineNo">2639</span> }<a name="line.2639"></a> +<span class="sourceLineNo">2640</span><a name="line.2640"></a> +<span class="sourceLineNo">2641</span> @Override<a name="line.2641"></a> +<span class="sourceLineNo">2642</span> public void preMoveServersAndTables(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2642"></a> +<span class="sourceLineNo">2643</span> Set<Address> servers, Set<TableName> tables, String targetGroup) throws IOException {<a name="line.2643"></a> +<span class="sourceLineNo">2644</span> requirePermission(getActiveUser(ctx), "moveServersAndTables", Action.ADMIN);<a name="line.2644"></a> +<span class="sourceLineNo">2645</span> }<a name="line.2645"></a> +<span class="sourceLineNo">2646</span><a name="line.2646"></a> +<span class="sourceLineNo">2647</span> @Override<a name="line.2647"></a> +<span class="sourceLineNo">2648</span> public void preMoveServers(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2648"></a> +<span class="sourceLineNo">2649</span> Set<Address> servers, String targetGroup) throws IOException {<a name="line.2649"></a> +<span class="sourceLineNo">2650</span> requirePermission(getActiveUser(ctx), "moveServers", Action.ADMIN);<a name="line.2650"></a> +<span class="sourceLineNo">2651</span> }<a name="line.2651"></a> +<span class="sourceLineNo">2652</span><a name="line.2652"></a> +<span class="sourceLineNo">2653</span> @Override<a name="line.2653"></a> +<span class="sourceLineNo">2654</span> public void preMoveTables(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2654"></a> +<span class="sourceLineNo">2655</span> Set<TableName> tables, String targetGroup) throws IOException {<a name="line.2655"></a> +<span class="sourceLineNo">2656</span> requirePermission(getActiveUser(ctx), "moveTables", Action.ADMIN);<a name="line.2656"></a> +<span class="sourceLineNo">2657</span> }<a name="line.2657"></a> +<span class="sourceLineNo">2658</span><a name="line.2658"></a> +<span class="sourceLineNo">2659</span> @Override<a name="line.2659"></a> +<span class="sourceLineNo">2660</span> public void preAddRSGroup(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2660"></a> +<span class="sourceLineNo">2661</span> String name) throws IOException {<a name="line.2661"></a> +<span class="sourceLineNo">2662</span> requirePermission(getActiveUser(ctx), "addRSGroup", Action.ADMIN);<a name="line.2662"></a> +<span class="sourceLineNo">2663</span> }<a name="line.2663"></a> +<span class="sourceLineNo">2664</span><a name="line.2664"></a> +<span class="sourceLineNo">2665</span> @Override<a name="line.2665"></a> +<span class="sourceLineNo">2666</span> public void preRemoveRSGroup(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2666"></a> +<span class="sourceLineNo">2667</span> String name) throws IOException {<a name="line.2667"></a> +<span class="sourceLineNo">2668</span> requirePermission(getActiveUser(ctx), "removeRSGroup", Action.ADMIN);<a name="line.2668"></a> +<span class="sourceLineNo">2669</span> }<a name="line.2669"></a> +<span class="sourceLineNo">2670</span><a name="line.2670"></a> +<span class="sourceLineNo">2671</span> @Override<a name="line.2671"></a> +<span class="sourceLineNo">2672</span> public void preBalanceRSGroup(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2672"></a> +<span class="sourceLineNo">2673</span> String groupName) throws IOException {<a name="line.2673"></a> +<span class="sourceLineNo">2674</span> requirePermission(getActiveUser(ctx), "balanceRSGroup", Action.ADMIN);<a name="line.2674"></a> +<span class="sourceLineNo">2675</span> }<a name="line.2675"></a> +<span class="sourceLineNo">2676</span><a name="line.2676"></a> +<span class="sourceLineNo">2677</span> @Override<a name="line.2677"></a> +<span class="sourceLineNo">2678</span> public void preAddReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2678"></a> +<span class="sourceLineNo">2679</span> String peerId, ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2679"></a> +<span class="sourceLineNo">2680</span> requirePermission(getActiveUser(ctx), "addReplicationPeer", Action.ADMIN);<a name="line.2680"></a> +<span class="sourceLineNo">2681</span> }<a name="line.2681"></a> +<span class="sourceLineNo">2682</span><a name="line.2682"></a> +<span class="sourceLineNo">2683</span> @Override<a name="line.2683"></a> +<span class="sourceLineNo">2684</span> public void preRemoveReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2684"></a> +<span class="sourceLineNo">2685</span> String peerId) throws IOException {<a name="line.2685"></a> +<span class="sourceLineNo">2686</span> requirePermission(getActiveUser(ctx), "removeReplicationPeer", Action.ADMIN);<a name="line.2686"></a> +<span class="sourceLineNo">2687</span> }<a name="line.2687"></a> +<span class="sourceLineNo">2688</span><a name="line.2688"></a> +<span class="sourceLineNo">2689</span> @Override<a name="line.2689"></a> +<span class="sourceLineNo">2690</span> public void preEnableReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2690"></a> +<span class="sourceLineNo">2691</span> String peerId) throws IOException {<a name="line.2691"></a> +<span class="sourceLineNo">2692</span> requirePermission(getActiveUser(ctx), "enableReplicationPeer", Action.ADMIN);<a name="line.2692"></a> +<span class="sourceLineNo">2693</span> }<a name="line.2693"></a> +<span class="sourceLineNo">2694</span><a name="line.2694"></a> +<span class="sourceLineNo">2695</span> @Override<a name="line.2695"></a> +<span class="sourceLineNo">2696</span> public void preDisableReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2696"></a> +<span class="sourceLineNo">2697</span> String peerId) throws IOException {<a name="line.2697"></a> +<span class="sourceLineNo">2698</span> requirePermission(getActiveUser(ctx), "disableReplicationPeer", Action.ADMIN);<a name="line.2698"></a> +<span class="sourceLineNo">2699</span> }<a name="line.2699"></a> +<span class="sourceLineNo">2700</span><a name="line.2700"></a> +<span class="sourceLineNo">2701</span> @Override<a name="line.2701"></a> +<span class="sourceLineNo">2702</span> public void preGetReplicationPeerConfig(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2702"></a> +<span class="sourceLineNo">2703</span> String peerId) throws IOException {<a name="line.2703"></a> +<span class="sourceLineNo">2704</span> requirePermission(getActiveUser(ctx), "getReplicationPeerConfig", Action.ADMIN);<a name="line.2704"></a> +<span class="sourceLineNo">2705</span> }<a name="line.2705"></a> +<span class="sourceLineNo">2706</span><a name="line.2706"></a> +<span class="sourceLineNo">2707</span> @Override<a name="line.2707"></a> +<span class="sourceLineNo">2708</span> public void preUpdateReplicationPeerConfig(<a name="line.2708"></a> +<span class="sourceLineNo">2709</span> final ObserverContext<MasterCoprocessorEnvironment> ctx, String peerId,<a name="line.2709"></a> +<span class="sourceLineNo">2710</span> ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2710"></a> +<span class="sourceLineNo">2711</span> requirePermission(getActiveUser(ctx), "updateReplicationPeerConfig", Action.ADMIN);<a name="line.2711"></a> +<span class="sourceLineNo">2712</span> }<a name="line.2712"></a> +<span class="sourceLineNo">2713</span><a name="line.2713"></a> +<span class="sourceLineNo">2714</span> @Override<a name="line.2714"></a> +<span class="sourceLineNo">2715</span> public void preListReplicationPeers(final ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2715"></a> +<span class="sourceLineNo">2716</span> String regex) throws IOException {<a name="line.2716"></a> +<span class="sourceLineNo">2717</span> requirePermission(getActiveUser(ctx), "listReplicationPeers", Action.ADMIN);<a name="line.2717"></a> +<span class="sourceLineNo">2718</span> }<a name="line.2718"></a> +<span class="sourceLineNo">2719</span><a name="line.2719"></a> +<span class="sourceLineNo">2720</span> @Override<a name="line.2720"></a> +<span class="sourceLineNo">2721</span> public void preRequestLock(ObserverContext<MasterCoprocessorEnvironment> ctx, String namespace,<a name="line.2721"></a> +<span class="sourceLineNo">2722</span> TableName tableName, RegionInfo[] regionInfos, LockType type, String description)<a name="line.2722"></a> +<span class="sourceLineNo">2723</span> throws IOException {<a name="line.2723"></a> +<span class="sourceLineNo">2724</span> // There are operations in the CREATE and ADMIN domain which may require lock, READ<a name="line.2724"></a> +<span class="sourceLineNo">2725</span> // or WRITE. So for any lock request, we check for these two perms irrespective of lock type.<a name="line.2725"></a> +<span class="sourceLineNo">2726</span> String reason = String.format("Lock %s, description=%s", type, description);<a name="line.2726"></a> +<span class="sourceLineNo">2727</span> checkLockPermissions(getActiveUser(ctx), namespace, tableName, regionInfos, reason);<a name="line.2727"></a> +<span class="sourceLineNo">2728</span> }<a name="line.2728"></a> +<span class="sourceLineNo">2729</span><a name="line.2729"></a> +<span class="sourceLineNo">2730</span> @Override<a name="line.2730"></a> +<span class="sourceLineNo">2731</span> public void preLockHeartbeat(ObserverContext<MasterCoprocessorEnvironment> ctx,<a name="line.2731"></a> +<span class="sourceLineNo">2732</span> LockProcedure proc, boolean keepAlive) throws IOException {<a name="line.2732"></a> +<span class="sourceLineNo">2733</span> String reason = "Heartbeat for lock " + proc.getProcId();<a name="line.2733"></a> +<span class="sourceLineNo">2734</span> checkLockPermissions(getActiveUser(ctx), null, proc.getTableName(), null, reason);<a name="line.2734"></a> +<span class="sourceLineNo">2735</span> }<a name="line.2735"></a> +<span class="sourceLineNo">2736</span><a name="line.2736"></a> +<span class="sourceLineNo">2737</span> private void checkLockPermissions(User user, String namespace,<a name="line.2737"></a> +<span class="sourceLineNo">2738</span> TableName tableName, RegionInfo[] regionInfos, String reason)<a name="line.2738"></a> +<span class="sourceLineNo">2739</span> throws IOException {<a name="line.2739"></a> +<span class="sourceLineNo">2740</span> if (namespace != null && !namespace.isEmpty()) {<a name="line.2740"></a> +<span class="sourceLineNo">2741</span> requireNamespacePermission(user, reason, namespace, Action.ADMIN, Action.CREATE);<a name="line.2741"></a> +<span class="sourceLineNo">2742</span> } else if (tableName != null || (regionInfos != null && regionInfos.length > 0)) {<a name="line.2742"></a> +<span class="sourceLineNo">2743</span> // So, either a table or regions op. If latter, check perms ons table.<a name="line.2743"></a> +<span class="sourceLineNo">2744</span> TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.2744"></a> +<span class="sourceLineNo">2745</span> requireTablePermission(user, reason, tn, null, null,<a name="line.2745"></a> +<span class="sourceLineNo">2746</span> Action.ADMIN, Action.CREATE);<a name="line.2746"></a> +<span class="sourceLineNo">2747</span> } else {<a name="line.2747"></a> +<span class="sourceLineNo">2748</span> throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.2748"></a> +<span class="sourceLineNo">2749</span> }<a name="line.2749"></a> +<span class="sourceLineNo">2750</span> }<a name="line.2750"></a> +<span class="sourceLineNo">2751</span>}<a name="line.2751"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e6bd0774/export_control.html ---------------------------------------------------------------------- diff --git a/export_control.html b/export_control.html index fc4cbbe..6eb3745 100644 --- a/export_control.html +++ b/export_control.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="20170923" /> + <meta name="Date-Revision-yyyymmdd" content="20170924" /> <meta http-equiv="Content-Language" content="en" /> <title>Apache HBase – Export Control @@ -336,7 +336,7 @@ for more details.</p> <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved. - <li id="publishDate" class="pull-right">Last Published: 2017-09-23</li> + <li id="publishDate" class="pull-right">Last Published: 2017-09-24</li> </p> </div> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e6bd0774/hbase-annotations/dependencies.html ---------------------------------------------------------------------- diff --git a/hbase-annotations/dependencies.html b/hbase-annotations/dependencies.html index 3ec1d29..672d510 100644 --- a/hbase-annotations/dependencies.html +++ b/hbase-annotations/dependencies.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="20170923" /> + <meta name="Date-Revision-yyyymmdd" content="20170924" /> <meta http-equiv="Content-Language" content="en" /> <title>Apache HBase - Annotations – Project Dependencies</title> <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" /> @@ -272,7 +272,7 @@ <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved. - <li id="publishDate" class="pull-right">Last Published: 2017-09-23</li> + <li id="publishDate" class="pull-right">Last Published: 2017-09-24</li> </p> </div> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/e6bd0774/hbase-annotations/dependency-convergence.html ---------------------------------------------------------------------- diff --git a/hbase-annotations/dependency-convergence.html b/hbase-annotations/dependency-convergence.html index 9075f64..fab1eb1 100644 --- a/hbase-annotations/dependency-convergence.html +++ b/hbase-annotations/dependency-convergence.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="20170923" /> + <meta name="Date-Revision-yyyymmdd" content="20170924" /> <meta http-equiv="Content-Language" content="en" /> <title>Apache HBase - Annotations – Reactor Dependency Convergence</title> <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" /> @@ -650,7 +650,7 @@ <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved. - <li id="publishDate" class="pull-right">Last Published: 2017-09-23</li> + <li id="publishDate" class="pull-right">Last Published: 2017-09-24</li> </p> </div>
