Search in sources :

Example 1 with BlockingInterface

use of org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.BlockingInterface in project hbase by apache.

the class AccessControlClient method getAccessControlServiceStub.

private static BlockingInterface getAccessControlServiceStub(Table ht) throws IOException {
    CoprocessorRpcChannel service = ht.coprocessorService(HConstants.EMPTY_START_ROW);
    BlockingInterface protocol = AccessControlProtos.AccessControlService.newBlockingStub(service);
    return protocol;
}
Also used : BlockingInterface(org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.BlockingInterface) CoprocessorRpcChannel(org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel)

Example 2 with BlockingInterface

use of org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.BlockingInterface in project hbase by apache.

the class AccessControlClient method getUserPermissions.

/**
   * List all the userPermissions matching the given pattern. If pattern is null, the behavior is
   * dependent on whether user has global admin privileges or not. If yes, the global permissions
   * along with the list of superusers would be returned. Else, no rows get returned.
   * @param connection The Connection instance to use
   * @param tableRegex The regular expression string to match against
   * @return - returns an array of UserPermissions
   * @throws Throwable
   */
public static List<UserPermission> getUserPermissions(Connection connection, String tableRegex) throws Throwable {
    /** TODO: Pass an rpcController
    HBaseRpcController controller
      = ((ClusterConnection) connection).getRpcControllerFactory().newController();
      */
    List<UserPermission> permList = new ArrayList<>();
    try (Table table = connection.getTable(ACL_TABLE_NAME)) {
        try (Admin admin = connection.getAdmin()) {
            CoprocessorRpcChannel service = table.coprocessorService(HConstants.EMPTY_START_ROW);
            BlockingInterface protocol = AccessControlProtos.AccessControlService.newBlockingStub(service);
            HTableDescriptor[] htds = null;
            if (tableRegex == null || tableRegex.isEmpty()) {
                permList = AccessControlUtil.getUserPermissions(null, protocol);
            } else if (tableRegex.charAt(0) == '@') {
                // Namespaces
                String namespaceRegex = tableRegex.substring(1);
                for (NamespaceDescriptor nsds : admin.listNamespaceDescriptors()) {
                    // Read out all namespaces
                    String namespace = nsds.getName();
                    if (namespace.matches(namespaceRegex)) {
                        // Match the given namespace regex?
                        permList.addAll(AccessControlUtil.getUserPermissions(null, protocol, Bytes.toBytes(namespace)));
                    }
                }
            } else {
                // Tables
                htds = admin.listTables(Pattern.compile(tableRegex), true);
                for (HTableDescriptor hd : htds) {
                    permList.addAll(AccessControlUtil.getUserPermissions(null, protocol, hd.getTableName()));
                }
            }
        }
    }
    return permList;
}
Also used : BlockingInterface(org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.BlockingInterface) Table(org.apache.hadoop.hbase.client.Table) CoprocessorRpcChannel(org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel) ArrayList(java.util.ArrayList) NamespaceDescriptor(org.apache.hadoop.hbase.NamespaceDescriptor) Admin(org.apache.hadoop.hbase.client.Admin) HTableDescriptor(org.apache.hadoop.hbase.HTableDescriptor)

Aggregations

CoprocessorRpcChannel (org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel)2 BlockingInterface (org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.BlockingInterface)2 ArrayList (java.util.ArrayList)1 HTableDescriptor (org.apache.hadoop.hbase.HTableDescriptor)1 NamespaceDescriptor (org.apache.hadoop.hbase.NamespaceDescriptor)1 Admin (org.apache.hadoop.hbase.client.Admin)1 Table (org.apache.hadoop.hbase.client.Table)1