AndrewJSchofield commented on code in PR #19743:
URL: https://github.com/apache/kafka/pull/19743#discussion_r2099600892
##########
clients/src/main/java/org/apache/kafka/clients/admin/Admin.java:
##########
@@ -1775,12 +1775,36 @@ default FenceProducersResult
fenceProducers(Collection<String> transactionalIds)
FenceProducersResult fenceProducers(Collection<String> transactionalIds,
FenceProducersOptions options);
+ /**
+ * List the configuration resources available in the cluster which matches
config resource type.
+ * If no config resource types are specified, all configuration resources
will be listed.
+ *
+ * @param configResourceTypes The set of configuration resource types to
list.
+ * @param options The options to use when listing the configuration
resources.
+ * @return The ListConfigurationResourcesResult.
+ */
+ ListConfigResourcesResult listConfigResources(Set<ConfigResource.Type>
configResourceTypes, ListConfigResourcesOptions options);
+
+ /**
+ * List all configuration resources available in the cluster with the
default options.
+ * <p>
+ * This is a convenience method for {@link #listConfigResources(Set,
ListConfigResourcesOptions)}
+ * with default options. See the overload for more details.
+ *
+ * @return The ListConfigurationResourcesResult.
+ */
+ default ListConfigResourcesResult listConfigResources() {
+ return listConfigResources(Set.of(), new ListConfigResourcesOptions());
+ }
+
/**
* List the client metrics configuration resources available in the
cluster.
*
* @param options The options to use when listing the client metrics
resources.
* @return The ListClientMetricsResourcesResult.
+ * @deprecated Since 4.1. Use {@link #listConfigResources(Set,
ListConfigResourcesOptions)} instead.
*/
+ @Deprecated(since = "4.1")
Review Comment:
Probably ought to add `, forRemoval = true`.
##########
clients/src/main/java/org/apache/kafka/clients/admin/Admin.java:
##########
@@ -1790,7 +1814,9 @@ FenceProducersResult fenceProducers(Collection<String>
transactionalIds,
* with default options. See the overload for more details.
*
* @return The ListClientMetricsResourcesResult.
+ * @deprecated Since 4.1. Use {@link #listConfigResources()} instead.
*/
+ @Deprecated(since = "4.1")
Review Comment:
`, forRemoval = true`.
##########
clients/src/main/java/org/apache/kafka/common/requests/ListConfigResourcesRequest.java:
##########
@@ -36,6 +38,15 @@ public Builder(ListConfigResourcesRequestData data) {
@Override
public ListConfigResourcesRequest build(short version) {
+ if (version == 0) {
+ // The v0 only supports CLIENT_METRICS resource type.
+ // Empty resource types means all supported resource types. In
v0, it means CLIENT_METRICS, so it's acceptable.
+ Set<Byte> resourceTypes = new HashSet<>(data.resourceTypes());
+ if ((resourceTypes.size() == 1 &&
!resourceTypes.contains(ConfigResource.Type.CLIENT_METRICS.id())) ||
Review Comment:
I think it's only valid if `resourceTypes` is non-empty (because empty means
all types) and if it only contains `CLIENT_METRICS.id()`. wdyt?
##########
core/src/test/scala/integration/kafka/api/PlaintextAdminIntegrationTest.scala:
##########
@@ -3868,6 +3868,92 @@ class PlaintextAdminIntegrationTest extends
BaseAdminIntegrationTest {
} finally client.close(time.Duration.ZERO)
}
+ @Test
+ def testListConfigResources(): Unit = {
+ client = createAdminClient
+
+ // Alter group and client metric config to add group and client metric
config resource
+ val clientMetric = "client-metrics"
+ val group = "group"
+ val clientMetricResource = new
ConfigResource(ConfigResource.Type.CLIENT_METRICS, clientMetric)
+ val groupResource = new ConfigResource(ConfigResource.Type.GROUP, group)
+ val alterResult = client.incrementalAlterConfigs(util.Map.of(
Review Comment:
nit: Can't this just be `Map.of`?
##########
core/src/test/scala/integration/kafka/api/PlaintextAdminIntegrationTest.scala:
##########
@@ -3868,6 +3868,92 @@ class PlaintextAdminIntegrationTest extends
BaseAdminIntegrationTest {
} finally client.close(time.Duration.ZERO)
}
+ @Test
+ def testListConfigResources(): Unit = {
+ client = createAdminClient
+
+ // Alter group and client metric config to add group and client metric
config resource
+ val clientMetric = "client-metrics"
+ val group = "group"
+ val clientMetricResource = new
ConfigResource(ConfigResource.Type.CLIENT_METRICS, clientMetric)
+ val groupResource = new ConfigResource(ConfigResource.Type.GROUP, group)
+ val alterResult = client.incrementalAlterConfigs(util.Map.of(
+ clientMetricResource,
+ util.Set.of(new AlterConfigOp(new ConfigEntry("interval.ms", "111"),
AlterConfigOp.OpType.SET)),
Review Comment:
And `Set.of`.
##########
core/src/test/scala/integration/kafka/api/PlaintextAdminIntegrationTest.scala:
##########
@@ -3868,6 +3868,92 @@ class PlaintextAdminIntegrationTest extends
BaseAdminIntegrationTest {
} finally client.close(time.Duration.ZERO)
}
+ @Test
+ def testListConfigResources(): Unit = {
+ client = createAdminClient
+
+ // Alter group and client metric config to add group and client metric
config resource
+ val clientMetric = "client-metrics"
+ val group = "group"
+ val clientMetricResource = new
ConfigResource(ConfigResource.Type.CLIENT_METRICS, clientMetric)
+ val groupResource = new ConfigResource(ConfigResource.Type.GROUP, group)
+ val alterResult = client.incrementalAlterConfigs(util.Map.of(
+ clientMetricResource,
+ util.Set.of(new AlterConfigOp(new ConfigEntry("interval.ms", "111"),
AlterConfigOp.OpType.SET)),
Review Comment:
In fact, there's a lot of this in this test.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]