Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 26 additions & 4 deletions examples/incremental_alter_configs.c
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,31 @@ static void print_alter_configs_result(
}
}

/**
* @brief Parse a ConfigResourceType string and return the corresponding enum
* value.
*
* @param restype_id The resource type string, e.g., "TOPIC", "BROKER", etc.
* @return The corresponding rd_kafka_ResourceType_t enum value, or
* RD_KAFKA_RESOURCE_UNKNOWN if the string is invalid.
*/
static rd_kafka_ResourceType_t
parse_ConfigResourceType(const char *restype_id) {
size_t i;
static const char *restype_ids[] = {"TOPIC", "BROKER", "GROUP",
"BROKER_LOGGER", "CLIENT_METRICS"};
static const rd_kafka_ResourceType_t restype_values[] = {
RD_KAFKA_RESOURCE_TOPIC, RD_KAFKA_RESOURCE_BROKER,
RD_KAFKA_RESOURCE_GROUP, RD_KAFKA_RESOURCE_BROKER_LOGGER,
RD_KAFKA_RESOURCE_CLIENT_METRICS};

for (i = 0; i < sizeof(restype_ids) / sizeof(restype_ids[0]); i++) {
if (!strcmp(restype_id, restype_ids[i])) {
return restype_values[i];
}
}
return RD_KAFKA_RESOURCE_UNKNOWN;
}

/**
* @brief Call rd_kafka_IncrementalAlterConfigs() with a list of
Expand Down Expand Up @@ -183,10 +208,7 @@ cmd_incremental_alter_configs(rd_kafka_conf_t *conf, int argc, char **argv) {
rd_kafka_ConfigResource_t *config;
rd_kafka_AlterConfigOpType_t op_type;
rd_kafka_ResourceType_t restype =
!strcmp(restype_s, "TOPIC") ? RD_KAFKA_RESOURCE_TOPIC
: !strcmp(restype_s, "BROKER") ? RD_KAFKA_RESOURCE_BROKER
: !strcmp(restype_s, "GROUP") ? RD_KAFKA_RESOURCE_GROUP
: RD_KAFKA_RESOURCE_UNKNOWN;
parse_ConfigResourceType(restype_s);

if (restype == RD_KAFKA_RESOURCE_UNKNOWN) {
usage("Invalid resource type: %s", restype_s);
Expand Down
8 changes: 8 additions & 0 deletions src/rdkafka.h
Original file line number Diff line number Diff line change
Expand Up @@ -7883,7 +7883,15 @@ typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_GROUP = 3, /**< Group */
RD_KAFKA_RESOURCE_BROKER = 4, /**< Broker */
RD_KAFKA_RESOURCE_TRANSACTIONAL_ID = 5, /**< Transactional ID */
RD_KAFKA_RESOURCE_DELEGATION_TOKEN = 6, /**< Delegation Token */
RD_KAFKA_RESOURCE_USER = 7, /**< User */
RD_KAFKA_RESOURCE__CNT, /**< Number of resource types defined */

/* FIXME: Split into two enums in next major version. */
#define RD_KAFKA_RESOURCE_CONFIG_RESOURCE__START RD_KAFKA_RESOURCE_BROKER_LOGGER
RD_KAFKA_RESOURCE_BROKER_LOGGER = 1000008,
RD_KAFKA_RESOURCE_CLIENT_METRICS = 1000016,
RD_KAFKA_RESOURCE_CONFIG_RESOURCE__END,
} rd_kafka_ResourceType_t;

