wip
This commit is contained in:
parent
2b2a12c336
commit
1336ec33cb
3 changed files with 13 additions and 14 deletions
|
@ -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.ClientQuotaRecord;
|
||||||
import com.provectus.kafka.ui.service.quota.ClientQuotaService;
|
import com.provectus.kafka.ui.service.quota.ClientQuotaService;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
@ -23,6 +24,11 @@ import reactor.core.publisher.Mono;
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class ClientQuotasController extends AbstractController implements ClientQuotasApi {
|
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;
|
private final ClientQuotaService clientQuotaService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -35,8 +41,11 @@ public class ClientQuotasController extends AbstractController implements Client
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Mono<ResponseEntity<Flux<ClientQuotasDTO>>> operation =
|
Mono<ResponseEntity<Flux<ClientQuotasDTO>>> operation =
|
||||||
Mono.just(clientQuotaService.list(getCluster(clusterName)).map(this::mapToDto))
|
Mono.just(
|
||||||
.map(ResponseEntity::ok);
|
clientQuotaService.list(getCluster(clusterName))
|
||||||
|
.sort(QUOTA_RECORDS_COMPARATOR)
|
||||||
|
.map(this::mapToDto)
|
||||||
|
).map(ResponseEntity::ok);
|
||||||
|
|
||||||
return validateAccess(context)
|
return validateAccess(context)
|
||||||
.then(operation)
|
.then(operation)
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package com.provectus.kafka.ui.service.quota;
|
package com.provectus.kafka.ui.service.quota;
|
||||||
|
|
||||||
import jakarta.annotation.Nullable;
|
import jakarta.annotation.Nullable;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import org.apache.kafka.common.quota.ClientQuotaEntity;
|
import org.apache.kafka.common.quota.ClientQuotaEntity;
|
||||||
|
|
||||||
|
@ -10,11 +9,6 @@ public record ClientQuotaRecord(@Nullable String user,
|
||||||
@Nullable String ip,
|
@Nullable String ip,
|
||||||
Map<String, Double> quotas) {
|
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) {
|
static ClientQuotaRecord create(ClientQuotaEntity entity, Map<String, Double> quotas) {
|
||||||
return new ClientQuotaRecord(
|
return new ClientQuotaRecord(
|
||||||
entity.entries().get(ClientQuotaEntity.USER),
|
entity.entries().get(ClientQuotaEntity.USER),
|
||||||
|
|
|
@ -37,12 +37,8 @@ public class ClientQuotaService {
|
||||||
public Flux<ClientQuotaRecord> list(KafkaCluster cluster) {
|
public Flux<ClientQuotaRecord> list(KafkaCluster cluster) {
|
||||||
return adminClientService.get(cluster)
|
return adminClientService.get(cluster)
|
||||||
.flatMap(ac -> ac.getClientQuotas(ClientQuotaFilter.all()))
|
.flatMap(ac -> ac.getClientQuotas(ClientQuotaFilter.all()))
|
||||||
.flatMapIterable(map ->
|
.flatMapIterable(Map::entrySet)
|
||||||
map.entrySet().stream()
|
.map(e -> ClientQuotaRecord.create(e.getKey(), e.getValue()));
|
||||||
.map(e -> ClientQuotaRecord.create(e.getKey(), e.getValue()))
|
|
||||||
.sorted(ClientQuotaRecord.COMPARATOR)
|
|
||||||
.toList()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//returns 201 if new entity was created, 200 if existing was updated, 204 if existing was deleted
|
//returns 201 if new entity was created, 200 if existing was updated, 204 if existing was deleted
|
||||||
|
|
Loading…
Add table
Reference in a new issue