com.purbon.kafka.topology.roles.SimpleAclsProvider Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of julie-ops Show documentation
Show all versions of julie-ops Show documentation
A helper project for Kafka Platform teams to build an automated Topic, Configuration, Schemas, and more,
Management solution.
The newest version!
package com.purbon.kafka.topology.roles;
import com.purbon.kafka.topology.AccessControlProvider;
import com.purbon.kafka.topology.api.adminclient.TopologyBuilderAdminClient;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import org.apache.kafka.common.acl.AclBinding;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class SimpleAclsProvider implements AccessControlProvider {
private static final Logger LOGGER = LogManager.getLogger(SimpleAclsProvider.class);
protected final TopologyBuilderAdminClient adminClient;
public SimpleAclsProvider(final TopologyBuilderAdminClient adminClient) {
this.adminClient = adminClient;
}
@Override
public void createBindings(Set bindings) throws IOException {
LOGGER.debug("AclsProvider: createBindings");
List bindingsAsNativeKafka =
bindings.stream()
.filter(binding -> binding.asAclBinding().isPresent())
.map(binding -> binding.asAclBinding().get())
.collect(Collectors.toList());
LOGGER.debug("bindingsAsNativeKafka.size: " + bindingsAsNativeKafka.size());
adminClient.createAcls(bindingsAsNativeKafka);
}
@Override
public void clearBindings(Set bindings) throws IOException {
LOGGER.debug("AclsProvider: clearAcls");
for (TopologyAclBinding binding : bindings) {
try {
adminClient.clearAcls(binding);
} catch (IOException ex) {
LOGGER.error(ex);
throw ex;
}
}
}
@Override
public Map> listAcls() {
Map> map = new HashMap<>();
adminClient
.fetchAclsList()
.forEach(
(topic, aclBindings) ->
map.put(
topic,
aclBindings.stream()
.map(TopologyAclBinding::new)
.collect(Collectors.toList())));
return map;
}
}