Chia-Ping Tsai created KAFKA-18775:
--------------------------------------

             Summary: MetadataQuorumCommand 
`add-controller`/`remove-controller` should get directory id and endpoint by 
Admin
                 Key: KAFKA-18775
                 URL: https://issues.apache.org/jira/browse/KAFKA-18775
             Project: Kafka
          Issue Type: Sub-task
            Reporter: Chia-Ping Tsai
            Assignee: Chia-Ping Tsai


Currently, users are required to provide controller.properties to the 
MetadataQuorumCommand. This necessitates the MetadataQuorumCommand to parse the 
config to obtain the metadata local path and endpoint for adding or removing 
voters. This approach has several drawbacks:

1. Limited Accessibility: The node executing the tool must have direct access 
to the metadata path of the node being added or removed. This restricts the 
ability to use node A to manage node B, as node A may not have access to the 
metadata folder on node B.
2. Dependency on Node Configuration: The tool requires access to the 
configuration of the node being managed

However, the essential information for these operations – the "directory UUID" 
and the "endpoints" – can be obtained through the Admin API.

1. The Admin#describeMetadataQuorum method can provide the directory UUID.
2. The Admin#describeConfigs method, utilizing the bootstrap.controller 
address, can be used to retrieve the necessary endpoints.

Based on this observation, I propose a new, simplified approach for 
adding/removing voters using the MetadataQuorumCommand.

```
bin/kafka-metadata-quorum --bootstrap-controller localhost:9092 add-controller 
--controller-id <id>
```
This not only simplifies the command line but also enables us to run it on 
different nodes.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to