metadata.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. from __future__ import absolute_import
  2. from .api import Request, Response
  3. from .types import Array, Boolean, Int16, Int32, Schema, String
  4. class MetadataResponse_v0(Response):
  5. API_KEY = 3
  6. API_VERSION = 0
  7. SCHEMA = Schema(
  8. ('brokers', Array(
  9. ('node_id', Int32),
  10. ('host', String('utf-8')),
  11. ('port', Int32))),
  12. ('topics', Array(
  13. ('error_code', Int16),
  14. ('topic', String('utf-8')),
  15. ('partitions', Array(
  16. ('error_code', Int16),
  17. ('partition', Int32),
  18. ('leader', Int32),
  19. ('replicas', Array(Int32)),
  20. ('isr', Array(Int32))))))
  21. )
  22. class MetadataResponse_v1(Response):
  23. API_KEY = 3
  24. API_VERSION = 1
  25. SCHEMA = Schema(
  26. ('brokers', Array(
  27. ('node_id', Int32),
  28. ('host', String('utf-8')),
  29. ('port', Int32),
  30. ('rack', String('utf-8')))),
  31. ('controller_id', Int32),
  32. ('topics', Array(
  33. ('error_code', Int16),
  34. ('topic', String('utf-8')),
  35. ('is_internal', Boolean),
  36. ('partitions', Array(
  37. ('error_code', Int16),
  38. ('partition', Int32),
  39. ('leader', Int32),
  40. ('replicas', Array(Int32)),
  41. ('isr', Array(Int32))))))
  42. )
  43. class MetadataResponse_v2(Response):
  44. API_KEY = 3
  45. API_VERSION = 2
  46. SCHEMA = Schema(
  47. ('brokers', Array(
  48. ('node_id', Int32),
  49. ('host', String('utf-8')),
  50. ('port', Int32),
  51. ('rack', String('utf-8')))),
  52. ('cluster_id', String('utf-8')), # <-- Added cluster_id field in v2
  53. ('controller_id', Int32),
  54. ('topics', Array(
  55. ('error_code', Int16),
  56. ('topic', String('utf-8')),
  57. ('is_internal', Boolean),
  58. ('partitions', Array(
  59. ('error_code', Int16),
  60. ('partition', Int32),
  61. ('leader', Int32),
  62. ('replicas', Array(Int32)),
  63. ('isr', Array(Int32))))))
  64. )
  65. class MetadataResponse_v3(Response):
  66. API_KEY = 3
  67. API_VERSION = 3
  68. SCHEMA = Schema(
  69. ('throttle_time_ms', Int32),
  70. ('brokers', Array(
  71. ('node_id', Int32),
  72. ('host', String('utf-8')),
  73. ('port', Int32),
  74. ('rack', String('utf-8')))),
  75. ('cluster_id', String('utf-8')),
  76. ('controller_id', Int32),
  77. ('topics', Array(
  78. ('error_code', Int16),
  79. ('topic', String('utf-8')),
  80. ('is_internal', Boolean),
  81. ('partitions', Array(
  82. ('error_code', Int16),
  83. ('partition', Int32),
  84. ('leader', Int32),
  85. ('replicas', Array(Int32)),
  86. ('isr', Array(Int32))))))
  87. )
  88. class MetadataResponse_v4(Response):
  89. API_KEY = 3
  90. API_VERSION = 4
  91. SCHEMA = MetadataResponse_v3.SCHEMA
  92. class MetadataRequest_v0(Request):
  93. API_KEY = 3
  94. API_VERSION = 0
  95. RESPONSE_TYPE = MetadataResponse_v0
  96. SCHEMA = Schema(
  97. ('topics', Array(String('utf-8')))
  98. )
  99. ALL_TOPICS = None # Empty Array (len 0) for topics returns all topics
  100. class MetadataRequest_v1(Request):
  101. API_KEY = 3
  102. API_VERSION = 1
  103. RESPONSE_TYPE = MetadataResponse_v1
  104. SCHEMA = MetadataRequest_v0.SCHEMA
  105. ALL_TOPICS = -1 # Null Array (len -1) for topics returns all topics
  106. NO_TOPICS = None # Empty array (len 0) for topics returns no topics
  107. class MetadataRequest_v2(Request):
  108. API_KEY = 3
  109. API_VERSION = 2
  110. RESPONSE_TYPE = MetadataResponse_v2
  111. SCHEMA = MetadataRequest_v1.SCHEMA
  112. ALL_TOPICS = -1 # Null Array (len -1) for topics returns all topics
  113. NO_TOPICS = None # Empty array (len 0) for topics returns no topics
  114. class MetadataRequest_v3(Request):
  115. API_KEY = 3
  116. API_VERSION = 3
  117. RESPONSE_TYPE = MetadataResponse_v3
  118. SCHEMA = MetadataRequest_v1.SCHEMA
  119. ALL_TOPICS = -1 # Null Array (len -1) for topics returns all topics
  120. NO_TOPICS = None # Empty array (len 0) for topics returns no topics
  121. class MetadataRequest_v4(Request):
  122. API_KEY = 3
  123. API_VERSION = 4
  124. RESPONSE_TYPE = MetadataResponse_v4
  125. SCHEMA = Schema(
  126. ('topics', Array(String('utf-8'))),
  127. ('allow_auto_topic_creation', Boolean)
  128. )
  129. ALL_TOPICS = -1 # Null Array (len -1) for topics returns all topics
  130. NO_TOPICS = None # Empty array (len 0) for topics returns no topics
  131. MetadataRequest = [
  132. MetadataRequest_v0, MetadataRequest_v1, MetadataRequest_v2,
  133. MetadataRequest_v3, MetadataRequest_v4
  134. ]
  135. MetadataResponse = [
  136. MetadataResponse_v0, MetadataResponse_v1, MetadataResponse_v2,
  137. MetadataResponse_v3, MetadataResponse_v4
  138. ]