Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Status

Current state: Under discussion

...

Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).

Motivation

With work underway to migrate configuration metadata away from ZooKeeper (KIP-500), components and tools relying on direct ZK access must be updated to issue administrative calls through AK's broker via KafkaAdminClient. ConfigCommand, a tool used for describing and altering configs for various entities (topics, users, clients, brokers, and broker-loggers), is one such tool requiring update. Partial AK support has been implemented, however additional functionality is necessary to maintain ZK-parity. This KIP proposes to relax the --zookeeper restriction for all afflicted commands+flags.

In addition, the ConfigCommand tool would benefit from quality-of-life change to shorten entity specification on the command line.

Proposed Changes

There are 3 major functions of the config command:

...

  • Support all broker descriptions for AK:
    • bin/kafka-configs.sh --bootstrap-server x --describe --entity-type brokers <note --entity-name omitted>
  • Support all broker-logger descriptions for AK:
    • bin/kafka-configs.sh --bootstrap-server x --describe --entity-type broker-loggers <note --entity-name omitted>
  • Support topic config commands for AK:
    • Specific topic description:
      • bin/kafka-configs.sh --bootstrap-server x --describe --entity-type topics --entity-name some-topic
    • All topic descriptions:
      • bin/kafka-configs.sh --bootstrap-server x --describe --entity-type topics <note --entity-name omitted>
    • Altering topic config:
      • bin/kafka-configs.sh --bootstrap-server x --alter --entity-type topics --entity-name topic <--add-config/--delete-config ...>
  • Support user/client config commands for AK:
    • Specific user/client descriptions:
      • bin/kafka-configs.sh --bootstrap-server x --describe --entity-type users --entity-name some-user
      • bin/kafka-configs.sh --bootstrap-server x --describe --entity-type users --entity-default
      • bin/kafka-configs.sh --bootstrap-server x --describe --entity-type users --entity-name some-user --entity-type clients --entity-name some-client
      • bin/kafka-configs.sh --bootstrap-server x --describe --entity-type users --entity-name some-user --entity-type clients --entity-default
      • bin/kafka-configs.sh --bootstrap-server x --describe --entity-type users --entity-name default --entity-type clients --entity-name some-client
      • bin/kafka-configs.sh --bootstrap-server x --describe --entity-type users --entity-name default --entity-type clients --entity-default
      • bin/kafka-configs.sh --bootstrap-server x --describe --entity-type clients --entity-name some-client
      • bin/kafka-configs.sh --bootstrap-server x --describe --entity-type clients --entity-default
    • All user/client descriptions:
      • bin/kafka-configs.sh --bootstrap-server x --describe --entity-type users <note --entity-name omitted>
      • bin/kafka-configs.sh --bootstrap-server x --describe --entity-type clients <note --entity-name omitted>
    • Altering user/client config:
      • bin/kafka-configs.sh --bootstrap-server x --alter <same enumerations as user/client descriptions above>
  • Add abbreviation helper flags:
    • --entity-type topics --entity-name some-topic => --topic some-topic
    • --entity-type users --entity-name some-user => --user some-user
    • --entity-type users --entity-default => --user-default
    • --entity-type clients --entity-name some-client => --client some-client
    • --entity-type clients --entity-default => --client-default
    • --entity-type brokers --entity-name 10 => --broker 10
    • --entity-type brokers --entity-default => --broker-default
    • --entity-type broker-loggers --entity-name 10 => --broker-logger 10

Compatibility, Deprecation, and Migration Plan

There is no impact to current usage, the semantics of all existing combinations of flags remain unchanged.

Rejected Alternatives

None.