103 lines
2.9 KiB
Python
103 lines
2.9 KiB
Python
from __future__ import absolute_import
|
|
|
|
from .api import Request, Response
|
|
from .types import Array, Boolean, Int16, Int32, Schema, String
|
|
|
|
|
|
class MetadataResponse_v0(Response):
|
|
API_KEY = 3
|
|
API_VERSION = 0
|
|
SCHEMA = Schema(
|
|
('brokers', Array(
|
|
('node_id', Int32),
|
|
('host', String('utf-8')),
|
|
('port', Int32))),
|
|
('topics', Array(
|
|
('error_code', Int16),
|
|
('topic', String('utf-8')),
|
|
('partitions', Array(
|
|
('error_code', Int16),
|
|
('partition', Int32),
|
|
('leader', Int32),
|
|
('replicas', Array(Int32)),
|
|
('isr', Array(Int32))))))
|
|
)
|
|
|
|
|
|
class MetadataResponse_v1(Response):
|
|
API_KEY = 3
|
|
API_VERSION = 1
|
|
SCHEMA = Schema(
|
|
('brokers', Array(
|
|
('node_id', Int32),
|
|
('host', String('utf-8')),
|
|
('port', Int32),
|
|
('rack', String('utf-8')))),
|
|
('controller_id', Int32),
|
|
('topics', Array(
|
|
('error_code', Int16),
|
|
('topic', String('utf-8')),
|
|
('is_internal', Boolean),
|
|
('partitions', Array(
|
|
('error_code', Int16),
|
|
('partition', Int32),
|
|
('leader', Int32),
|
|
('replicas', Array(Int32)),
|
|
('isr', Array(Int32))))))
|
|
)
|
|
|
|
|
|
class MetadataResponse_v2(Response):
|
|
API_KEY = 3
|
|
API_VERSION = 2
|
|
SCHEMA = Schema(
|
|
('brokers', Array(
|
|
('node_id', Int32),
|
|
('host', String('utf-8')),
|
|
('port', Int32),
|
|
('rack', String('utf-8')))),
|
|
('cluster_id', String('utf-8')), # <-- Added cluster_id field in v2
|
|
('controller_id', Int32),
|
|
('topics', Array(
|
|
('error_code', Int16),
|
|
('topic', String('utf-8')),
|
|
('is_internal', Boolean),
|
|
('partitions', Array(
|
|
('error_code', Int16),
|
|
('partition', Int32),
|
|
('leader', Int32),
|
|
('replicas', Array(Int32)),
|
|
('isr', Array(Int32))))))
|
|
)
|
|
|
|
|
|
class MetadataRequest_v0(Request):
|
|
API_KEY = 3
|
|
API_VERSION = 0
|
|
RESPONSE_TYPE = MetadataResponse_v0
|
|
SCHEMA = Schema(
|
|
('topics', Array(String('utf-8')))
|
|
)
|
|
ALL_TOPICS = None # Empty Array (len 0) for topics returns all topics
|
|
|
|
|
|
class MetadataRequest_v1(Request):
|
|
API_KEY = 3
|
|
API_VERSION = 1
|
|
RESPONSE_TYPE = MetadataResponse_v1
|
|
SCHEMA = MetadataRequest_v0.SCHEMA
|
|
ALL_TOPICS = -1 # Null Array (len -1) for topics returns all topics
|
|
NO_TOPICS = None # Empty array (len 0) for topics returns no topics
|
|
|
|
|
|
class MetadataRequest_v2(Request):
|
|
API_KEY = 3
|
|
API_VERSION = 2
|
|
RESPONSE_TYPE = MetadataResponse_v2
|
|
SCHEMA = MetadataRequest_v1.SCHEMA
|
|
|
|
|
|
MetadataRequest = [MetadataRequest_v0, MetadataRequest_v1, MetadataRequest_v2]
|
|
MetadataResponse = [
|
|
MetadataResponse_v0, MetadataResponse_v1, MetadataResponse_v2]
|