|
@@ -41,6 +41,7 @@ import java.util.Properties;
|
|
import java.util.UUID;
|
|
import java.util.UUID;
|
|
import java.util.concurrent.CompletableFuture;
|
|
import java.util.concurrent.CompletableFuture;
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
+import java.util.concurrent.ExecutionException;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Stream;
|
|
import java.util.stream.Stream;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
@@ -53,6 +54,7 @@ import org.apache.kafka.clients.admin.AlterConfigOp;
|
|
import org.apache.kafka.clients.admin.Config;
|
|
import org.apache.kafka.clients.admin.Config;
|
|
import org.apache.kafka.clients.admin.ConfigEntry;
|
|
import org.apache.kafka.clients.admin.ConfigEntry;
|
|
import org.apache.kafka.clients.admin.ConsumerGroupListing;
|
|
import org.apache.kafka.clients.admin.ConsumerGroupListing;
|
|
|
|
+import org.apache.kafka.clients.admin.DescribeLogDirsResult;
|
|
import org.apache.kafka.clients.admin.ListTopicsOptions;
|
|
import org.apache.kafka.clients.admin.ListTopicsOptions;
|
|
import org.apache.kafka.clients.admin.NewPartitionReassignment;
|
|
import org.apache.kafka.clients.admin.NewPartitionReassignment;
|
|
import org.apache.kafka.clients.admin.NewPartitions;
|
|
import org.apache.kafka.clients.admin.NewPartitions;
|
|
@@ -68,6 +70,8 @@ import org.apache.kafka.clients.producer.RecordMetadata;
|
|
import org.apache.kafka.common.Node;
|
|
import org.apache.kafka.common.Node;
|
|
import org.apache.kafka.common.TopicPartition;
|
|
import org.apache.kafka.common.TopicPartition;
|
|
import org.apache.kafka.common.config.ConfigResource;
|
|
import org.apache.kafka.common.config.ConfigResource;
|
|
|
|
+import org.apache.kafka.common.errors.TimeoutException;
|
|
|
|
+import org.apache.kafka.common.requests.DescribeLogDirsResponse;
|
|
import org.apache.kafka.common.serialization.ByteArraySerializer;
|
|
import org.apache.kafka.common.serialization.ByteArraySerializer;
|
|
import org.apache.kafka.common.serialization.BytesDeserializer;
|
|
import org.apache.kafka.common.serialization.BytesDeserializer;
|
|
import org.apache.kafka.common.utils.Bytes;
|
|
import org.apache.kafka.common.utils.Bytes;
|
|
@@ -786,6 +790,23 @@ public class KafkaService {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public Mono<Map<Integer, Map<String, DescribeLogDirsResponse.LogDirInfo>>> getClusterLogDirs(
|
|
|
|
+ KafkaCluster cluster, List<Integer> reqBrokers) {
|
|
|
|
+ return getOrCreateAdminClient(cluster)
|
|
|
|
+ .map(admin -> {
|
|
|
|
+ List<Integer> brokers = new ArrayList<>(cluster.getBrokers());
|
|
|
|
+ if (reqBrokers != null && !reqBrokers.isEmpty()) {
|
|
|
|
+ brokers.retainAll(reqBrokers);
|
|
|
|
+ }
|
|
|
|
+ return admin.getAdminClient().describeLogDirs(brokers);
|
|
|
|
+ })
|
|
|
|
+ .flatMap(result -> ClusterUtil.toMono(result.all()))
|
|
|
|
+ .onErrorResume(TimeoutException.class, (TimeoutException e) -> {
|
|
|
|
+ log.error("Error during fetching log dirs", e);
|
|
|
|
+ return Mono.just(new HashMap<>());
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
private Map<TopicPartition, Optional<NewPartitionReassignment>> getPartitionsReassignments(
|
|
private Map<TopicPartition, Optional<NewPartitionReassignment>> getPartitionsReassignments(
|
|
KafkaCluster cluster,
|
|
KafkaCluster cluster,
|
|
String topicName,
|
|
String topicName,
|