Source code for confluent_kafka.admin._metadata
# Copyright 2022 Confluent Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
[docs]class ClusterMetadata (object):
"""
Provides information about the Kafka cluster, brokers, and topics.
Returned by list_topics().
This class is typically not user instantiated.
"""
def __init__(self):
self.cluster_id = None
"""Cluster id string, if supported by the broker, else None."""
self.controller_id = -1
"""Current controller broker id, or -1."""
self.brokers = {}
"""Map of brokers indexed by the broker id (int). Value is a BrokerMetadata object."""
self.topics = {}
"""Map of topics indexed by the topic name. Value is a TopicMetadata object."""
self.orig_broker_id = -1
"""The broker this metadata originated from."""
self.orig_broker_name = None
"""The broker name/address this metadata originated from."""
def __repr__(self):
return "ClusterMetadata({})".format(self.cluster_id)
def __str__(self):
return str(self.cluster_id)
[docs]class BrokerMetadata (object):
"""
Provides information about a Kafka broker.
This class is typically not user instantiated.
"""
def __init__(self):
self.id = -1
"""Broker id"""
self.host = None
"""Broker hostname"""
self.port = -1
"""Broker port"""
def __repr__(self):
return "BrokerMetadata({}, {}:{})".format(self.id, self.host, self.port)
def __str__(self):
return "{}:{}/{}".format(self.host, self.port, self.id)
[docs]class TopicMetadata (object):
"""
Provides information about a Kafka topic.
This class is typically not user instantiated.
"""
# The dash in "-topic" and "-error" is needed to circumvent a
# Sphinx issue where it tries to reference the same instance variable
# on other classes which raises a warning/error.
def __init__(self):
self.topic = None
"""Topic name"""
self.partitions = {}
"""Map of partitions indexed by partition id. Value is a PartitionMetadata object."""
self.error = None
"""Topic error, or None. Value is a KafkaError object."""
def __repr__(self):
if self.error is not None:
return "TopicMetadata({}, {} partitions, {})".format(self.topic, len(self.partitions), self.error)
else:
return "TopicMetadata({}, {} partitions)".format(self.topic, len(self.partitions))
def __str__(self):
return self.topic
[docs]class PartitionMetadata (object):
"""
Provides information about a Kafka partition.
This class is typically not user instantiated.
:warning: Depending on cluster state the broker ids referenced in
leader, replicas and ISRs may temporarily not be reported
in ClusterMetadata.brokers. Always check the availability
of a broker id in the brokers dict.
"""
def __init__(self):
self.id = -1
"""Partition id."""
self.leader = -1
"""Current leader broker for this partition, or -1."""
self.replicas = []
"""List of replica broker ids for this partition."""
self.isrs = []
"""List of in-sync-replica broker ids for this partition."""
self.error = None
"""Partition error, or None. Value is a KafkaError object."""
def __repr__(self):
if self.error is not None:
return "PartitionMetadata({}, {})".format(self.id, self.error)
else:
return "PartitionMetadata({})".format(self.id)
def __str__(self):
return "{}".format(self.id)
[docs]class GroupMember(object):
"""Provides information about a group member.
For more information on the metadata format, refer to:
`A Guide To The Kafka Protocol <https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol#AGuideToTheKafkaProtocol-GroupMembershipAPI>`_.
This class is typically not user instantiated.
""" # noqa: E501
def __init__(self,):
self.id = None
"""Member id (generated by broker)."""
self.client_id = None
"""Client id."""
self.client_host = None
"""Client hostname."""
self.metadata = None
"""Member metadata(binary), format depends on protocol type."""
self.assignment = None
"""Member assignment(binary), format depends on protocol type."""
[docs]class GroupMetadata(object):
"""GroupMetadata provides information about a Kafka consumer group
This class is typically not user instantiated.
"""
def __init__(self):
self.broker = None
"""Originating broker metadata."""
self.id = None
"""Group name."""
self.error = None
"""Broker-originated error, or None. Value is a KafkaError object."""
self.state = None
"""Group state."""
self.protocol_type = None
"""Group protocol type."""
self.protocol = None
"""Group protocol."""
self.members = []
"""Group members."""
def __repr__(self):
if self.error is not None:
return "GroupMetadata({}, {})".format(self.id, self.error)
else:
return "GroupMetadata({})".format(self.id)
def __str__(self):
return self.id