diff --git a/src/main/java/com/xuxd/kafka/console/service/impl/ClientQuotaServiceImpl.java b/src/main/java/com/xuxd/kafka/console/service/impl/ClientQuotaServiceImpl.java index 884e59a..34f1ca9 100644 --- a/src/main/java/com/xuxd/kafka/console/service/impl/ClientQuotaServiceImpl.java +++ b/src/main/java/com/xuxd/kafka/console/service/impl/ClientQuotaServiceImpl.java @@ -11,6 +11,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.kafka.common.config.internals.QuotaConfigs; import org.apache.kafka.common.quota.ClientQuotaEntity; import org.springframework.stereotype.Service; +import scala.Tuple2; import java.util.*; import java.util.stream.Collectors; @@ -98,10 +99,16 @@ public class ClientQuotaServiceImpl implements ClientQuotaService { configsToBeAddedMap.put(QuotaConfigs.REQUEST_PERCENTAGE_OVERRIDE_CONFIG, String.valueOf(Math.floor(Double.valueOf(request.getRequestPercentage())))); } - clientQuotaConsole.addQuotaConfigs(types, names, configsToBeAddedMap); + Tuple2 tuple2 = clientQuotaConsole.addQuotaConfigs(types, names, configsToBeAddedMap); + if (!(Boolean) tuple2._1) { + return ResponseData.create().failed(tuple2._2); + } if (CollectionUtils.isNotEmpty(request.getDeleteConfigs())) { List delete = request.getDeleteConfigs().stream().map(key -> configDict.get(key)).collect(Collectors.toList()); - clientQuotaConsole.deleteQuotaConfigs(types, names, delete); + Tuple2 tuple2Del = clientQuotaConsole.deleteQuotaConfigs(types, names, delete); + if (!(Boolean) tuple2Del._1) { + return ResponseData.create().failed(tuple2Del._2); + } } return ResponseData.create().success(); } @@ -118,7 +125,10 @@ public class ClientQuotaServiceImpl implements ClientQuotaService { configs.add(QuotaConfigs.PRODUCER_BYTE_RATE_OVERRIDE_CONFIG); configs.add(QuotaConfigs.CONSUMER_BYTE_RATE_OVERRIDE_CONFIG); configs.add(QuotaConfigs.REQUEST_PERCENTAGE_OVERRIDE_CONFIG); - clientQuotaConsole.deleteQuotaConfigs(types, names, configs); + Tuple2 tuple2 = clientQuotaConsole.deleteQuotaConfigs(types, names, configs); + if (!(Boolean) tuple2._1) { + return ResponseData.create().failed(tuple2._2); + } return ResponseData.create().success(); } diff --git a/ui/src/views/quota/AddQuotaConfig.vue b/ui/src/views/quota/AddQuotaConfig.vue index d545463..4fd24ab 100644 --- a/ui/src/views/quota/AddQuotaConfig.vue +++ b/ui/src/views/quota/AddQuotaConfig.vue @@ -145,28 +145,29 @@ export default { params.producerRate = params.producerRate * unitMap[this.producerRateUnit]; } params.types = []; + params.names = []; if (this.showUser) { params.types.push("user"); if (params.user) { - params.names = [params.user.trim()]; + params.names.push(params.user.trim()); } else { - params.names = [""]; + params.names.push(""); } } if (this.showClientId) { params.types.push("client-id"); if (params.client) { - params.names = [params.client.trim()]; + params.names.push(params.client.trim()); } else { - params.names = [""]; + params.names.push(""); } } if (this.showIP) { params.types.push("ip"); if (params.ip) { - params.names = [params.ip.trim()]; + params.names.push(params.ip.trim()); } else { - params.names = [""]; + params.names.push(""); } } this.loading = true; diff --git a/ui/src/views/quota/ClientIDQuota.vue b/ui/src/views/quota/ClientIDQuota.vue index 3d02097..3ea9f19 100644 --- a/ui/src/views/quota/ClientIDQuota.vue +++ b/ui/src/views/quota/ClientIDQuota.vue @@ -55,7 +55,7 @@ export default { data() { return { loading: false, - form: this.$form.createForm(this, {name: "client_id_search_offset"}), + form: this.$form.createForm(this, {name: "client_id_quota"}), data: [], showAlterQuotaDialog: false, showAddQuotaDialog: false, @@ -64,7 +64,6 @@ export default { title: "客户端ID", dataIndex: "client", key: "client", - width: 300, slots: {title: "client"}, scopedSlots: {customRender: "client"}, }, diff --git a/ui/src/views/quota/ClientQuota.vue b/ui/src/views/quota/ClientQuota.vue index 9511e06..528ccab 100644 --- a/ui/src/views/quota/ClientQuota.vue +++ b/ui/src/views/quota/ClientQuota.vue @@ -2,16 +2,19 @@
- - + + - + + - + + - + + @@ -20,10 +23,13 @@ + + diff --git a/ui/src/views/quota/QuotaList.vue b/ui/src/views/quota/QuotaList.vue index a951217..83f40ef 100644 --- a/ui/src/views/quota/QuotaList.vue +++ b/ui/src/views/quota/QuotaList.vue @@ -15,6 +15,9 @@
{{ text }}默认配置
+
+ {{ text }}默认配置 +
0 ? values.producerRate.split(" ")[0] : values.producerRate; + const num = typeof (values.producerRate) == "string" && values.producerRate.indexOf(" ") > 0 ? values.producerRate.split(" ")[0] : values.producerRate; params.producerRate = num * unitMap[this.producerRateUnit]; } else { params.deleteConfigs.push("producerRate"); @@ -183,7 +183,6 @@ export default { params.names = [""]; } } - console.log(params) this.loading = true; request({ url: KafkaClientQuotaApi.alterClientQuotaConfigs.url, diff --git a/ui/src/views/quota/UserAndClientIDQuota.vue b/ui/src/views/quota/UserAndClientIDQuota.vue new file mode 100644 index 0000000..1619636 --- /dev/null +++ b/ui/src/views/quota/UserAndClientIDQuota.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/ui/src/views/quota/UserQuota.vue b/ui/src/views/quota/UserQuota.vue new file mode 100644 index 0000000..348a32d --- /dev/null +++ b/ui/src/views/quota/UserQuota.vue @@ -0,0 +1,181 @@ + + + + +