public static DescribeConfigsResponse parse(ByteBuffer buffer, short version) { return new DescribeConfigsResponse(ApiKeys.DESCRIBE_CONFIGS.parseResponse(version, buffer)); }
@Override public Map<Errors, Integer> errorCounts() { Map<Errors, Integer> errorCounts = new HashMap<>(); for (Config response : configs.values()) updateErrorCounts(errorCounts, response.error.error()); return errorCounts; }
private void verifyDescribeConfigsResponse(DescribeConfigsResponse expected, DescribeConfigsResponse actual, int version) throws Exception { for (ConfigResource resource : expected.configs().keySet()) { Collection<DescribeConfigsResponse.ConfigEntry> deserializedEntries1 = actual.config(resource).entries(); Iterator<DescribeConfigsResponse.ConfigEntry> expectedEntries = expected.config(resource).entries().iterator(); for (DescribeConfigsResponse.ConfigEntry entry : deserializedEntries1) { DescribeConfigsResponse.ConfigEntry expectedEntry = expectedEntries.next(); assertEquals(expectedEntry.name(), entry.name()); assertEquals(expectedEntry.value(), entry.value()); assertEquals(expectedEntry.isReadOnly(), entry.isReadOnly()); assertEquals(expectedEntry.isSensitive(), entry.isSensitive()); if (version == 1 || (expectedEntry.source() != DescribeConfigsResponse.ConfigSource.DYNAMIC_BROKER_CONFIG && expectedEntry.source() != DescribeConfigsResponse.ConfigSource.DYNAMIC_DEFAULT_BROKER_CONFIG)) assertEquals(expectedEntry.source(), entry.source()); else assertEquals(DescribeConfigsResponse.ConfigSource.STATIC_BROKER_CONFIG, entry.source()); } } }
@Override void handleResponse(AbstractResponse abstractResponse) { DescribeConfigsResponse response = (DescribeConfigsResponse) abstractResponse; for (Map.Entry<ConfigResource, KafkaFutureImpl<Config>> entry : unifiedRequestFutures.entrySet()) { ConfigResource configResource = entry.getKey(); KafkaFutureImpl<Config> future = entry.getValue(); DescribeConfigsResponse.Config config = response.config(configResource); if (config == null) { future.completeExceptionally(new UnknownServerException( "Malformed broker response: missing config for " + configResource)); continue; } if (config.error().isFailure()) { future.completeExceptionally(config.error().exception()); continue; } List<ConfigEntry> configEntries = new ArrayList<>(); for (DescribeConfigsResponse.ConfigEntry configEntry : config.entries()) { configEntries.add(new ConfigEntry(configEntry.name(), configEntry.value(), configSource(configEntry.source()), configEntry.isSensitive(), configEntry.isReadOnly(), configSynonyms(configEntry))); } future.complete(new Config(configEntries)); } }
@Override void handleResponse(AbstractResponse abstractResponse) { DescribeConfigsResponse response = (DescribeConfigsResponse) abstractResponse; DescribeConfigsResponse.Config config = response.configs().get(resource); if (config == null) { brokerFuture.completeExceptionally(new UnknownServerException( "Malformed broker response: missing config for " + resource)); return; } if (config.error().isFailure()) brokerFuture.completeExceptionally(config.error().exception()); else { List<ConfigEntry> configEntries = new ArrayList<>(); for (DescribeConfigsResponse.ConfigEntry configEntry : config.entries()) { configEntries.add(new ConfigEntry(configEntry.name(), configEntry.value(), configSource(configEntry.source()), configEntry.isSensitive(), configEntry.isReadOnly(), configSynonyms(configEntry))); } brokerFuture.complete(new Config(configEntries)); } }
private void checkDescribeConfigsResponseVersions() throws Exception { DescribeConfigsResponse response = createDescribeConfigsResponse(); DescribeConfigsResponse deserialized0 = (DescribeConfigsResponse) deserialize(response, response.toStruct((short) 0), (short) 0); verifyDescribeConfigsResponse(response, deserialized0, 0); DescribeConfigsResponse deserialized1 = (DescribeConfigsResponse) deserialize(response, response.toStruct((short) 1), (short) 1); verifyDescribeConfigsResponse(response, deserialized1, 1); }
@Override public DescribeConfigsResponse getErrorResponse(int throttleTimeMs, Throwable e) { short version = version(); switch (version) { case 0: case 1: case 2: ApiError error = ApiError.fromThrowable(e); Map<ConfigResource, DescribeConfigsResponse.Config> errors = new HashMap<>(resources().size()); DescribeConfigsResponse.Config config = new DescribeConfigsResponse.Config(error, Collections.emptyList()); for (ConfigResource resource : resources()) errors.put(resource, config); return new DescribeConfigsResponse(throttleTimeMs, errors); default: throw new IllegalArgumentException(String.format("Version %d is not valid. Valid versions for %s are 0 to %d", version, this.getClass().getSimpleName(), ApiKeys.DESCRIBE_CONFIGS.latestVersion())); } }
private DescribeConfigsResponse createDescribeConfigsResponse() { Map<ConfigResource, DescribeConfigsResponse.Config> configs = new HashMap<>(); List<DescribeConfigsResponse.ConfigSynonym> synonyms = Collections.emptyList(); List<DescribeConfigsResponse.ConfigEntry> configEntries = asList( new DescribeConfigsResponse.ConfigEntry("config_name", "config_value", DescribeConfigsResponse.ConfigSource.DYNAMIC_BROKER_CONFIG, true, false, synonyms), new DescribeConfigsResponse.ConfigEntry("another_name", "another value", DescribeConfigsResponse.ConfigSource.DEFAULT_CONFIG, false, true, synonyms) ); configs.put(new ConfigResource(ConfigResource.Type.BROKER, "0"), new DescribeConfigsResponse.Config( ApiError.NONE, configEntries)); configs.put(new ConfigResource(ConfigResource.Type.TOPIC, "topic"), new DescribeConfigsResponse.Config( ApiError.NONE, Collections.<DescribeConfigsResponse.ConfigEntry>emptyList())); return new DescribeConfigsResponse(200, configs); }
@Test public void testDescribeConfigs() throws Exception { try (AdminClientUnitTestEnv env = mockClientEnv()) { env.kafkaClient().setNodeApiVersions(NodeApiVersions.create()); env.kafkaClient().prepareResponse(new DescribeConfigsResponse(0, Collections.singletonMap(new ConfigResource(ConfigResource.Type.BROKER, "0"), new DescribeConfigsResponse.Config(ApiError.NONE, Collections.emptySet())))); DescribeConfigsResult result2 = env.adminClient().describeConfigs(Collections.singleton( new ConfigResource(ConfigResource.Type.BROKER, "0"))); result2.all().get(); } }
env.kafkaClient().prepareResponse(new DescribeConfigsResponse(0, Collections.singletonMap(new ConfigResource(ConfigResource.Type.TOPIC, "foo"), new DescribeConfigsResponse.Config(ApiError.NONE,
return new DeleteAclsResponse(struct); case DESCRIBE_CONFIGS: return new DescribeConfigsResponse(struct); case ALTER_CONFIGS: return new AlterConfigsResponse(struct);