karafka-web 0.10.3 → 0.11.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (481) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +64 -176
  4. data/Gemfile +4 -0
  5. data/Gemfile.lock +88 -44
  6. data/LICENSE +6 -2
  7. data/bin/verify_kafka_warnings +35 -0
  8. data/bin/verify_topics_naming +35 -0
  9. data/config/locales/pro_errors.yml +1 -0
  10. data/docker-compose.yml +1 -1
  11. data/gulpfile.js +0 -2
  12. data/karafka-web.gemspec +3 -5
  13. data/lib/karafka/web/config.rb +86 -10
  14. data/lib/karafka/web/contracts/config.rb +45 -5
  15. data/lib/karafka/web/errors.rb +10 -0
  16. data/lib/karafka/web/management/actions/create_initial_states.rb +6 -6
  17. data/lib/karafka/web/management/actions/create_topics.rb +30 -64
  18. data/lib/karafka/web/management/actions/delete_topics.rb +5 -5
  19. data/lib/karafka/web/management/actions/enable.rb +5 -5
  20. data/lib/karafka/web/pro/commanding/commands/base.rb +37 -13
  21. data/lib/karafka/web/pro/commanding/commands/consumers/quiet.rb +33 -0
  22. data/lib/karafka/web/pro/commanding/commands/consumers/stop.rb +32 -0
  23. data/lib/karafka/web/pro/commanding/commands/consumers/trace.rb +37 -0
  24. data/lib/karafka/web/pro/commanding/commands/partitions/pause.rb +30 -0
  25. data/lib/karafka/web/pro/commanding/commands/partitions/resume.rb +30 -0
  26. data/lib/karafka/web/pro/commanding/commands/partitions/seek.rb +30 -0
  27. data/lib/karafka/web/pro/commanding/config.rb +6 -10
  28. data/lib/karafka/web/pro/commanding/contracts/config.rb +2 -10
  29. data/lib/karafka/web/pro/commanding/dispatcher.rb +45 -24
  30. data/lib/karafka/web/pro/commanding/handlers/partitions/commands/base.rb +67 -0
  31. data/lib/karafka/web/pro/commanding/handlers/partitions/commands/pause.rb +44 -0
  32. data/lib/karafka/web/pro/commanding/handlers/partitions/commands/resume.rb +29 -0
  33. data/lib/karafka/web/pro/commanding/handlers/partitions/commands/seek.rb +86 -0
  34. data/lib/karafka/web/pro/commanding/handlers/partitions/executor.rb +56 -0
  35. data/lib/karafka/web/pro/commanding/handlers/partitions/listener.rb +55 -0
  36. data/lib/karafka/web/pro/commanding/handlers/partitions/tracker.rb +62 -0
  37. data/lib/karafka/web/pro/commanding/listener.rb +4 -12
  38. data/lib/karafka/web/pro/commanding/manager.rb +36 -24
  39. data/lib/karafka/web/pro/commanding/matcher.rb +7 -17
  40. data/lib/karafka/web/pro/commanding/request.rb +39 -0
  41. data/lib/karafka/web/pro/commanding.rb +2 -10
  42. data/lib/karafka/web/pro/loader.rb +32 -10
  43. data/lib/karafka/web/pro/ui/app.rb +31 -390
  44. data/lib/karafka/web/pro/ui/controllers/base_controller.rb +8 -10
  45. data/lib/karafka/web/pro/ui/controllers/cluster_controller.rb +2 -10
  46. data/lib/karafka/web/pro/ui/controllers/consumers/base_controller.rb +21 -0
  47. data/lib/karafka/web/pro/ui/controllers/consumers/commanding_controller.rb +148 -0
  48. data/lib/karafka/web/pro/ui/controllers/consumers/commands_controller.rb +96 -0
  49. data/lib/karafka/web/pro/ui/controllers/consumers/consumers_controller.rb +101 -0
  50. data/lib/karafka/web/pro/ui/controllers/consumers/controls_controller.rb +36 -0
  51. data/lib/karafka/web/pro/ui/controllers/consumers/jobs_controller.rb +57 -0
  52. data/lib/karafka/web/pro/ui/controllers/consumers/partitions/base_controller.rb +86 -0
  53. data/lib/karafka/web/pro/ui/controllers/consumers/partitions/offsets_controller.rb +75 -0
  54. data/lib/karafka/web/pro/ui/controllers/consumers/partitions/pauses_controller.rb +110 -0
  55. data/lib/karafka/web/pro/ui/controllers/dashboard_controller.rb +2 -10
  56. data/lib/karafka/web/pro/ui/controllers/dlq_controller.rb +2 -10
  57. data/lib/karafka/web/pro/ui/controllers/errors_controller.rb +3 -11
  58. data/lib/karafka/web/pro/ui/controllers/explorer/base_controller.rb +21 -0
  59. data/lib/karafka/web/pro/ui/controllers/explorer/explorer_controller.rb +215 -0
  60. data/lib/karafka/web/pro/ui/controllers/explorer/messages_controller.rb +145 -0
  61. data/lib/karafka/web/pro/ui/controllers/explorer/search_controller.rb +68 -0
  62. data/lib/karafka/web/pro/ui/controllers/health_controller.rb +2 -10
  63. data/lib/karafka/web/pro/ui/controllers/jobs_controller.rb +2 -10
  64. data/lib/karafka/web/pro/ui/controllers/recurring_tasks_controller.rb +12 -13
  65. data/lib/karafka/web/pro/ui/controllers/routing_controller.rb +2 -10
  66. data/lib/karafka/web/pro/ui/controllers/scheduled_messages/base_controller.rb +2 -10
  67. data/lib/karafka/web/pro/ui/controllers/scheduled_messages/explorer_controller.rb +8 -16
  68. data/lib/karafka/web/pro/ui/controllers/scheduled_messages/messages_controller.rb +9 -15
  69. data/lib/karafka/web/pro/ui/controllers/scheduled_messages/schedules_controller.rb +2 -10
  70. data/lib/karafka/web/pro/ui/controllers/status_controller.rb +2 -10
  71. data/lib/karafka/web/pro/ui/controllers/support_controller.rb +2 -10
  72. data/lib/karafka/web/pro/ui/controllers/topics/base_controller.rb +21 -0
  73. data/lib/karafka/web/pro/ui/controllers/topics/configs_controller.rb +86 -0
  74. data/lib/karafka/web/pro/ui/controllers/topics/distributions_controller.rb +91 -0
  75. data/lib/karafka/web/pro/ui/controllers/topics/offsets_controller.rb +55 -0
  76. data/lib/karafka/web/pro/ui/controllers/topics/replications_controller.rb +37 -0
  77. data/lib/karafka/web/pro/ui/controllers/topics/topics_controller.rb +101 -0
  78. data/lib/karafka/web/pro/ui/controllers/ux_controller.rb +2 -10
  79. data/lib/karafka/web/pro/ui/lib/branding/config.rb +2 -10
  80. data/lib/karafka/web/pro/ui/lib/branding/contracts/config.rb +2 -10
  81. data/lib/karafka/web/pro/ui/lib/branding.rb +2 -10
  82. data/lib/karafka/web/pro/ui/lib/features.rb +53 -0
  83. data/lib/karafka/web/pro/ui/lib/patterns_detector.rb +2 -10
  84. data/lib/karafka/web/pro/ui/lib/policies/config.rb +2 -10
  85. data/lib/karafka/web/pro/ui/lib/policies/contracts/config.rb +2 -10
  86. data/lib/karafka/web/pro/ui/lib/policies/messages.rb +2 -10
  87. data/lib/karafka/web/pro/ui/lib/policies/requests.rb +2 -10
  88. data/lib/karafka/web/pro/ui/lib/policies.rb +2 -10
  89. data/lib/karafka/web/pro/ui/lib/safe_runner.rb +5 -0
  90. data/lib/karafka/web/pro/ui/lib/search/config.rb +2 -10
  91. data/lib/karafka/web/pro/ui/lib/search/contracts/config.rb +2 -10
  92. data/lib/karafka/web/pro/ui/lib/search/contracts/form.rb +2 -10
  93. data/lib/karafka/web/pro/ui/lib/search/matchers/base.rb +2 -10
  94. data/lib/karafka/web/pro/ui/lib/search/matchers/raw_header_includes.rb +10 -11
  95. data/lib/karafka/web/pro/ui/lib/search/matchers/raw_key_includes.rb +2 -10
  96. data/lib/karafka/web/pro/ui/lib/search/matchers/raw_payload_includes.rb +23 -11
  97. data/lib/karafka/web/pro/ui/lib/search/normalizer.rb +2 -10
  98. data/lib/karafka/web/pro/ui/lib/search/runner.rb +3 -11
  99. data/lib/karafka/web/pro/ui/lib/search.rb +2 -10
  100. data/lib/karafka/web/pro/ui/routes/base.rb +19 -0
  101. data/lib/karafka/web/pro/ui/routes/cluster.rb +37 -0
  102. data/lib/karafka/web/pro/ui/routes/consumers.rb +145 -0
  103. data/lib/karafka/web/pro/ui/routes/dashboard.rb +25 -0
  104. data/lib/karafka/web/pro/ui/routes/dlq.rb +24 -0
  105. data/lib/karafka/web/pro/ui/routes/errors.rb +39 -0
  106. data/lib/karafka/web/pro/ui/routes/explorer.rb +118 -0
  107. data/lib/karafka/web/pro/ui/routes/health.rb +47 -0
  108. data/lib/karafka/web/pro/ui/routes/jobs.rb +33 -0
  109. data/lib/karafka/web/pro/ui/routes/recurring_tasks.rb +59 -0
  110. data/lib/karafka/web/pro/ui/routes/routing.rb +31 -0
  111. data/lib/karafka/web/pro/ui/routes/scheduled_messages.rb +75 -0
  112. data/lib/karafka/web/pro/ui/routes/status.rb +24 -0
  113. data/lib/karafka/web/pro/ui/routes/support.rb +24 -0
  114. data/lib/karafka/web/pro/ui/routes/topics.rb +90 -0
  115. data/lib/karafka/web/pro/ui/routes/ux.rb +24 -0
  116. data/lib/karafka/web/pro/ui/views/cluster/_breadcrumbs.erb +3 -0
  117. data/lib/karafka/web/pro/ui/views/cluster/_broker.erb +3 -0
  118. data/lib/karafka/web/pro/ui/views/cluster/_config.erb +3 -0
  119. data/lib/karafka/web/pro/ui/views/cluster/_tabs.erb +3 -0
  120. data/lib/karafka/web/pro/ui/views/cluster/index.erb +4 -1
  121. data/lib/karafka/web/pro/ui/views/cluster/show.erb +3 -0
  122. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_backtrace.erb +3 -0
  123. data/lib/karafka/web/pro/ui/views/consumers/commands/_breadcrumbs.erb +24 -0
  124. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_command.erb +22 -6
  125. data/lib/karafka/web/pro/ui/views/consumers/commands/_command_details.erb +4 -0
  126. data/lib/karafka/web/pro/ui/views/consumers/commands/_empty.erb +6 -0
  127. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_incompatible_schema.erb +3 -0
  128. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_metadata.erb +4 -1
  129. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_table.erb +5 -2
  130. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/index.erb +7 -4
  131. data/lib/karafka/web/pro/ui/views/consumers/commands/show.erb +32 -0
  132. data/lib/karafka/web/pro/ui/views/consumers/consumers/_breadcrumbs.erb +46 -0
  133. data/lib/karafka/web/pro/ui/views/consumers/consumers/_consumer.erb +59 -0
  134. data/lib/karafka/web/pro/ui/views/consumers/consumers/_consumer_performance.erb +71 -0
  135. data/lib/karafka/web/pro/ui/views/consumers/consumers/_tabs.erb +38 -0
  136. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_commands.erb +80 -0
  137. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_consumer_group.erb +11 -0
  138. data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_metrics.erb +3 -0
  139. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_no_subscriptions.erb +10 -0
  140. data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_partition.erb +16 -0
  141. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_partition_edit_options.erb +33 -0
  142. data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_stopped.erb +3 -0
  143. data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_subscription_group.erb +7 -3
  144. data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_tabs.erb +7 -4
  145. data/lib/karafka/web/pro/ui/views/consumers/consumers/details.erb +15 -0
  146. data/lib/karafka/web/pro/ui/views/consumers/{index.erb → consumers/index.erb} +6 -3
  147. data/lib/karafka/web/pro/ui/views/consumers/{performance.erb → consumers/performance.erb} +6 -3
  148. data/lib/karafka/web/pro/ui/views/consumers/consumers/subscriptions.erb +24 -0
  149. data/lib/karafka/web/pro/ui/views/consumers/controls/_breadcrumbs.erb +16 -0
  150. data/lib/karafka/web/pro/ui/views/consumers/controls/_controls.erb +107 -0
  151. data/lib/karafka/web/pro/ui/views/consumers/{controls.erb → controls/index.erb} +8 -5
  152. data/lib/karafka/web/pro/ui/views/consumers/jobs/_breadcrumbs.erb +36 -0
  153. data/lib/karafka/web/pro/ui/views/consumers/{consumer → jobs}/_job.erb +3 -0
  154. data/lib/karafka/web/pro/ui/views/consumers/{consumer → jobs}/_no_jobs.erb +3 -0
  155. data/lib/karafka/web/pro/ui/views/consumers/{pending_jobs.erb → jobs/pending.erb} +7 -8
  156. data/lib/karafka/web/pro/ui/views/consumers/{running_jobs.erb → jobs/running.erb} +7 -8
  157. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_basics.erb +77 -0
  158. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_breadcrumbs.erb +58 -0
  159. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_form.erb +109 -0
  160. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_not_running_error.erb +16 -0
  161. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_running_warning.erb +15 -0
  162. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/edit.erb +12 -0
  163. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_active_not_editable.erb +22 -0
  164. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_adjusting_warning.erb +27 -0
  165. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_breadcrumbs.erb +60 -0
  166. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_edit_form.erb +59 -0
  167. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_lrj_not_manageable.erb +24 -0
  168. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_new_form.erb +78 -0
  169. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_not_running.erb +16 -0
  170. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/edit.erb +20 -0
  171. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/new.erb +16 -0
  172. data/lib/karafka/web/pro/ui/views/dashboard/index.erb +4 -1
  173. data/lib/karafka/web/pro/ui/views/dlq/_breadcrumbs.erb +3 -0
  174. data/lib/karafka/web/pro/ui/views/dlq/_no_topics.erb +3 -0
  175. data/lib/karafka/web/pro/ui/views/dlq/_topic.erb +4 -1
  176. data/lib/karafka/web/pro/ui/views/dlq/index.erb +3 -0
  177. data/lib/karafka/web/pro/ui/views/errors/_breadcrumbs.erb +3 -0
  178. data/lib/karafka/web/pro/ui/views/errors/_error.erb +3 -0
  179. data/lib/karafka/web/pro/ui/views/errors/_partition_option.erb +3 -0
  180. data/lib/karafka/web/pro/ui/views/errors/_selector.erb +3 -0
  181. data/lib/karafka/web/pro/ui/views/errors/_table.erb +4 -1
  182. data/lib/karafka/web/pro/ui/views/errors/index.erb +6 -3
  183. data/lib/karafka/web/pro/ui/views/errors/partition.erb +5 -2
  184. data/lib/karafka/web/pro/ui/views/errors/show.erb +3 -0
  185. data/lib/karafka/web/pro/ui/views/explorer/{_breadcrumbs.erb → explorer/_breadcrumbs.erb} +7 -4
  186. data/lib/karafka/web/pro/ui/views/explorer/{_failed_deserialization.erb → explorer/_failed_deserialization.erb} +3 -0
  187. data/lib/karafka/web/pro/ui/views/explorer/{_filtered.erb → explorer/_filtered.erb} +3 -0
  188. data/lib/karafka/web/pro/ui/views/explorer/{_message.erb → explorer/_message.erb} +4 -1
  189. data/lib/karafka/web/pro/ui/views/explorer/explorer/_no_topics.erb +4 -0
  190. data/lib/karafka/web/pro/ui/views/explorer/{_partition_option.erb → explorer/_partition_option.erb} +4 -1
  191. data/lib/karafka/web/pro/ui/views/explorer/{_selector.erb → explorer/_selector.erb} +4 -1
  192. data/lib/karafka/web/pro/ui/views/explorer/explorer/_topic.erb +13 -0
  193. data/lib/karafka/web/pro/ui/views/explorer/explorer/index.erb +17 -0
  194. data/lib/karafka/web/pro/ui/views/explorer/{message → explorer/message}/_metadata.erb +10 -7
  195. data/lib/karafka/web/pro/ui/views/explorer/{message → explorer/message}/_payload.erb +6 -3
  196. data/lib/karafka/web/pro/ui/views/explorer/{message → explorer/message}/_resources_utilization.erb +7 -4
  197. data/lib/karafka/web/pro/ui/views/explorer/{message → explorer/message}/_too_big_to_be_displayed.erb +3 -0
  198. data/lib/karafka/web/pro/ui/views/explorer/{messages → explorer/messages}/_detail.erb +3 -0
  199. data/lib/karafka/web/pro/ui/views/explorer/explorer/messages/_headers.erb +51 -0
  200. data/lib/karafka/web/pro/ui/views/explorer/{messages → explorer/messages}/_key.erb +3 -0
  201. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_cleaned.erb +6 -0
  202. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_empty.erb +6 -0
  203. data/lib/karafka/web/pro/ui/views/explorer/{partition → explorer/partition}/_messages.erb +4 -1
  204. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_time_selector.erb +16 -0
  205. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_timestamp_selector.erb +33 -0
  206. data/lib/karafka/web/pro/ui/views/explorer/{partition.erb → explorer/partition.erb} +24 -17
  207. data/lib/karafka/web/pro/ui/views/explorer/{show.erb → explorer/show.erb} +17 -19
  208. data/lib/karafka/web/pro/ui/views/explorer/{topic → explorer/topic}/_actions.erb +5 -2
  209. data/lib/karafka/web/pro/ui/views/explorer/explorer/topic/_empty.erb +6 -0
  210. data/lib/karafka/web/pro/ui/views/explorer/{topic → explorer/topic}/_limited.erb +3 -0
  211. data/lib/karafka/web/pro/ui/views/explorer/{topic.erb → explorer/topic.erb} +7 -4
  212. data/lib/karafka/web/pro/ui/views/explorer/messages/_breadcrumbs.erb +32 -0
  213. data/lib/karafka/web/pro/ui/views/explorer/messages/forward.erb +143 -0
  214. data/lib/karafka/web/pro/ui/views/explorer/search/_breadcrumbs.erb +4 -0
  215. data/lib/karafka/web/pro/ui/views/explorer/search/_fix_errors.erb +6 -0
  216. data/lib/karafka/web/pro/ui/views/{search → explorer/search}/_metadata.erb +3 -0
  217. data/lib/karafka/web/pro/ui/views/explorer/search/_no_results.erb +6 -0
  218. data/lib/karafka/web/pro/ui/views/{search → explorer/search}/_no_search_criteria.erb +3 -0
  219. data/lib/karafka/web/pro/ui/views/{search → explorer/search}/_search_criteria.erb +3 -0
  220. data/lib/karafka/web/pro/ui/views/{search → explorer/search}/_search_modal.erb +5 -2
  221. data/lib/karafka/web/pro/ui/views/explorer/search/_timeout.erb +6 -0
  222. data/lib/karafka/web/pro/ui/views/explorer/search/index.erb +32 -0
  223. data/lib/karafka/web/pro/ui/views/health/_breadcrumbs.erb +3 -0
  224. data/lib/karafka/web/pro/ui/views/health/_no_data.erb +3 -0
  225. data/lib/karafka/web/pro/ui/views/health/_partition.erb +16 -1
  226. data/lib/karafka/web/pro/ui/views/health/_partition_lags.erb +3 -0
  227. data/lib/karafka/web/pro/ui/views/health/_partition_offset.erb +3 -0
  228. data/lib/karafka/web/pro/ui/views/health/_partition_times.erb +3 -0
  229. data/lib/karafka/web/pro/ui/views/health/_table_metadata.erb +4 -1
  230. data/lib/karafka/web/pro/ui/views/health/_tabs.erb +3 -0
  231. data/lib/karafka/web/pro/ui/views/health/changes.erb +4 -1
  232. data/lib/karafka/web/pro/ui/views/health/cluster_lags.erb +3 -0
  233. data/lib/karafka/web/pro/ui/views/health/lags.erb +5 -2
  234. data/lib/karafka/web/pro/ui/views/health/offsets.erb +4 -1
  235. data/lib/karafka/web/pro/ui/views/health/overview.erb +8 -3
  236. data/lib/karafka/web/pro/ui/views/jobs/_job.erb +50 -38
  237. data/lib/karafka/web/pro/ui/views/jobs/_no_jobs.erb +3 -0
  238. data/lib/karafka/web/pro/ui/views/jobs/pending.erb +4 -1
  239. data/lib/karafka/web/pro/ui/views/jobs/running.erb +4 -1
  240. data/lib/karafka/web/pro/ui/views/recurring_tasks/_actions.erb +3 -0
  241. data/lib/karafka/web/pro/ui/views/recurring_tasks/_batch_actions.erb +3 -0
  242. data/lib/karafka/web/pro/ui/views/recurring_tasks/_breadcrumbs.erb +3 -0
  243. data/lib/karafka/web/pro/ui/views/recurring_tasks/_log.erb +3 -0
  244. data/lib/karafka/web/pro/ui/views/recurring_tasks/_not_active.erb +3 -0
  245. data/lib/karafka/web/pro/ui/views/recurring_tasks/_tabs.erb +3 -0
  246. data/lib/karafka/web/pro/ui/views/recurring_tasks/_task.erb +3 -0
  247. data/lib/karafka/web/pro/ui/views/recurring_tasks/logs.erb +3 -0
  248. data/lib/karafka/web/pro/ui/views/recurring_tasks/schedule.erb +3 -0
  249. data/lib/karafka/web/pro/ui/views/routing/_consumer_group.erb +3 -0
  250. data/lib/karafka/web/pro/ui/views/routing/_detail.erb +3 -0
  251. data/lib/karafka/web/pro/ui/views/routing/_topic.erb +3 -0
  252. data/lib/karafka/web/pro/ui/views/routing/index.erb +3 -0
  253. data/lib/karafka/web/pro/ui/views/routing/show.erb +3 -0
  254. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_breadcrumbs.erb +6 -3
  255. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_key.erb +3 -0
  256. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_message.erb +4 -1
  257. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_messages.erb +3 -0
  258. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/partition.erb +23 -16
  259. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/topic.erb +6 -3
  260. data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/_breadcrumbs.erb +3 -0
  261. data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/_no_groups.erb +3 -0
  262. data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/index.erb +4 -1
  263. data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/show.erb +3 -0
  264. data/lib/karafka/web/pro/ui/views/shared/_navigation.erb +25 -17
  265. data/lib/karafka/web/pro/ui/views/shared/_rdkafka_form_error_alert_box.erb +16 -0
  266. data/lib/karafka/web/pro/ui/views/shared/branding/_label.erb +3 -0
  267. data/lib/karafka/web/pro/ui/views/shared/branding/_notice.erb +3 -0
  268. data/lib/karafka/web/pro/ui/views/topics/configs/_breadcrumbs.erb +34 -0
  269. data/lib/karafka/web/pro/ui/views/topics/configs/_config.erb +26 -0
  270. data/lib/karafka/web/pro/ui/views/topics/configs/_delete_button.erb +13 -0
  271. data/lib/karafka/web/pro/ui/views/topics/configs/_edit_form.erb +50 -0
  272. data/lib/karafka/web/pro/ui/views/topics/configs/_edit_plan.erb +16 -0
  273. data/lib/karafka/web/pro/ui/views/topics/configs/_edit_warning.erb +12 -0
  274. data/lib/karafka/web/pro/ui/views/topics/configs/edit.erb +16 -0
  275. data/lib/karafka/web/pro/ui/views/topics/{config.erb → configs/index.erb} +9 -3
  276. data/lib/karafka/web/pro/ui/views/topics/distributions/_add_partitions_button.erb +13 -0
  277. data/lib/karafka/web/pro/ui/views/topics/{distribution → distributions}/_badges.erb +3 -0
  278. data/lib/karafka/web/pro/ui/views/topics/distributions/_breadcrumbs.erb +28 -0
  279. data/lib/karafka/web/pro/ui/views/topics/{distribution → distributions}/_chart.erb +3 -0
  280. data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_form.erb +47 -0
  281. data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_hints.erb +15 -0
  282. data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_warnings.erb +14 -0
  283. data/lib/karafka/web/pro/ui/views/topics/distributions/_empty_partitions.erb +4 -0
  284. data/lib/karafka/web/pro/ui/views/topics/{distribution → distributions}/_limited.erb +3 -0
  285. data/lib/karafka/web/pro/ui/views/topics/distributions/_partition.erb +13 -0
  286. data/lib/karafka/web/pro/ui/views/topics/distributions/edit.erb +16 -0
  287. data/lib/karafka/web/pro/ui/views/topics/{distribution.erb → distributions/show.erb} +11 -7
  288. data/lib/karafka/web/pro/ui/views/topics/offsets/_breadcrumbs.erb +20 -0
  289. data/lib/karafka/web/pro/ui/views/topics/offsets/_partition.erb +13 -0
  290. data/lib/karafka/web/pro/ui/views/topics/{offsets.erb → offsets/show.erb} +6 -3
  291. data/lib/karafka/web/pro/ui/views/topics/replications/_breadcrumbs.erb +20 -0
  292. data/lib/karafka/web/pro/ui/views/topics/{_partition.erb → replications/_partition.erb} +4 -1
  293. data/lib/karafka/web/pro/ui/views/topics/{replication.erb → replications/show.erb} +6 -3
  294. data/lib/karafka/web/pro/ui/views/topics/topics/_breadcrumbs.erb +32 -0
  295. data/lib/karafka/web/pro/ui/views/topics/topics/_create_button.erb +13 -0
  296. data/lib/karafka/web/pro/ui/views/topics/topics/_create_hints.erb +15 -0
  297. data/lib/karafka/web/pro/ui/views/topics/topics/_delete_form.erb +36 -0
  298. data/lib/karafka/web/pro/ui/views/topics/topics/_delete_hints.erb +15 -0
  299. data/lib/karafka/web/pro/ui/views/topics/topics/_delete_warning.erb +13 -0
  300. data/lib/karafka/web/pro/ui/views/topics/topics/_new_form.erb +80 -0
  301. data/lib/karafka/web/pro/ui/views/topics/{_tabs.erb → topics/_tabs.erb} +7 -4
  302. data/lib/karafka/web/pro/ui/views/topics/topics/_topic.erb +12 -0
  303. data/lib/karafka/web/pro/ui/views/topics/topics/edit.erb +10 -0
  304. data/lib/karafka/web/pro/ui/views/topics/topics/index.erb +19 -0
  305. data/lib/karafka/web/pro/ui/views/topics/topics/new.erb +12 -0
  306. data/lib/karafka/web/processing/consumers/metrics.rb +1 -1
  307. data/lib/karafka/web/processing/consumers/state.rb +1 -1
  308. data/lib/karafka/web/processing/publisher.rb +4 -4
  309. data/lib/karafka/web/tracking/consumers/contracts/partition.rb +1 -0
  310. data/lib/karafka/web/tracking/consumers/listeners/errors.rb +38 -9
  311. data/lib/karafka/web/tracking/consumers/listeners/pausing.rb +2 -2
  312. data/lib/karafka/web/tracking/consumers/listeners/transactions.rb +44 -0
  313. data/lib/karafka/web/tracking/consumers/reporter.rb +2 -2
  314. data/lib/karafka/web/tracking/consumers/sampler.rb +81 -14
  315. data/lib/karafka/web/tracking/helpers/sysconf.rb +33 -0
  316. data/lib/karafka/web/tracking/producers/reporter.rb +2 -9
  317. data/lib/karafka/web/ui/app.rb +19 -112
  318. data/lib/karafka/web/ui/base.rb +63 -4
  319. data/lib/karafka/web/ui/controllers/base_controller.rb +43 -1
  320. data/lib/karafka/web/ui/controllers/cluster_controller.rb +5 -2
  321. data/lib/karafka/web/ui/controllers/errors_controller.rb +1 -1
  322. data/lib/karafka/web/ui/controllers/requests/execution_wrapper.rb +52 -0
  323. data/lib/karafka/web/ui/controllers/requests/hookable.rb +99 -0
  324. data/lib/karafka/web/ui/controllers/requests/params.rb +39 -1
  325. data/lib/karafka/web/ui/controllers/responses/redirect.rb +0 -5
  326. data/lib/karafka/web/ui/controllers/status_controller.rb +3 -0
  327. data/lib/karafka/web/ui/helpers/application_helper.rb +10 -1
  328. data/lib/karafka/web/ui/helpers/paths_helper.rb +54 -10
  329. data/lib/karafka/web/ui/lib/admin.rb +1 -1
  330. data/lib/karafka/web/ui/lib/cache.rb +135 -0
  331. data/lib/karafka/web/ui/models/broker.rb +1 -2
  332. data/lib/karafka/web/ui/models/cluster_info.rb +15 -21
  333. data/lib/karafka/web/ui/models/consumers_metrics.rb +1 -1
  334. data/lib/karafka/web/ui/models/consumers_state.rb +1 -1
  335. data/lib/karafka/web/ui/models/counters.rb +1 -1
  336. data/lib/karafka/web/ui/models/health.rb +9 -7
  337. data/lib/karafka/web/ui/models/process.rb +14 -0
  338. data/lib/karafka/web/ui/models/processes.rb +2 -2
  339. data/lib/karafka/web/ui/models/recurring_tasks/schedule.rb +1 -1
  340. data/lib/karafka/web/ui/models/status.rb +27 -8
  341. data/lib/karafka/web/ui/models/topic.rb +1 -2
  342. data/lib/karafka/web/ui/public/javascripts/application.js +8 -98
  343. data/lib/karafka/web/ui/public/javascripts/application.min.js +15 -6
  344. data/lib/karafka/web/ui/public/javascripts/application.min.js.br +0 -0
  345. data/lib/karafka/web/ui/public/javascripts/application.min.js.gz +0 -0
  346. data/lib/karafka/web/ui/public/javascripts/components/action_confirmation_manager.js +30 -0
  347. data/lib/karafka/web/ui/public/javascripts/components/alerts.js +39 -0
  348. data/lib/karafka/web/ui/public/javascripts/components/btn_toggle_manager.js +17 -7
  349. data/lib/karafka/web/ui/public/javascripts/components/button_lock_manager.js +50 -0
  350. data/lib/karafka/web/ui/public/javascripts/components/live_poll.js +71 -19
  351. data/lib/karafka/web/ui/public/javascripts/components/message_republish_manager.js +50 -0
  352. data/lib/karafka/web/ui/public/javascripts/components/page_title_tracker.js +21 -0
  353. data/lib/karafka/web/ui/public/javascripts/components/partition_redirect_manager.js +21 -0
  354. data/lib/karafka/web/ui/public/javascripts/components/time_ago_manager.js +25 -0
  355. data/lib/karafka/web/ui/public/javascripts/components/timestamp_selector.js +30 -0
  356. data/lib/karafka/web/ui/public/javascripts/libs/datepicker.js +2 -2
  357. data/lib/karafka/web/ui/public/stylesheets/application.css +30 -0
  358. data/lib/karafka/web/ui/public/stylesheets/application.min.css +5123 -13
  359. data/lib/karafka/web/ui/public/stylesheets/application.min.css.br +0 -0
  360. data/lib/karafka/web/ui/public/stylesheets/application.min.css.gz +0 -0
  361. data/lib/karafka/web/ui/public/stylesheets/libs/highlight_dark.min.css.gz +0 -0
  362. data/lib/karafka/web/ui/public/stylesheets/libs/highlight_light.min.css.gz +0 -0
  363. data/lib/karafka/web/ui/public/stylesheets/libs/tailwind.css +512 -213
  364. data/lib/karafka/web/ui/routes/assets.rb +53 -0
  365. data/lib/karafka/web/ui/routes/base.rb +36 -0
  366. data/lib/karafka/web/ui/routes/cluster.rb +28 -0
  367. data/lib/karafka/web/ui/routes/consumers.rb +35 -0
  368. data/lib/karafka/web/ui/routes/dashboard.rb +20 -0
  369. data/lib/karafka/web/ui/routes/errors.rb +26 -0
  370. data/lib/karafka/web/ui/routes/jobs.rb +28 -0
  371. data/lib/karafka/web/ui/routes/pro_only.rb +27 -0
  372. data/lib/karafka/web/ui/routes/routing.rb +26 -0
  373. data/lib/karafka/web/ui/routes/status.rb +19 -0
  374. data/lib/karafka/web/ui/routes/support.rb +19 -0
  375. data/lib/karafka/web/ui/routes/ux.rb +19 -0
  376. data/lib/karafka/web/ui/views/cluster/_partition.erb +2 -2
  377. data/lib/karafka/web/ui/views/cluster/brokers.erb +1 -1
  378. data/lib/karafka/web/ui/views/consumers/_breadcrumbs.erb +7 -1
  379. data/lib/karafka/web/ui/views/consumers/_consumer.erb +39 -30
  380. data/lib/karafka/web/ui/views/consumers/_incompatible.erb +13 -0
  381. data/lib/karafka/web/ui/views/consumers/_no_consumers.erb +2 -2
  382. data/lib/karafka/web/ui/views/consumers/_tabs.erb +4 -4
  383. data/lib/karafka/web/ui/views/consumers/index.erb +1 -1
  384. data/lib/karafka/web/ui/views/dashboard/_feature_pro.erb +1 -1
  385. data/lib/karafka/web/ui/views/dashboard/_not_enough_data.erb +2 -2
  386. data/lib/karafka/web/ui/views/dashboard/_ranges_selector.erb +1 -1
  387. data/lib/karafka/web/ui/views/dashboard/index.erb +6 -49
  388. data/lib/karafka/web/ui/views/errors/_detail.erb +3 -3
  389. data/lib/karafka/web/ui/views/errors/index.erb +1 -1
  390. data/lib/karafka/web/ui/views/jobs/_job.erb +38 -29
  391. data/lib/karafka/web/ui/views/jobs/pending.erb +1 -1
  392. data/lib/karafka/web/ui/views/jobs/running.erb +1 -1
  393. data/lib/karafka/web/ui/views/layout.erb +7 -5
  394. data/lib/karafka/web/ui/views/shared/_become_pro.erb +1 -1
  395. data/lib/karafka/web/ui/views/shared/_brand.erb +1 -1
  396. data/lib/karafka/web/ui/views/shared/_breadcrumbs.erb +1 -1
  397. data/lib/karafka/web/ui/views/shared/_content.erb +1 -1
  398. data/lib/karafka/web/ui/views/shared/_controls.erb +10 -3
  399. data/lib/karafka/web/ui/views/shared/_custom_nav.erb +9 -0
  400. data/lib/karafka/web/ui/views/shared/_flashes.erb +3 -5
  401. data/lib/karafka/web/ui/views/shared/_header.erb +25 -2
  402. data/lib/karafka/web/ui/views/shared/_navigation.erb +17 -15
  403. data/lib/karafka/web/ui/views/shared/alerts/_error.erb +8 -0
  404. data/lib/karafka/web/ui/views/shared/alerts/_info.erb +8 -0
  405. data/lib/karafka/web/ui/views/shared/alerts/_primary.erb +8 -0
  406. data/lib/karafka/web/ui/views/shared/alerts/_secondary.erb +8 -0
  407. data/lib/karafka/web/ui/views/shared/alerts/_success.erb +8 -0
  408. data/lib/karafka/web/ui/views/shared/alerts/_warning.erb +8 -0
  409. data/lib/karafka/web/ui/views/shared/exceptions/incompatible_schema.erb +34 -0
  410. data/lib/karafka/web/ui/views/shared/exceptions/not_allowed.erb +4 -0
  411. data/lib/karafka/web/ui/views/shared/exceptions/not_found.erb +5 -1
  412. data/lib/karafka/web/ui/views/shared/exceptions/pro_only.erb +4 -0
  413. data/lib/karafka/web/ui/views/shared/icons/_arrow_left.erb +3 -0
  414. data/lib/karafka/web/ui/views/shared/icons/_arrow_up_tray.erb +3 -0
  415. data/lib/karafka/web/ui/views/shared/icons/_clock.erb +3 -0
  416. data/lib/karafka/web/ui/views/shared/icons/_pencil.erb +3 -0
  417. data/lib/karafka/web/ui/views/shared/icons/_pencil_square.erb +3 -0
  418. data/lib/karafka/web/ui/views/shared/icons/_play_pause.erb +3 -0
  419. data/lib/karafka/web/ui/views/shared/icons/_plus.erb +3 -0
  420. data/lib/karafka/web/ui/views/shared/icons/_trash.erb +3 -0
  421. data/lib/karafka/web/ui/views/status/failures/_live_reporting.erb +1 -1
  422. data/lib/karafka/web/ui/views/status/failures/_partitions.erb +3 -3
  423. data/lib/karafka/web/ui/views/status/failures/_state_calculation.erb +2 -2
  424. data/lib/karafka/web/ui/views/status/info/_components.erb +6 -6
  425. data/lib/karafka/web/ui/views/status/show.erb +15 -0
  426. data/lib/karafka/web/ui/views/status/warnings/_consumers_schemas.erb +31 -0
  427. data/lib/karafka/web/ui/views/ux/_icons.erb +1 -1
  428. data/lib/karafka/web/ui/views/ux/_status_rows.erb +6 -0
  429. data/lib/karafka/web/version.rb +1 -1
  430. data/lib/karafka/web.rb +9 -1
  431. data/package-lock.json +799 -1226
  432. data/package.json +3 -4
  433. data/postcss.config.js +1 -2
  434. data/renovate.json +13 -1
  435. data/tailwind.config.js +0 -4
  436. data.tar.gz.sig +0 -0
  437. metadata +233 -109
  438. metadata.gz.sig +0 -0
  439. data/lib/karafka/web/pro/commanding/commands/quiet.rb +0 -34
  440. data/lib/karafka/web/pro/commanding/commands/stop.rb +0 -34
  441. data/lib/karafka/web/pro/commanding/commands/trace.rb +0 -41
  442. data/lib/karafka/web/pro/ui/controllers/commanding_controller.rb +0 -118
  443. data/lib/karafka/web/pro/ui/controllers/commands_controller.rb +0 -96
  444. data/lib/karafka/web/pro/ui/controllers/consumers_controller.rb +0 -138
  445. data/lib/karafka/web/pro/ui/controllers/explorer_controller.rb +0 -220
  446. data/lib/karafka/web/pro/ui/controllers/messages_controller.rb +0 -107
  447. data/lib/karafka/web/pro/ui/controllers/search_controller.rb +0 -73
  448. data/lib/karafka/web/pro/ui/controllers/topics_controller.rb +0 -130
  449. data/lib/karafka/web/pro/ui/views/commands/_breadcrumbs.erb +0 -21
  450. data/lib/karafka/web/pro/ui/views/commands/_command_details.erb +0 -1
  451. data/lib/karafka/web/pro/ui/views/commands/_empty.erb +0 -3
  452. data/lib/karafka/web/pro/ui/views/commands/show.erb +0 -33
  453. data/lib/karafka/web/pro/ui/views/consumers/_breadcrumbs.erb +0 -55
  454. data/lib/karafka/web/pro/ui/views/consumers/_consumer.erb +0 -47
  455. data/lib/karafka/web/pro/ui/views/consumers/_consumer_controls.erb +0 -95
  456. data/lib/karafka/web/pro/ui/views/consumers/_consumer_performance.erb +0 -59
  457. data/lib/karafka/web/pro/ui/views/consumers/_tabs.erb +0 -33
  458. data/lib/karafka/web/pro/ui/views/consumers/consumer/_commands.erb +0 -72
  459. data/lib/karafka/web/pro/ui/views/consumers/consumer/_consumer_group.erb +0 -8
  460. data/lib/karafka/web/pro/ui/views/consumers/consumer/_no_subscriptions.erb +0 -7
  461. data/lib/karafka/web/pro/ui/views/consumers/details.erb +0 -13
  462. data/lib/karafka/web/pro/ui/views/consumers/subscriptions.erb +0 -25
  463. data/lib/karafka/web/pro/ui/views/explorer/_no_topics.erb +0 -1
  464. data/lib/karafka/web/pro/ui/views/explorer/_topic.erb +0 -10
  465. data/lib/karafka/web/pro/ui/views/explorer/index.erb +0 -14
  466. data/lib/karafka/web/pro/ui/views/explorer/messages/_headers.erb +0 -33
  467. data/lib/karafka/web/pro/ui/views/explorer/partition/_cleaned.erb +0 -3
  468. data/lib/karafka/web/pro/ui/views/explorer/partition/_empty.erb +0 -3
  469. data/lib/karafka/web/pro/ui/views/explorer/topic/_empty.erb +0 -3
  470. data/lib/karafka/web/pro/ui/views/search/_breadcrumbs.erb +0 -1
  471. data/lib/karafka/web/pro/ui/views/search/_fix_errors.erb +0 -3
  472. data/lib/karafka/web/pro/ui/views/search/_no_results.erb +0 -3
  473. data/lib/karafka/web/pro/ui/views/search/_timeout.erb +0 -3
  474. data/lib/karafka/web/pro/ui/views/search/index.erb +0 -29
  475. data/lib/karafka/web/pro/ui/views/topics/_breadcrumbs.erb +0 -45
  476. data/lib/karafka/web/pro/ui/views/topics/_partition_offsets.erb +0 -10
  477. data/lib/karafka/web/pro/ui/views/topics/_topic.erb +0 -9
  478. data/lib/karafka/web/pro/ui/views/topics/distribution/_empty_partitions.erb +0 -1
  479. data/lib/karafka/web/pro/ui/views/topics/distribution/_partition.erb +0 -10
  480. data/lib/karafka/web/pro/ui/views/topics/index.erb +0 -14
  481. data/lib/karafka/web/ui/lib/ttl_cache.rb +0 -82
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5790e7352a06e0a780810c40aac53e9b5c878a84990c70b28bdc4d49d3ab921d
4
- data.tar.gz: e5ef8e226602ad0388b138b676d705f9dbda06363a0001b2c5e483abab9f2bed
3
+ metadata.gz: 70c1492ea1073bf499055b4a6db1090e8fede2fd6a89d0fca7c5085669170863
4
+ data.tar.gz: 52cffaec446f588e4c3508e9b4085f7e911b68961cd2430406bd7c5b49a99f74
5
5
  SHA512:
