Versions Compared

Key

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

...

Expand
titleAdminClient API
public class AdminClient {
    
    /**
     * A client is instantiated by providing a set of key-value pairs as configuration. Most
     * of the settings will be related to NetworkClient
     *
     * @param properties settings related to Network client and at least one broker from KafkaCluster to connect to
     */
    public AdminClient(Properties properties) 
    
    /**
     * Initiates topics creation.  
     * This is an asynchronous call, it returns immediately once the server has accepted request and stored respective data in zookeeper.
     * To simulate a simple blocking call Future.get can be called. This will ensure that metadata about newly created topics was propagated
     * to all brokers
     *
     * @param createTopicRequestBody holder (built by means of respective Builder) of all required arguments to create topics
     * @return java.util.concurrent.Future which holds topics creation result - a map topic-name - error code
     * 
     * @throws ApiException in case of global error, which means topic creation was not even started
     */
    public Future<Map<String, Errors>> createTopics(CreateTopicRequestBody createTopicRequestBody) throws ApiException;
    
    /**
     * Initiates topics alteration.  
     * This is an asynchronous call, it returns immediately once the server has accepted request and stored/changed respective data in zookeeper.
     * To simulate a simple blocking call Future.get can be called. This will ensure that updated metadata about altered topics was propagated
     * to all brokers
     *
     * @param alterTopicRequestBody holder (built by means of respective Builder) of all required arguments to alter topics
     * @return java.util.concurrent.Future which holds topics alteration result - a map topic-name - error code 
     * 
     * @throws ApiException in case of global error, which means topic creation was not even started
     */
    public Future<Map<String, Errors>> alterTopics(AlterTopicRequestBody alterTopicRequestBody) throws ApiException;
    
    /**
     * Initiates topic deletion.
     * This is an asynchronous call, it returns immediately once server has accepted request and marked requested topics for deletion in zookeeper.
     * To simulate a simple blocking call Future.get can be called. This will ensure that metadata with updated topic list was propagated to 
     * all brokers
     *
     * @param topics topic names to be deleted
     * @return java.util.concurrent.Future which holds topics deletion result - a map topic-name - error code
     *
     * @throws ApiException in case of global error, which means topic deletion was not even started
     */
    public Future<Map<String, Errors>> deleteTopics(List<String> topics) throws ApiException;
    
    /**
     * Lists all available topics in Kafka cluster.
     * Topic is considered available if all brokers in cluster have received and cached metadata about it
     *
     * @return list of topic names
     *
     * @throws ApiException
     */
    public List<String> listTopics() throws ApiException;
 
    /**
     * Checks whether topic with the given name exists
     *
     * @param topic name to be checked
     * @return true if all brokers in cluster have received and cached metadata about it
     * 
     * @throws ApiException
     */
    public boolean topicExists(String topic) throws ApiException;
    
    /**
     * TODO: not finalized yet
     * Request replication information about Kafka topics
     * 
     * @return a mapping between topic name and topic description
     * @throws ApiException in case of global error, which means topic description cannot be fetched for all topics
     */
    public Map<String, DescribeTopicOutput> describeTopics(List<String> topicNames) throws ApiException;
    
    /**
     * Initiates long-running reassign partitions procedure.
     * This is an asynchronous call, it returns immediately once server has accepted request, and created admin path in zookeeper.
     * To simulate a simple blocking call Future.get can be called. This will ensure all that all partitions reassignments have completed.
     * Note: currently there are only two possible states for reassigned partition: Completed, In Progress.
     *
     * @param reassignment schema among which replicas partitions will be reassigned  
     * 
     * @return java.util.concurrent.Future which is completed once all partitions have been reassigned
     * 
     * @throws ApiException in case partition reassignment wasn't initiated on server
     */
    public Future<Void> reassignPartitions(Map<String, Map<Integer, List<Integer>>> reassignment) throws ApiException;

/**
* Checks the interim status of the partitions reassignment.
* Reassignment for concrete partition is considered completed if partition has been removed from
* admin zookeeper path and all cluster brokers have received and cached relevant AR metadata for the
* given partition
*
* @param reassignment schema same as was used for reassign partitions request
*
* @return two maps - completed and partitions for which reassignment is still in progress
* @throws ApiException in case reassignment verification wasn't initiated on server
*/
public ReassignmentResult verifyReassignPartitions(Map<String, Map<Integer, List<Integer>>> reassignment) throws ApiException;

/**
* Initiates long-running preferred replica leader election procedure
* This is an asynchronous call, it returns immediately once server has accepted request, and created admin path in zookeeper.
* To simulate a simple blocking call Future.get can be called. This will ensure that all partitions leader has moved to
* preferred replica.
* Note: currently there are only two possible states for preferred replica leader election: Completed, In Progress.
*
* @param partitions that need to moved leader to preferred replica
*
* @return java.util.concurrent.Future which is completed once all partitions have moved leader to preferred replica
*
* @throws ApiException in case preferred replica leader election wasn't initiated on server
*/
public Future<Void> preferredReplicaLeaderElection(Map<String, List<Integer> partitions) throws ApiException;

/**
* Checks the interim status of the preferred replica leader election.
* Preferred replica leader election for concrete partition is considered completed if all cluster brokers have received and cached
* relevant metadata for the given partition
*
* @param partitions same partitions as for preferred replica leader election request
*
* @return two maps - completed and partitions for which procedure is still in progress
* @throws ApiException in case preferred replica election verification wasn't initiated on server
*/
public PreferredReplicaLeaderElectionResult verifyPreferredReplicaLeaderElection(Map<String, List<Integer> partitions)
throws ApiException;

}

4. Interactive Shell / CLI tool

...