/**
Expand Down
45 changes: 43 additions & 2 deletions src/rdkafka_admin.c
Original file line number Diff line number Diff line change
Expand Up @@ -2911,8 +2911,19 @@ const char *rd_kafka_ResourcePatternType_name(
}

const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype) {
static const char *names[] = {"UNKNOWN", "ANY", "TOPIC",
"GROUP", "BROKER", "TRANSACTIONAL_ID"};
static const char *names[] = {"UNKNOWN",
"ANY",
"TOPIC",
"GROUP",
"BROKER",
"TRANSACTIONAL_ID",
"DELEGATION_TOKEN",
"USER"};

if ((unsigned int)restype >= RD_KAFKA_RESOURCE_CONFIG_RESOURCE__START &&
(unsigned int)restype < RD_KAFKA_RESOURCE_CONFIG_RESOURCE__END)
return rd_kafka_ConfigResourceType_name(
rd_kafka_ResourceType_to_ConfigResourceType(restype));

if ((unsigned int)restype >= (unsigned int)RD_KAFKA_RESOURCE__CNT)
return "UNSUPPORTED";
Expand All @@ -2928,6 +2939,10 @@ rd_kafka_ResourceType_to_ConfigResourceType(rd_kafka_ResourceType_t restype) {
return RD_KAFKA_CONFIG_RESOURCE_TOPIC;
case RD_KAFKA_RESOURCE_BROKER:
return RD_KAFKA_CONFIG_RESOURCE_BROKER;
case RD_KAFKA_RESOURCE_BROKER_LOGGER:
return RD_KAFKA_CONFIG_RESOURCE_BROKER_LOGGER;
case RD_KAFKA_RESOURCE_CLIENT_METRICS:
return RD_KAFKA_CONFIG_RESOURCE_CLIENT_METRICS;
case RD_KAFKA_RESOURCE_GROUP:
return RD_KAFKA_CONFIG_RESOURCE_GROUP;
default:
Expand All @@ -2942,12 +2957,38 @@ rd_kafka_ResourceType_t rd_kafka_ConfigResourceType_to_ResourceType(
return RD_KAFKA_RESOURCE_TOPIC;
case RD_KAFKA_CONFIG_RESOURCE_BROKER:
return RD_KAFKA_RESOURCE_BROKER;
case RD_KAFKA_CONFIG_RESOURCE_BROKER_LOGGER:
return RD_KAFKA_RESOURCE_BROKER_LOGGER;
case RD_KAFKA_CONFIG_RESOURCE_CLIENT_METRICS:
return RD_KAFKA_RESOURCE_CLIENT_METRICS;
case RD_KAFKA_CONFIG_RESOURCE_GROUP:
return RD_KAFKA_RESOURCE_GROUP;
default:
return RD_KAFKA_RESOURCE_UNKNOWN;
}
}
/**
* @brief Get the name of a ConfigResourceType_t.
*/
const char *rd_kafka_ConfigResourceType_name(
rd_kafka_ConfigResourceType_t config_resource_type) {
switch (config_resource_type) {
case RD_KAFKA_CONFIG_RESOURCE_UNKNOWN:
return "UNKNOWN";
case RD_KAFKA_CONFIG_RESOURCE_TOPIC:
return "TOPIC";
case RD_KAFKA_CONFIG_RESOURCE_BROKER:
return "BROKER";
case RD_KAFKA_CONFIG_RESOURCE_BROKER_LOGGER:
return "BROKER_LOGGER";
case RD_KAFKA_CONFIG_RESOURCE_CLIENT_METRICS:
return "CLIENT_METRICS";
case RD_KAFKA_CONFIG_RESOURCE_GROUP:
return "GROUP";
default:
return "UNSUPPORTED";
}
}


rd_kafka_ConfigResource_t *
Expand Down
14 changes: 10 additions & 4 deletions src/rdkafka_admin.h
Original file line number Diff line number Diff line change
Expand Up @@ -287,10 +287,13 @@ struct rd_kafka_ConfigResource_result_s {
* @brief Resource type specific to config apis.
*/
typedef enum rd_kafka_ConfigResourceType_t {
RD_KAFKA_CONFIG_RESOURCE_UNKNOWN = 0,
RD_KAFKA_CONFIG_RESOURCE_TOPIC = 2,
RD_KAFKA_CONFIG_RESOURCE_BROKER = 4,
RD_KAFKA_CONFIG_RESOURCE_GROUP = 32,
RD_KAFKA_CONFIG_RESOURCE_UNKNOWN = 0,
RD_KAFKA_CONFIG_RESOURCE_TOPIC = 2,
RD_KAFKA_CONFIG_RESOURCE_BROKER = 4,
RD_KAFKA_CONFIG_RESOURCE_BROKER_LOGGER = 8,
RD_KAFKA_CONFIG_RESOURCE_CLIENT_METRICS = 16,
RD_KAFKA_CONFIG_RESOURCE_GROUP = 32,
RD_KAFKA_CONFIG_RESOURCE__END,
} rd_kafka_ConfigResourceType_t;

/**
Expand All @@ -315,6 +318,9 @@ rd_kafka_ResourceType_t rd_kafka_ConfigResourceType_to_ResourceType(
rd_kafka_ConfigResourceType_t config_resource_type);


const char *rd_kafka_ConfigResourceType_name(
rd_kafka_ConfigResourceType_t config_resource_type);

/**@}*/


Expand Down
10 changes: 6 additions & 4 deletions tests/0080-admin_ut.c
Original file line number Diff line number Diff line change
Expand Up @@ -1206,8 +1206,9 @@ static void do_test_AclBinding() {
char errstr[512];
rd_kafka_AclBinding_t *new_acl;

rd_bool_t valid_resource_types[] = {
rd_false, rd_false, rd_true, rd_true, rd_true, rd_true, rd_false};
rd_bool_t valid_resource_types[] = {rd_false, rd_false, rd_true,
rd_true, rd_true, rd_true,
rd_true, rd_true, rd_false};
rd_bool_t valid_resource_pattern_types[] = {
rd_false, rd_false, rd_false, rd_true, rd_true, rd_false};
rd_bool_t valid_acl_operation[] = {
Expand Down Expand Up @@ -1338,8 +1339,9 @@ static void do_test_AclBindingFilter() {
char errstr[512];
rd_kafka_AclBindingFilter_t *new_acl_filter;

rd_bool_t valid_resource_types[] = {rd_false, rd_true, rd_true, rd_true,
rd_true, rd_true, rd_false};
rd_bool_t valid_resource_types[] = {rd_false, rd_true, rd_true,
rd_true, rd_true, rd_true,
rd_true, rd_true, rd_false};
rd_bool_t valid_resource_pattern_types[] = {
rd_false, rd_true, rd_true, rd_true, rd_true, rd_false};
rd_bool_t valid_acl_operation[] = {
Expand Down