/** * This is a convenience method for #{@link AdminClient#describeAcls(AclBindingFilter, DescribeAclsOptions)} with * default options. See the overload for more details. * * This operation is supported by brokers with version 0.11.0.0 or higher. * * @param filter The filter to use. * @return The DeleteAclsResult. */ public DescribeAclsResult describeAcls(AclBindingFilter filter) { return describeAcls(filter, new DescribeAclsOptions()); }
@Test public void testDescribeAcls() throws Exception { try (AdminClientUnitTestEnv env = mockClientEnv()) { env.kafkaClient().setNodeApiVersions(NodeApiVersions.create()); // Test a call where we get back ACL1 and ACL2. env.kafkaClient().prepareResponse(new DescribeAclsResponse(0, ApiError.NONE, asList(ACL1, ACL2))); assertCollectionIs(env.adminClient().describeAcls(FILTER1).values().get(), ACL1, ACL2); // Test a call where we get back no results. env.kafkaClient().prepareResponse(new DescribeAclsResponse(0, ApiError.NONE, Collections.<AclBinding>emptySet())); assertTrue(env.adminClient().describeAcls(FILTER2).values().get().isEmpty()); // Test a call where we get back an error. env.kafkaClient().prepareResponse(new DescribeAclsResponse(0, new ApiError(Errors.SECURITY_DISABLED, "Security is disabled"), Collections.<AclBinding>emptySet())); TestUtils.assertFutureError(env.adminClient().describeAcls(FILTER2).values(), SecurityDisabledException.class); // Test a call where we supply an invalid filter. TestUtils.assertFutureError(env.adminClient().describeAcls(UNKNOWN_FILTER).values(), InvalidRequestException.class); } }
env.adminClient().describeAcls(FILTER1).values().get(); fail("Expected an authentication error."); } catch (ExecutionException e) {
private Collection<AclBinding> userAcls(String username) { try { AclBindingFilter any = new AclBindingFilter( new ResourceFilter(ResourceType.TOPIC, null), new AccessControlEntryFilter("User:" + username, null, AclOperation.ANY, AclPermissionType.ANY)); return adminClient.describeAcls(any).values().get(); } catch (InterruptedException | ExecutionException e) { if (e.getCause() != null && e.getCause() instanceof SecurityDisabledException) { log.debug("Security disabled on server: {}", e.getCause().getMessage()); } else { log.warn("Exception occured during user acls retrieval. name: {}", username, e); } } return Collections.emptyList(); }