commit.py 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. from __future__ import absolute_import
  2. from .api import Request, Response
  3. from .types import Array, Int8, Int16, Int32, Int64, Schema, String
  4. class OffsetCommitResponse_v0(Response):
  5. API_KEY = 8
  6. API_VERSION = 0
  7. SCHEMA = Schema(
  8. ('topics', Array(
  9. ('topic', String('utf-8')),
  10. ('partitions', Array(
  11. ('partition', Int32),
  12. ('error_code', Int16)))))
  13. )
  14. class OffsetCommitResponse_v1(Response):
  15. API_KEY = 8
  16. API_VERSION = 1
  17. SCHEMA = OffsetCommitResponse_v0.SCHEMA
  18. class OffsetCommitResponse_v2(Response):
  19. API_KEY = 8
  20. API_VERSION = 2
  21. SCHEMA = OffsetCommitResponse_v1.SCHEMA
  22. class OffsetCommitResponse_v3(Response):
  23. API_KEY = 8
  24. API_VERSION = 3
  25. SCHEMA = Schema(
  26. ('throttle_time_ms', Int32),
  27. ('topics', Array(
  28. ('topic', String('utf-8')),
  29. ('partitions', Array(
  30. ('partition', Int32),
  31. ('error_code', Int16)))))
  32. )
  33. class OffsetCommitRequest_v0(Request):
  34. API_KEY = 8
  35. API_VERSION = 0 # Zookeeper-backed storage
  36. RESPONSE_TYPE = OffsetCommitResponse_v0
  37. SCHEMA = Schema(
  38. ('consumer_group', String('utf-8')),
  39. ('topics', Array(
  40. ('topic', String('utf-8')),
  41. ('partitions', Array(
  42. ('partition', Int32),
  43. ('offset', Int64),
  44. ('metadata', String('utf-8'))))))
  45. )
  46. class OffsetCommitRequest_v1(Request):
  47. API_KEY = 8
  48. API_VERSION = 1 # Kafka-backed storage
  49. RESPONSE_TYPE = OffsetCommitResponse_v1
  50. SCHEMA = Schema(
  51. ('consumer_group', String('utf-8')),
  52. ('consumer_group_generation_id', Int32),
  53. ('consumer_id', String('utf-8')),
  54. ('topics', Array(
  55. ('topic', String('utf-8')),
  56. ('partitions', Array(
  57. ('partition', Int32),
  58. ('offset', Int64),
  59. ('timestamp', Int64),
  60. ('metadata', String('utf-8'))))))
  61. )
  62. class OffsetCommitRequest_v2(Request):
  63. API_KEY = 8
  64. API_VERSION = 2 # added retention_time, dropped timestamp
  65. RESPONSE_TYPE = OffsetCommitResponse_v2
  66. SCHEMA = Schema(
  67. ('consumer_group', String('utf-8')),
  68. ('consumer_group_generation_id', Int32),
  69. ('consumer_id', String('utf-8')),
  70. ('retention_time', Int64),
  71. ('topics', Array(
  72. ('topic', String('utf-8')),
  73. ('partitions', Array(
  74. ('partition', Int32),
  75. ('offset', Int64),
  76. ('metadata', String('utf-8'))))))
  77. )
  78. DEFAULT_GENERATION_ID = -1
  79. DEFAULT_RETENTION_TIME = -1
  80. class OffsetCommitRequest_v3(Request):
  81. API_KEY = 8
  82. API_VERSION = 3
  83. RESPONSE_TYPE = OffsetCommitResponse_v3
  84. SCHEMA = OffsetCommitRequest_v2.SCHEMA
  85. OffsetCommitRequest = [
  86. OffsetCommitRequest_v0, OffsetCommitRequest_v1,
  87. OffsetCommitRequest_v2, OffsetCommitRequest_v3
  88. ]
  89. OffsetCommitResponse = [
  90. OffsetCommitResponse_v0, OffsetCommitResponse_v1,
  91. OffsetCommitResponse_v2, OffsetCommitResponse_v3
  92. ]
  93. class OffsetFetchResponse_v0(Response):
  94. API_KEY = 9
  95. API_VERSION = 0
  96. SCHEMA = Schema(
  97. ('topics', Array(
  98. ('topic', String('utf-8')),
  99. ('partitions', Array(
  100. ('partition', Int32),
  101. ('offset', Int64),
  102. ('metadata', String('utf-8')),
  103. ('error_code', Int16)))))
  104. )
  105. class OffsetFetchResponse_v1(Response):
  106. API_KEY = 9
  107. API_VERSION = 1
  108. SCHEMA = OffsetFetchResponse_v0.SCHEMA
  109. class OffsetFetchResponse_v2(Response):
  110. # Added in KIP-88
  111. API_KEY = 9
  112. API_VERSION = 2
  113. SCHEMA = Schema(
  114. ('topics', Array(
  115. ('topic', String('utf-8')),
  116. ('partitions', Array(
  117. ('partition', Int32),
  118. ('offset', Int64),
  119. ('metadata', String('utf-8')),
  120. ('error_code', Int16))))),
  121. ('error_code', Int16)
  122. )
  123. class OffsetFetchResponse_v3(Response):
  124. API_KEY = 9
  125. API_VERSION = 3
  126. SCHEMA = Schema(
  127. ('throttle_time_ms', Int32),
  128. ('topics', Array(
  129. ('topic', String('utf-8')),
  130. ('partitions', Array(
  131. ('partition', Int32),
  132. ('offset', Int64),
  133. ('metadata', String('utf-8')),
  134. ('error_code', Int16))))),
  135. ('error_code', Int16)
  136. )
  137. class OffsetFetchRequest_v0(Request):
  138. API_KEY = 9
  139. API_VERSION = 0 # zookeeper-backed storage
  140. RESPONSE_TYPE = OffsetFetchResponse_v0
  141. SCHEMA = Schema(
  142. ('consumer_group', String('utf-8')),
  143. ('topics', Array(
  144. ('topic', String('utf-8')),
  145. ('partitions', Array(Int32))))
  146. )
  147. class OffsetFetchRequest_v1(Request):
  148. API_KEY = 9
  149. API_VERSION = 1 # kafka-backed storage
  150. RESPONSE_TYPE = OffsetFetchResponse_v1
  151. SCHEMA = OffsetFetchRequest_v0.SCHEMA
  152. class OffsetFetchRequest_v2(Request):
  153. # KIP-88: Allows passing null topics to return offsets for all partitions
  154. # that the consumer group has a stored offset for, even if no consumer in
  155. # the group is currently consuming that partition.
  156. API_KEY = 9
  157. API_VERSION = 2
  158. RESPONSE_TYPE = OffsetFetchResponse_v2
  159. SCHEMA = OffsetFetchRequest_v1.SCHEMA
  160. class OffsetFetchRequest_v3(Request):
  161. API_KEY = 9
  162. API_VERSION = 3
  163. RESPONSE_TYPE = OffsetFetchResponse_v3
  164. SCHEMA = OffsetFetchRequest_v2.SCHEMA
  165. OffsetFetchRequest = [
  166. OffsetFetchRequest_v0, OffsetFetchRequest_v1,
  167. OffsetFetchRequest_v2, OffsetFetchRequest_v3,
  168. ]
  169. OffsetFetchResponse = [
  170. OffsetFetchResponse_v0, OffsetFetchResponse_v1,
  171. OffsetFetchResponse_v2, OffsetFetchResponse_v3,
  172. ]
  173. class GroupCoordinatorResponse_v0(Response):
  174. API_KEY = 10
  175. API_VERSION = 0
  176. SCHEMA = Schema(
  177. ('error_code', Int16),
  178. ('coordinator_id', Int32),
  179. ('host', String('utf-8')),
  180. ('port', Int32)
  181. )
  182. class GroupCoordinatorResponse_v1(Response):
  183. API_KEY = 10
  184. API_VERSION = 1
  185. SCHEMA = Schema(
  186. ('error_code', Int16),
  187. ('error_message', String('utf-8')),
  188. ('coordinator_id', Int32),
  189. ('host', String('utf-8')),
  190. ('port', Int32)
  191. )
  192. class GroupCoordinatorRequest_v0(Request):
  193. API_KEY = 10
  194. API_VERSION = 0
  195. RESPONSE_TYPE = GroupCoordinatorResponse_v0
  196. SCHEMA = Schema(
  197. ('consumer_group', String('utf-8'))
  198. )
  199. class GroupCoordinatorRequest_v1(Request):
  200. API_KEY = 10
  201. API_VERSION = 1
  202. RESPONSE_TYPE = GroupCoordinatorResponse_v1
  203. SCHEMA = Schema(
  204. ('coordinator_key', String('utf-8')),
  205. ('coordinator_type', Int8)
  206. )
  207. GroupCoordinatorRequest = [GroupCoordinatorRequest_v0, GroupCoordinatorRequest_v1]
  208. GroupCoordinatorResponse = [GroupCoordinatorResponse_v0, GroupCoordinatorResponse_v1]