6
- metadata.gz: a645ae9fbbe73c045562b38f744e923e3bb4ac7be47f5c49dd664a1b61513ab07706348461ef7858d3c5518a0c70c5f31addf66e146cd76e91579590e7baa268
7
- data.tar.gz: 4e5a11cd6d5333b1dff7f95856818cbe14a7a7fa172dc5cbf6d4a1409883b862dc97dc9a4799cf247023e12fdaecbae749e2d44647783af770ce3ca0cd95e51c
6
+ metadata.gz: 9a766d94df43a6f8bf61c2331d48ef21bd1e26860123268441838ce75cc298d0f957d459ff2d6c180acca01b90bb3bf6199554b5abbb74d6255f2d57aac95948
7
+ data.tar.gz: 0b8fbeef52a71372088d8d2d24420e5336028ab9a443c5b537ebb55d1faf61a2cb4f69f855c91421175c277a0a2e5192aac39586673493a3a14eabf15cc6fa5d
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -1,5 +1,69 @@
1
1
  # Karafka Web Changelog
2
2
 
3
+ ## 0.11.0 (Unreleased)
4
+ - **[Feature]** Provide ability to pause/resume partitions on running consumers via the UI (Pro).
5
+ - **[Feature]** Provide ability to edit offsets of running consumers (Pro).
6
+ - **[Feature]** Support consumers that have mismatching schema.
7
+ - **[Feature]** Provide ability to navigate to a timestamp in the Explorer (Pro).
8
+ - **[Feature]** Provide ability to create and delete topics from the Web UI (Pro).
9
+ - **[Feature]** Provide ability to manage topics configuration from the Web UI (Pro).
10
+ - **[Feature]** Provide ability to manage topics partitioning from the Web UI (Pro).
11
+ - **[Feature]** Provide ability to inject custom CSS and JS to adjust the Web UI.
12
+ - [Enhancement] Support KIP-82 (header values of arrays).
13
+ - [Enhancement] Include crawl-based link validator to the CI to ensure no dead links are generated.
14
+ - [Enhancement] Allow for custom links in the navigation (Pro).
15
+ - [Enhancement] Optimize topic specific lookups (Pro).
16
+ - [Enhancement] Replace simple in-process metadata cache with user tracking version for multi-process deployments improvements.
17
+ - [Enhancement] Move web ui topics configuration into config.
18
+ - [Enhancement] Upgrade DaisyUI to 5.0 and Tailwind to 4.0.
19
+ - [Enhancement] Make consumer sampler/stats gathering compatible across debian/alpine/wolfi OSes (chen-anders)
20
+ - [Enhancement] Promote consumers lags statistics chart to OSS.
21
+ - [Enhancement] Promote consumers RSS statistics chart to OSS.
22
+ - [Enhancement] Remove state cache usage that complicated ability to manage topics.
23
+ - [Enhancement] Improve flash messages.
24
+ - [Enhancement] Improve handling of post-submit redirects.
25
+ - [Enhancement] Provide better support for fully transactional consumers.
26
+ - [Enhancement] Error out when `#setup` is called after `#enable!`.
27
+ - [Enhancement] Use more performant Kafka API calls to describe topics.
28
+ - [Enhancement] Inject `.action-NAME` and `.controller-NAME` body classes for usage with custom CSS and JS.
29
+ - [Enhancement] Improve error handling in the commanding iterator listener (Pro).
30
+ - [Change] Do not fully hide config-disabled features but make them disabled.
31
+ - [Change] Remove per-consumer process duplicated details from Subscriptions and Jobs tabs.
32
+ - [Refactor] Make sure all temporary topics have a `it-` prefix in their name.
33
+ - [Refactor] Introduce a `bin/verify_topics_naming` script to ensure proper test topics naming convention.
34
+ - [Fix] Closest time based lookup redirect fails.
35
+ - [Fix] Fi incorrect error type in commanding listener from `web.controlling.controller.error` to `web.commanding.listener.error` (Pro).
36
+ - [Fix] Topic named messages collides with the explorer routes.
37
+ - [Fix] Fix a case where live poll button enabling would not immediately start refreshes.
38
+ - [Fix] Fix negative message deserialization allocation stats.
39
+ - [Fix] Fix incorrect background color in some of the alert notices.
40
+ - [Fix] Support dark mode in error pages.
41
+ - [Fix] Fix incorrect names in some of the tables headers.
42
+ - [Fix] Normalize position of commanding buttons in regards to other UI elements.
43
+ - [Fix] Fix incorrect indentation of some of the info messages.
44
+ - [Fix] Fix tables headers inconsistent alignments.
45
+ - [Fix] Fix incorrect warning box header color in the dark mode.
46
+ - [Fix] Fix missing breadcrumbs on the consumers overview page.
47
+ - [Fix] Fix a case where disabled buttons would be enabled back too early.
48
+ - [Fix] The recent page breadcrumbs and offset id are not refreshed on change.
49
+ - [Fix] Direct URL access with too big partition causes librdkafka crash.
50
+ - [Fix] Fix incorrect breadcrumbs for pending consumer jobs.
51
+ - [Fix] Allow for using default search matchers in Karafka Web UI topics including Errors.
52
+ - [Fix] Ensure that when flashes or alerts are visible, pages are not auto-refreshed (would cause them to dissapear).
53
+ - [Fix] Time selector in the explorer does not disappear after clicking out.
54
+ - [Maintenance] Require `karafka-core` `>= 2.4.8` and `karafka` `>= 2.4.16`.
55
+ - [Maintenance] Update `AirDatepicker` to `3.6.0`.
56
+
57
+ ## 0.10.4 (2024-11-26)
58
+ - **[Breaking]** Drop Ruby `3.0` support according to the EOL schedule.
59
+ - [Enhancement] Extract producers tracking `sync_threshold` into an internal config.
60
+ - [Enhancement] Support complex Pro license loading strategies (Pro).
61
+ - [Enhancement] Change default `retention.ms` for the metrics topic to support Redpanda Cloud defaults (#450).
62
+ - [Enhancement] Include subscription group id in the consumers error tracking metadata.
63
+ - [Enhancement] Collect metadata details of low level client errors when error tracking.
64
+ - [Enhancement] Collect metadata details of low level listener errors when error tracking.
65
+ - [Fix] Toggle menu button post-turbo refresh stops working.
66
+
3
67
  ## 0.10.3 (2024-09-17)
4
68
  - **[Feature]** Introduce ability to brand Web UI with environment (Pro).
5
69
  - [Enhancement] Provide assignment status in the routing (Pro).
@@ -78,39 +142,6 @@
78
142
  - [Fix] License identifier `LGPL-3.0` is deprecated for SPDX (#2177).
79
143
  - [Fix] Do not include prettifying the payload for visibility in the resource computation cost.
80
144
 
81
- ### Upgrade Notes
82
-
83
- This is a **major** release that brings many things to the table.
84
-
85
- This version of the Karafka Web UI requires Karafka `>= 2.4.7`. You can either upgrade both or upgrade Karafka first and then the Web UI. Karafka `2.4.7` is also compatible with Web UI `0.9.1`; thus, you can upgrade one at a time.
86
-
87
- #### Configuration
88
-
89
- Visibility Filters have been reorganized into messages policies.
90
-
91
- Please read the [Policies API](https://karafka.io/docs/Pro-Web-UI-Policies/) documentation and convert your visibility filters to policies.
92
-
93
- Your existing message-related visibility filter policies should now be assigned to a new configuration:
94
-
95
- ```ruby
96
- Karafka::Web.setup do |config|
97
- config.ui.policies.messages = MyCustomRequestsPolicy.new
98
- end
99
- ```
100
-
101
- #### Deployment
102
-
103
- Because of the reporting schema update, it is recommended to:
104
-
105
- 0. Make sure you have upgraded to `0.9.1` before and that it was fully deployed.
106
- 1. Test the upgrade on a staging or dev environment.
107
- 3. The Web UI interface may throw 500 errors during the upgrade because of schema incompatibility (until Puma is deployed and all consumers redeployed). This will have no long-term effects and can be ignored.
108
- 4. `Karafka::Web::Errors::Processing::IncompatibleSchemaError` **is expected**. It is part of the Karafka Web UI zero-downtime deployment strategy. This error allows the Web UI materialization consumer to back off and wait for it to be replaced with a new one.
109
- 5. Perform a rolling deployment (or a regular one) and replace all consumer processes.
110
- 6. Update the Web UI Puma.
111
- 7. **No** CLI command execution is required.
112
- 8. Enjoy.
113
-
114
145
  ## 0.9.1 (2024-05-03)
115
146
  - [Fix] OSS `lag_stored` for not-subscribed consumers causes Web UI to crash.
116
147
 
@@ -148,12 +179,6 @@ Because of the reporting schema update, it is recommended to:
148
179
  - [Fix] Fix dangling `console.log`.
149
180
  - [Fix] Fix a case where consumer assignments would not be truncated on the consumers view.
150
181
 
151
- ### Upgrade Notes
152
-
153
- This is a **major** release that brings many things to the table.
154
-
155
- This version of the Karafka Web UI should be upgraded together with Karafka. All upgrade documentation for Karafka and Web UI `0.9` can be found [here](https://karafka.io/docs/Upgrades-2.4/).
156
-
157
182
  ## 0.8.2 (2024-02-16)
158
183
  - [Enhancement] Defer scheduler background thread creation until needed allowing for forks.
159
184
  - [Enhancement] Tag forks with fork indication + ppid reference when operating in swarm.
@@ -202,28 +227,6 @@ This version of the Karafka Web UI should be upgraded together with Karafka. All
202
227
  - [Change] Rename "Active subscriptions" to "Subscriptions" as process subscriptions are always active.
203
228
  - [Maintenance] Introduce granular subscription group contracts.
204
229
 
205
- ### Upgrade Notes
206
-
207
- This is a **major** release that brings many things to the table.
208
-
209
- #### Configuration
210
-
211
- **No** configuration changes are needed.
212
-
213
- #### Deployment
214
-
215
- Because of the reporting schema update, it is recommended to:
216
-
217
- 0. Make sure you have upgraded to `0.7.10` before and that it was fully deployed.
218
- 1. Test the upgrade on a staging or dev environment.
219
- 2. Starting from `0.7.0` Karafka Web UI supports rolling deploys, so there is no need to "stop the world".
220
- 3. The Web UI interface may throw 500 errors during the upgrade because of schema incompatibility (until Puma is deployed). This will have no long-term effects and can be ignored.
221
- 4. `Karafka::Web::Errors::Processing::IncompatibleSchemaError` **is expected**. It is part of the Karafka Web UI zero-downtime deployment strategy. This error allows the Web UI materialization consumer to back off and wait for it to be replaced with a new one.
222
- 5. Perform a rolling deployment (or a regular one) and replace all consumer processes.
223
- 6. Update the Web UI Puma.
224
- 7. **No** CLI command execution is required. Starting from this release (`0.8.0`), the Karafka Web UI contains an automatic schema migrator that allows it to automatically adjust internal topic data formats.
225
- 8. Enjoy.
226
-
227
230
  ## 0.7.10 (2023-10-31)
228
231
  - [Fix] Max LSO chart does not work as expected (#201)
229
232
 
@@ -255,14 +258,6 @@ Because of the reporting schema update, it is recommended to:
255
258
  - [Maintenance] Include license and copyrights notice for `timeago.js` that was missing in the JS min file.
256
259
  - [Refactor] Rename `ui.show_internal_topics` to `ui.visibility.internal_topics_display`
257
260
 
258
- ### Upgrade Notes
259
-
260
- **NO** rolling upgrade needed. Just configuration update.
261
-
262
- 1. If you are using `ui.visibility_filter` this option is now `ui.visibility.filter` (yes, only `.` difference).
263
- 2. If you are using a custom visibility filter, it requires now two extra methods: `#download?` and `#export?`. The default visibility filter allows both actions unless message is encrypted.
264
- 3. `ui.show_internal_topics` config option has been moved and renamed to `ui.visibility.internal_topics`.
265
-
266
261
  ## 0.7.4 (2023-09-19)
267
262
  - [Improvement] Skip aggregations on older schemas during upgrades. This only skips process-reports (that are going to be rolled) on the 5s window in case of an upgrade that should not be a rolling one anyhow. This simplifies the operations and minimizes the risk on breaking upgrades.
268
263
  - [Fix] Fix not working `ps` for macOS.
@@ -357,48 +352,6 @@ Because of the reporting schema update, it is recommended to:
357
352
  - [Refactor] Use Roda `custom_block_results` plugin for controllers results handling.
358
353
  - [Maintenance] Require `karafka` `2.2.0` due to fixes in the Iterator API and routing API extensions.
359
354
 
360
- ### Upgrade Notes
361
-
362
- This is a **major** release that brings many things to the table.
363
-
364
- #### Configuration
365
-
366
- Karafka Web UI now relies on Roda session management. Please configure the `ui.sessions.secret` key with a secret value string of at least 64 characters:
367
-
368
- ```ruby
369
- # Configure it BEFORE enabling
370
- Karafka::Web.setup do |config|
371
- # REPLACE THIS with your own value. You can use `SecureRandom.hex(64)` to generate it
372
- # You may want to set it per ENV
373
- config.ui.sessions.secret = 'REPLACE ME! b94b2215cc66371f2c34b7d0c0df1a010f83ca45 REPLACE ME!'
374
- end
375
-
376
- Karafka::Web.enable!
377
- ```
378
-
379
- #### Deployment
380
-
381
- Because of the reporting schema update and new web-ui topics introduction, it is recommended to:
382
-
383
- 0. Make sure you have upgraded to `0.6.3` before and that it was deployed. To all the environments you want to migrate to `0.7.0`.
384
- 1. Upgrade the codebase based on the below details.
385
- 2. **Stop** the consumer materializing Web-UI. Unless you are running a Web-UI dedicated consumer as recommended [here](https://karafka.io/docs/Web-UI-Development-vs-Production/), you will have to stop all the consumers. This is **crucial** because of schema changes. `karafka-web` `0.7.0` introduces the detection of schema changes, so this step should not be needed in the future.
386
- 3. Run a migration command: `bundle exec karafka-web migrate` that will create missing states and missing topics. You **need** to run it for each of the environments where you use Karafka Web UI.
387
- 4. Deploy **all** the Karafka consumer processes (`karafka server`).
388
- 5. Deploy the Web update to your web server and check that everything is OK by visiting the status page.
389
-
390
- Please note that if you decide to use the updated Web UI with not updated consumers, you may hit a 500 error, or offset-related data may not be displayed correctly.
391
-
392
- #### Code and API changes
393
-
394
- 1. `bundle exec karafka-web install` is now a single-purpose command that should run **only** when installing the Web-UI for the first time.
395
- 2. For creating needed topics and states per environment and during upgrades, please use the newly introduced non-destructive `bundle exec karafka-web migrate`. It will assess changes required and will apply only those.
396
- 3. Is no longer`ui.decrypt` has been replaced with `ui.visibility_filter` API. This API by default also does not decrypt data. To change this behavior, please implement your visibility filter as presented in our documentation.
397
- 4. Karafka Web UI `0.7.0` introduces an in-memory topics cache for some views. This means that rapid topics changes (repartitions/new topics) may be visible up to 5 minutes after those changes.
398
- 3. `ui.decrypt` setting has been replaced with `ui.visibility_filter` API. This API by default also does not decrypt data. To change this behavior, please implement your visibility filter as presented in our documentation.
399
- 4. Karafka Web-UI `0.7.0` introduces an in-memory topics cache for some views. This means that rapid topics changes (repartitions/new topics) may be visible up to 5 minutes after those changes.
400
- 5. Karafka Web UI requires now a new topic called `karafka_consumers_metrics`. If you use strict topic creation and ACL policies, please make sure it exists and that Karafka can both read and write to it.
401
-
402
355
  ## 0.6.3 (2023-07-22)
403
356
  - [Fix] Remove files from 0.7.0 accidentally added to the release.
404
357
 
@@ -436,38 +389,6 @@ Please note that if you decide to use the updated Web UI with not updated consum
436
389
  - [Refactor] Remove not used and redundant partials.
437
390
  - [Maintenance] Require `karafka` `2.1.4` due to fixes in metrics usage for workless flows.
438
391
 
439
- ### Upgrade Notes
440
-
441
- Because of the reporting schema update, it is recommended to:
442
-
443
- - First, deploy **all** the Karafka consumer processes (`karafka server`)
444
- - Deploy the Web update to your web server.
445
-
446
- Please note that if you decide to use the updated Web UI with not updated consumers, you may hit a 500 error or offset related data may not be displayed correctly.
447
-
448
- #### Disabling producers instrumentation
449
-
450
- Producers error tracking **is** enabled by default. If you want to opt out of it, you need to disable the producers' instrumentation by clearing the producers' listeners:
451
-
452
- ```ruby
453
- Karafka::Web.setup do |config|
454
- # Do not instrument producers with web-ui listeners
455
- config.tracking.producers.listeners = []
456
- end
457
- ```
458
-
459
- #### Custom producers instrumentation
460
-
461
- By default, Karafka Web-UI instruments only `Karafka.producer`. If you use producers initialized by yourself, you need to connect the listeners to them manually. To do so, run the following code:
462
-
463
- ```ruby
464
- ::Karafka::Web.config.tracking.producers.listeners.each do |listener|
465
- MY_CUSTOM_PRODUCER.monitor.subscribe(listener)
466
- end
467
- ```
468
-
469
- Please make sure **not** to do it for the default `Karafka.producer` because it is instrumented out of the box.
470
-
471
392
  ## 0.5.2 (2023-05-22)
472
393
  - [Improvement] Label ActiveJob consumers jobs with `active_job` tag.
473
394
  - [Improvement] Label Virtual Partitions consumers with `virtual` tag.
@@ -484,15 +405,6 @@ Please make sure **not** to do it for the default `Karafka.producer` because it
484
405
  - [Fix] Fix misspelling of word `committed`.
485
406
  - [Fix] Shutdown and revocation jobs statistics extraction crashes when idle initialized without messages (#53)
486
407
 
487
- ### Upgrade Notes
488
-
489
- Because of the reporting schema change, it is recommended to:
490
-
491
- - First, deploy **all** the Karafka consumer processes (`karafka server`)
492
- - Deploy the Web update to your web server.
493
-
494
- Please note that if you decide to use the updated Web UI with not updated consumers, you may hit a 500 error or offset related data may not be displayed correctly.
495
-
496
408
  ## 0.4.1 (2023-04-12)
497
409
  - [Improvement] Replace the "x time ago" in the code explorer with an exact date (`2023-04-12 10:16:48.596 +0200 `).
498
410
  - [Improvement] When hovering over a message timestamp, a label with raw numeric timestamp will be presented.
@@ -505,26 +417,11 @@ Please note that if you decide to use the updated Web UI with not updated consum
505
417
  - [Fix] Add missing support for using multiple subscription groups within a single consumer group.
506
418
  - [Fix] Mask SASL credentials in topic routing view (#46)
507
419
 
508
- ### Upgrade Notes
509
-
510
- Because of the reporting schema change, it is recommended to:
511
-
512
- - First, deploy **all** the Karafka consumer processes (`karafka server`)
513
- - Deploy the Web update to your web server.
514
-
515
- Please note that if you decide to use the updated Web UI with not updated consumers, you may hit a 500 error.
516
-
517
420
  ## 0.3.1 (2023-03-27)
518
421
  - [Fix] Add missing retention policy for states topic.
519
422
  - [Fix] Fix display of compacted messages placeholders for offsets lower than low watermark.
520
423
  - [Fix] Fix invalid pagination per page count.
521
424
 
522
- ### Upgrade Notes
523
-
524
- If upgrading from `0.3.0`, nothing.
525
-
526
- If upgrading from lower, please follow `0.3.0` upgrade procedure.
527
-
528
425
  ## 0.3.0 (2023-03-27)
529
426
  - **[Feature]** Support paginating over compacted topics partitions.
530
427
  - [Improvement] Display watermark offsets in the errors view.
@@ -544,15 +441,6 @@ If upgrading from lower, please follow `0.3.0` upgrade procedure.
544
441
  - [Maintenance] Remove compatibility fallbacks for job and process tags (#1342)
545
442
  - [Maintenance] Extract base sampler for tracking and web.
546
443
 
547
- ### Upgrade Notes
548
-
549
- Because of the removal of compatibility fallbacks for some metrics fetches, it is recommended to:
550
-
551
- - First, deploy **all** the Karafka consumer processes (`karafka server`)
552
- - Deploy the Web update to your web server.
553
-
554
- Please note that if you decide to use the updated Web UI with not updated consumers, you may hit a 500 error.
555
-
556
444
  ## 0.2.5 (2023-03-17)
557
445
  - [Fix] Critical instrumentation async errors intercepted by Web don't have JID for job removal (#1366)
558
446
 
data/Gemfile CHANGED
@@ -6,10 +6,14 @@ plugin 'diffend'
6
6
 
7
7
  gemspec
8
8
 
9
+ gem 'karafka'
10
+
9
11
  group :test do
10
12
  gem 'byebug'
11
13
  gem 'factory_bot'
12
14
  gem 'fugit'
15
+ # Needed for links extraction for visits verification
16
+ gem 'nokogiri'
13
17
  gem 'ostruct'
14
18
  gem 'rack-test'
15
19
  gem 'rspec'
data/Gemfile.lock CHANGED
@@ -1,18 +1,19 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- karafka-web (0.10.3)
4
+ karafka-web (0.11.0)
5
5
  erubi (~> 1.4)
6
- karafka (>= 2.4.10, < 2.5.0)
7
- karafka-core (>= 2.4.0, < 2.5.0)
6
+ karafka (>= 2.5.0.beta1, < 2.6.0)
7
+ karafka-core (>= 2.5.0, < 2.6.0)
8
8
  roda (~> 3.68, >= 3.69)
9
9
  tilt (~> 2.0)
10
10
 
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- activesupport (7.2.1)
14
+ activesupport (7.2.2.1)
15
15
  base64
16
+ benchmark (>= 0.3)
16
17
  bigdecimal
17
18
  concurrent-ruby (~> 1.0, >= 1.3.1)
18
19
  connection_pool (>= 2.2.5)
@@ -23,89 +24,132 @@ GEM
23
24
  securerandom (>= 0.3)
24
25
  tzinfo (~> 2.0, >= 2.0.5)
25
26
  base64 (0.2.0)
26
- bigdecimal (3.1.8)
27
- byebug (11.1.3)
28
- concurrent-ruby (1.3.4)
29
- connection_pool (2.4.1)
30
- diff-lcs (1.5.1)
31
- docile (1.4.0)
32
- drb (2.2.1)
33
- erubi (1.13.0)
27
+ benchmark (0.4.0)
28
+ bigdecimal (3.1.9)
29
+ byebug (12.0.0)
30
+ concurrent-ruby (1.3.5)
31
+ connection_pool (2.5.3)
32
+ diff-lcs (1.6.2)
33
+ docile (1.4.1)
34
+ drb (2.2.3)
35
+ erubi (1.13.1)
34
36
  et-orbi (1.2.11)
35
37
  tzinfo
36
- factory_bot (6.5.0)
37
- activesupport (>= 5.0.0)
38
- ffi (1.17.0)
38
+ factory_bot (6.5.1)
39
+ activesupport (>= 6.1.0)
40
+ ffi (1.17.2)
41
+ ffi (1.17.2-aarch64-linux-gnu)
42
+ ffi (1.17.2-aarch64-linux-musl)
43
+ ffi (1.17.2-arm-linux-gnu)
44
+ ffi (1.17.2-arm-linux-musl)
45
+ ffi (1.17.2-arm64-darwin)
46
+ ffi (1.17.2-x86-linux-gnu)
47
+ ffi (1.17.2-x86-linux-musl)
48
+ ffi (1.17.2-x86_64-darwin)
49
+ ffi (1.17.2-x86_64-linux-gnu)
50
+ ffi (1.17.2-x86_64-linux-musl)
39
51
  fugit (1.11.1)
40
52
  et-orbi (~> 1, >= 1.2.11)
41
53
  raabro (~> 1.4)
42
- i18n (1.14.5)
54
+ i18n (1.14.7)
43
55
  concurrent-ruby (~> 1.0)
44
- karafka (2.4.10)
56
+ karafka (2.5.0.beta1)
45
57
  base64 (~> 0.2)
46
- karafka-core (>= 2.4.3, < 2.5.0)
47
- karafka-rdkafka (>= 0.17.2)
48
- waterdrop (>= 2.7.3, < 3.0.0)
58
+ karafka-core (>= 2.5.0, < 2.6.0)
59
+ karafka-rdkafka (>= 0.19.2)
60
+ waterdrop (>= 2.8.3, < 3.0.0)
49
61
  zeitwerk (~> 2.3)
50
- karafka-core (2.4.4)
51
- karafka-rdkafka (>= 0.15.0, < 0.18.0)
52
- karafka-rdkafka (0.17.3)
62
+ karafka-core (2.5.0)
63
+ karafka-rdkafka (>= 0.19.2, < 0.21.0)
64
+ logger (>= 1.6.0)
65
+ karafka-rdkafka (0.19.2)
53
66
  ffi (~> 1.15)
54
67
  mini_portile2 (~> 2.6)
55
68
  rake (> 12)
56
- logger (1.6.1)
57
- mini_portile2 (2.8.7)
58
- minitest (5.25.1)
59
- ostruct (0.6.0)
69
+ logger (1.7.0)
70
+ mini_portile2 (2.8.9)
71
+ minitest (5.25.5)
72
+ nokogiri (1.18.8)
73
+ mini_portile2 (~> 2.8.2)
74
+ racc (~> 1.4)
75
+ nokogiri (1.18.8-aarch64-linux-gnu)
76
+ racc (~> 1.4)
77
+ nokogiri (1.18.8-aarch64-linux-musl)
78
+ racc (~> 1.4)
79
+ nokogiri (1.18.8-arm-linux-gnu)
80
+ racc (~> 1.4)
81
+ nokogiri (1.18.8-arm-linux-musl)
82
+ racc (~> 1.4)
83
+ nokogiri (1.18.8-arm64-darwin)
84
+ racc (~> 1.4)
85
+ nokogiri (1.18.8-x86_64-darwin)
86
+ racc (~> 1.4)
87
+ nokogiri (1.18.8-x86_64-linux-gnu)
88
+ racc (~> 1.4)
89
+ nokogiri (1.18.8-x86_64-linux-musl)
90
+ racc (~> 1.4)
91
+ ostruct (0.6.1)
60
92
  raabro (1.4.0)
61
- rack (3.1.4)
62
- rack-test (2.1.0)
93
+ racc (1.8.1)
94
+ rack (3.1.15)
95
+ rack-test (2.2.0)
63
96
  rack (>= 1.3)
64
97
  rackup (0.2.3)
65
98
  rack (>= 3.0.0.beta1)
66
99
  webrick
67
100
  rake (13.2.1)
68
- roda (3.81.0)
101
+ roda (3.92.0)
69
102
  rack
70
103
  rspec (3.13.0)
71
104
  rspec-core (~> 3.13.0)
72
105
  rspec-expectations (~> 3.13.0)
73
106
  rspec-mocks (~> 3.13.0)
74
- rspec-core (3.13.0)
107
+ rspec-core (3.13.3)
75
108
  rspec-support (~> 3.13.0)
76
- rspec-expectations (3.13.1)
109
+ rspec-expectations (3.13.4)
77
110
  diff-lcs (>= 1.2.0, < 2.0)
78
111
  rspec-support (~> 3.13.0)
79
- rspec-mocks (3.13.1)
112
+ rspec-mocks (3.13.4)
80
113
  diff-lcs (>= 1.2.0, < 2.0)
81
114
  rspec-support (~> 3.13.0)
82
- rspec-support (3.13.1)
83
- securerandom (0.3.1)
115
+ rspec-support (3.13.3)
116
+ securerandom (0.4.1)
84
117
  simplecov (0.22.0)
85
118
  docile (~> 1.1)
86
119
  simplecov-html (~> 0.11)
87
120
  simplecov_json_formatter (~> 0.1)
88
- simplecov-html (0.12.3)
121
+ simplecov-html (0.13.1)
89
122
  simplecov_json_formatter (0.1.4)
90
- tilt (2.4.0)
123
+ tilt (2.6.0)
91
124
  tzinfo (2.0.6)
92
125
  concurrent-ruby (~> 1.0)
93
- waterdrop (2.7.4)
94
- karafka-core (>= 2.4.3, < 3.0.0)
95
- karafka-rdkafka (>= 0.15.1)
126
+ waterdrop (2.8.3)
127
+ karafka-core (>= 2.4.9, < 3.0.0)
128
+ karafka-rdkafka (>= 0.19.1)
96
129
  zeitwerk (~> 2.3)
97
- webrick (1.8.1)
98
- zeitwerk (2.6.17)
130
+ webrick (1.9.1)
131
+ zeitwerk (2.6.18)
99
132
 
100
133
  PLATFORMS
134
+ aarch64-linux-gnu
135
+ aarch64-linux-musl
136
+ arm-linux-gnu
137
+ arm-linux-musl
138
+ arm64-darwin
101
139
  ruby
102
- x86_64-linux
140
+ x86-linux-gnu
141
+ x86-linux-musl
142
+ x86_64-darwin
143
+ x86_64-linux-gnu
144
+ x86_64-linux-musl
103
145
 
104
146
  DEPENDENCIES
105
147
  byebug
106
148
  factory_bot
107
149
  fugit
150
+ karafka
108
151
  karafka-web!
152
+ nokogiri
109
153
  ostruct
110
154
  rack-test
111
155
  rackup (~> 0.2)
@@ -113,4 +157,4 @@ DEPENDENCIES
113
157
  simplecov
114
158
 
115
159
  BUNDLED WITH
116
- 2.5.14
160
+ 2.6.9
data/LICENSE CHANGED
@@ -6,8 +6,12 @@ for license text.
6
6
 
7
7
  Karafka and Karafka Web have also commercial-friendly license, commercial support and commercial components.
8
8
 
9
- All of the commercial components are present in the lib/karafka/pro and lib/karafka/web/pro
10
- directory of this repository and their usage requires commercial license agreement.
9
+ All of the commercial components and code are present in the:
10
+
11
+ - `lib/karafka/web/pro`
12
+ - `spec/lib/karafka/web/pro`
13
+
14
+ directories of this repository and their usage requires commercial license agreement.
11
15
 
12
16
  By sending a pull request to the pro components, you are agreeing to transfer the copyright of your
13
17
  code to Maciej Mensfeld.
@@ -0,0 +1,35 @@
1
+ #!/bin/bash
2
+
3
+ # Checks Kafka logs for unsupported warning patterns
4
+ # Only specified warnings are allowed, all others should trigger failure
5
+
6
+ allowed_patterns=(
7
+ "Performing controller activation"
8
+ "registered with feature metadata.version"
9
+ "Replayed TopicRecord for"
10
+ "Replayed PartitionRecord for"
11
+ "Previous leader None and previous leader epoch"
12
+ "Creating new"
13
+ )
14
+
15
+ # Get all warnings
16
+ warnings=$(docker logs --since=0 kafka | grep WARN)
17
+ exit_code=0
18
+
19
+ while IFS= read -r line; do
20
+ allowed=0
21
+ for pattern in "${allowed_patterns[@]}"; do
22
+ if echo "$line" | grep -q "$pattern"; then
23
+ allowed=1
24
+ break
25
+ fi
26
+ done
27
+
28
+ if [ $allowed -eq 0 ]; then
29
+ echo "Unexpected warning found:"
30
+ echo "$line"
31
+ exit_code=1
32
+ fi
33
+ done <<< "$warnings"
34
+
35
+ exit $exit_code
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # This script verifies that we do not create (except few needed exceptions) test topics that do
4
+ # not start with the "it-" prefix which is our standard.
5
+ #
6
+ # This ensures that we can clearly identify all test topics for removal in case of doing dev work
7
+ # on a long-lived Kafka cluster without option to fully reset it.
8
+ #
9
+ # It also ensures we have one convention that we can follow.
10
+
11
+ require 'bundler'
12
+ Bundler.setup(:default, :test, :integrations)
13
+ require 'karafka'
14
+
15
+ module Karafka
16
+ class App
17
+ setup do |config|
18
+ config.kafka = { 'bootstrap.servers': '127.0.0.1:9092' }
19
+ end
20
+ end
21
+ end
22
+
23
+ # Please note that "__" starting topics are not here by default. It is expected.
24
+ invalid = Karafka::Admin
25
+ .cluster_info
26
+ .topics
27
+ .map { |topic| topic[:topic_name] }
28
+ .select { |topic| !topic.start_with?('it-') }
29
+ .select { |topic| topic.length <= 6 }
30
+
31
+ invalid.each do |invalid_name|
32
+ puts "#{invalid_name} does not start with the \"it-\" prefix"
33
+ end
34
+
35
+ exit invalid.empty? ? 0 : 1
@@ -22,6 +22,7 @@ en:
22
22
  ui.branding.type_format: 'must be :info, :error, :warning, :success, :primary or :secondary'
23
23
  ui.branding.label_format: must be false or non-empty string
24
24
  ui.branding.notice_format: must be false or non-empty string
25
+ ui.branding.nav_extras_format: must be an ERB template code or a path to one
25
26
 
26
27
  search_form:
27
28
  missing: needs to be present
data/docker-compose.yml CHANGED
@@ -3,7 +3,7 @@ version: '2'
3
3
  services:
4
4
  kafka:
5
5
  container_name: kafka
6
- image: confluentinc/cp-kafka:7.7.1
6
+ image: confluentinc/cp-kafka:7.9.1
7
7
 
8
8
  ports:
9
9
  - 9092:9092
data/gulpfile.js CHANGED
@@ -3,7 +3,6 @@ const concat = require('gulp-concat');
3
3
  const uglify = require('gulp-uglify');
4
4
  const through2 = require('through2');
5
5
  const path = require('path');
6
- const cleanCSS = require('gulp-clean-css');
7
6
  const sourcemaps = require('gulp-sourcemaps');
8
7
 
9
8
  // Check if we are in development mode
@@ -64,7 +63,6 @@ gulp.task('styles', function() {
64
63
  return gulp.src(cssFiles)
65
64
  .pipe(isDev ? sourcemaps.init() : through2.obj()) // Initialize sourcemaps in dev
66
65
  .pipe(concat('application.min.css'))
67
- .pipe(cleanCSS({ level: 2 })) // Minify CSS
68
66
  .pipe(isDev ? sourcemaps.write('.') : through2.obj()) // Write sourcemaps in dev
69
67
  .pipe(gulp.dest('lib/karafka/web/ui/public/stylesheets'));
70
68
  });