This commit is contained in:
iliax 2023-08-13 14:27:03 +04:00
parent 2b2a12c336
commit 1336ec33cb
3 changed files with 13 additions and 14 deletions

View file

@ -9,6 +9,7 @@ import com.provectus.kafka.ui.model.rbac.permission.ClientQuotaAction;
import com.provectus.kafka.ui.service.quota.ClientQuotaRecord;
import com.provectus.kafka.ui.service.quota.ClientQuotaService;
import java.math.BigDecimal;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Optional;
@ -23,6 +24,11 @@ import reactor.core.publisher.Mono;
@RequiredArgsConstructor
public class ClientQuotasController extends AbstractController implements ClientQuotasApi {
private static final Comparator<ClientQuotaRecord> QUOTA_RECORDS_COMPARATOR =
Comparator.nullsLast(Comparator.comparing(ClientQuotaRecord::user))
.thenComparing(Comparator.nullsLast(Comparator.comparing(ClientQuotaRecord::clientId)))
.thenComparing(Comparator.nullsLast(Comparator.comparing(ClientQuotaRecord::ip)));
private final ClientQuotaService clientQuotaService;
@Override
@ -35,8 +41,11 @@ public class ClientQuotasController extends AbstractController implements Client
.build();
Mono<ResponseEntity<Flux<ClientQuotasDTO>>> operation =
Mono.just(clientQuotaService.list(getCluster(clusterName)).map(this::mapToDto))
.map(ResponseEntity::ok);
Mono.just(
clientQuotaService.list(getCluster(clusterName))
.sort(QUOTA_RECORDS_COMPARATOR)
.map(this::mapToDto)
).map(ResponseEntity::ok);
return validateAccess(context)
.then(operation)

View file

@ -1,7 +1,6 @@
package com.provectus.kafka.ui.service.quota;
import jakarta.annotation.Nullable;
import java.util.Comparator;
import java.util.Map;
import org.apache.kafka.common.quota.ClientQuotaEntity;
@ -10,11 +9,6 @@ public record ClientQuotaRecord(@Nullable String user,
@Nullable String ip,
Map<String, Double> quotas) {
static final Comparator<ClientQuotaRecord> COMPARATOR =
Comparator.<ClientQuotaRecord, String>comparing(r -> r.user)
.thenComparing(r -> r.clientId)
.thenComparing(r -> r.ip);
static ClientQuotaRecord create(ClientQuotaEntity entity, Map<String, Double> quotas) {
return new ClientQuotaRecord(
entity.entries().get(ClientQuotaEntity.USER),

View file

@ -37,12 +37,8 @@ public class ClientQuotaService {
public Flux<ClientQuotaRecord> list(KafkaCluster cluster) {
return adminClientService.get(cluster)
.flatMap(ac -> ac.getClientQuotas(ClientQuotaFilter.all()))
.flatMapIterable(map ->
map.entrySet().stream()
.map(e -> ClientQuotaRecord.create(e.getKey(), e.getValue()))
.sorted(ClientQuotaRecord.COMPARATOR)
.toList()
);
.flatMapIterable(Map::entrySet)
.map(e -> ClientQuotaRecord.create(e.getKey(), e.getValue()));
}
//returns 201 if new entity was created, 200 if existing was updated, 204 if existing was deleted