karafka-web 0.10.4 → 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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +54 -176
- data/Gemfile +4 -0
- data/Gemfile.lock +87 -43
- data/LICENSE +6 -2
- data/bin/verify_kafka_warnings +35 -0
- data/bin/verify_topics_naming +35 -0
- data/config/locales/pro_errors.yml +1 -0
- data/docker-compose.yml +1 -1
- data/gulpfile.js +0 -2
- data/karafka-web.gemspec +2 -2
- data/lib/karafka/web/config.rb +80 -9
- data/lib/karafka/web/contracts/config.rb +44 -5
- data/lib/karafka/web/errors.rb +10 -0
- data/lib/karafka/web/management/actions/create_initial_states.rb +6 -6
- data/lib/karafka/web/management/actions/create_topics.rb +30 -64
- data/lib/karafka/web/management/actions/delete_topics.rb +5 -5
- data/lib/karafka/web/management/actions/enable.rb +5 -5
- data/lib/karafka/web/pro/commanding/commands/base.rb +37 -13
- data/lib/karafka/web/pro/commanding/commands/consumers/quiet.rb +33 -0
- data/lib/karafka/web/pro/commanding/commands/consumers/stop.rb +32 -0
- data/lib/karafka/web/pro/commanding/commands/consumers/trace.rb +37 -0
- data/lib/karafka/web/pro/commanding/commands/partitions/pause.rb +30 -0
- data/lib/karafka/web/pro/commanding/commands/partitions/resume.rb +30 -0
- data/lib/karafka/web/pro/commanding/commands/partitions/seek.rb +30 -0
- data/lib/karafka/web/pro/commanding/config.rb +6 -10
- data/lib/karafka/web/pro/commanding/contracts/config.rb +2 -10
- data/lib/karafka/web/pro/commanding/dispatcher.rb +45 -24
- data/lib/karafka/web/pro/commanding/handlers/partitions/commands/base.rb +67 -0
- data/lib/karafka/web/pro/commanding/handlers/partitions/commands/pause.rb +44 -0
- data/lib/karafka/web/pro/commanding/handlers/partitions/commands/resume.rb +29 -0
- data/lib/karafka/web/pro/commanding/handlers/partitions/commands/seek.rb +86 -0
- data/lib/karafka/web/pro/commanding/handlers/partitions/executor.rb +56 -0
- data/lib/karafka/web/pro/commanding/handlers/partitions/listener.rb +55 -0
- data/lib/karafka/web/pro/commanding/handlers/partitions/tracker.rb +62 -0
- data/lib/karafka/web/pro/commanding/listener.rb +4 -12
- data/lib/karafka/web/pro/commanding/manager.rb +36 -24
- data/lib/karafka/web/pro/commanding/matcher.rb +7 -17
- data/lib/karafka/web/pro/commanding/request.rb +39 -0
- data/lib/karafka/web/pro/commanding.rb +2 -10
- data/lib/karafka/web/pro/loader.rb +13 -10
- data/lib/karafka/web/pro/ui/app.rb +31 -390
- data/lib/karafka/web/pro/ui/controllers/base_controller.rb +8 -10
- data/lib/karafka/web/pro/ui/controllers/cluster_controller.rb +2 -10
- data/lib/karafka/web/pro/ui/controllers/consumers/base_controller.rb +21 -0
- data/lib/karafka/web/pro/ui/controllers/consumers/commanding_controller.rb +148 -0
- data/lib/karafka/web/pro/ui/controllers/consumers/commands_controller.rb +96 -0
- data/lib/karafka/web/pro/ui/controllers/consumers/consumers_controller.rb +101 -0
- data/lib/karafka/web/pro/ui/controllers/consumers/controls_controller.rb +36 -0
- data/lib/karafka/web/pro/ui/controllers/consumers/jobs_controller.rb +57 -0
- data/lib/karafka/web/pro/ui/controllers/consumers/partitions/base_controller.rb +86 -0
- data/lib/karafka/web/pro/ui/controllers/consumers/partitions/offsets_controller.rb +75 -0
- data/lib/karafka/web/pro/ui/controllers/consumers/partitions/pauses_controller.rb +110 -0
- data/lib/karafka/web/pro/ui/controllers/dashboard_controller.rb +2 -10
- data/lib/karafka/web/pro/ui/controllers/dlq_controller.rb +2 -10
- data/lib/karafka/web/pro/ui/controllers/errors_controller.rb +3 -11
- data/lib/karafka/web/pro/ui/controllers/explorer/base_controller.rb +21 -0
- data/lib/karafka/web/pro/ui/controllers/explorer/explorer_controller.rb +215 -0
- data/lib/karafka/web/pro/ui/controllers/explorer/messages_controller.rb +145 -0
- data/lib/karafka/web/pro/ui/controllers/explorer/search_controller.rb +68 -0
- data/lib/karafka/web/pro/ui/controllers/health_controller.rb +2 -10
- data/lib/karafka/web/pro/ui/controllers/jobs_controller.rb +2 -10
- data/lib/karafka/web/pro/ui/controllers/recurring_tasks_controller.rb +12 -13
- data/lib/karafka/web/pro/ui/controllers/routing_controller.rb +2 -10
- data/lib/karafka/web/pro/ui/controllers/scheduled_messages/base_controller.rb +2 -10
- data/lib/karafka/web/pro/ui/controllers/scheduled_messages/explorer_controller.rb +8 -16
- data/lib/karafka/web/pro/ui/controllers/scheduled_messages/messages_controller.rb +9 -15
- data/lib/karafka/web/pro/ui/controllers/scheduled_messages/schedules_controller.rb +2 -10
- data/lib/karafka/web/pro/ui/controllers/status_controller.rb +2 -10
- data/lib/karafka/web/pro/ui/controllers/support_controller.rb +2 -10
- data/lib/karafka/web/pro/ui/controllers/topics/base_controller.rb +21 -0
- data/lib/karafka/web/pro/ui/controllers/topics/configs_controller.rb +86 -0
- data/lib/karafka/web/pro/ui/controllers/topics/distributions_controller.rb +91 -0
- data/lib/karafka/web/pro/ui/controllers/topics/offsets_controller.rb +55 -0
- data/lib/karafka/web/pro/ui/controllers/topics/replications_controller.rb +37 -0
- data/lib/karafka/web/pro/ui/controllers/topics/topics_controller.rb +101 -0
- data/lib/karafka/web/pro/ui/controllers/ux_controller.rb +2 -10
- data/lib/karafka/web/pro/ui/lib/branding/config.rb +2 -10
- data/lib/karafka/web/pro/ui/lib/branding/contracts/config.rb +2 -10
- data/lib/karafka/web/pro/ui/lib/branding.rb +2 -10
- data/lib/karafka/web/pro/ui/lib/features.rb +53 -0
- data/lib/karafka/web/pro/ui/lib/patterns_detector.rb +2 -10
- data/lib/karafka/web/pro/ui/lib/policies/config.rb +2 -10
- data/lib/karafka/web/pro/ui/lib/policies/contracts/config.rb +2 -10
- data/lib/karafka/web/pro/ui/lib/policies/messages.rb +2 -10
- data/lib/karafka/web/pro/ui/lib/policies/requests.rb +2 -10
- data/lib/karafka/web/pro/ui/lib/policies.rb +2 -10
- data/lib/karafka/web/pro/ui/lib/safe_runner.rb +5 -0
- data/lib/karafka/web/pro/ui/lib/search/config.rb +2 -10
- data/lib/karafka/web/pro/ui/lib/search/contracts/config.rb +2 -10
- data/lib/karafka/web/pro/ui/lib/search/contracts/form.rb +2 -10
- data/lib/karafka/web/pro/ui/lib/search/matchers/base.rb +2 -10
- data/lib/karafka/web/pro/ui/lib/search/matchers/raw_header_includes.rb +10 -11
- data/lib/karafka/web/pro/ui/lib/search/matchers/raw_key_includes.rb +2 -10
- data/lib/karafka/web/pro/ui/lib/search/matchers/raw_payload_includes.rb +23 -11
- data/lib/karafka/web/pro/ui/lib/search/normalizer.rb +2 -10
- data/lib/karafka/web/pro/ui/lib/search/runner.rb +3 -11
- data/lib/karafka/web/pro/ui/lib/search.rb +2 -10
- data/lib/karafka/web/pro/ui/routes/base.rb +19 -0
- data/lib/karafka/web/pro/ui/routes/cluster.rb +37 -0
- data/lib/karafka/web/pro/ui/routes/consumers.rb +145 -0
- data/lib/karafka/web/pro/ui/routes/dashboard.rb +25 -0
- data/lib/karafka/web/pro/ui/routes/dlq.rb +24 -0
- data/lib/karafka/web/pro/ui/routes/errors.rb +39 -0
- data/lib/karafka/web/pro/ui/routes/explorer.rb +118 -0
- data/lib/karafka/web/pro/ui/routes/health.rb +47 -0
- data/lib/karafka/web/pro/ui/routes/jobs.rb +33 -0
- data/lib/karafka/web/pro/ui/routes/recurring_tasks.rb +59 -0
- data/lib/karafka/web/pro/ui/routes/routing.rb +31 -0
- data/lib/karafka/web/pro/ui/routes/scheduled_messages.rb +75 -0
- data/lib/karafka/web/pro/ui/routes/status.rb +24 -0
- data/lib/karafka/web/pro/ui/routes/support.rb +24 -0
- data/lib/karafka/web/pro/ui/routes/topics.rb +90 -0
- data/lib/karafka/web/pro/ui/routes/ux.rb +24 -0
- data/lib/karafka/web/pro/ui/views/cluster/_breadcrumbs.erb +3 -0
- data/lib/karafka/web/pro/ui/views/cluster/_broker.erb +3 -0
- data/lib/karafka/web/pro/ui/views/cluster/_config.erb +3 -0
- data/lib/karafka/web/pro/ui/views/cluster/_tabs.erb +3 -0
- data/lib/karafka/web/pro/ui/views/cluster/index.erb +4 -1
- data/lib/karafka/web/pro/ui/views/cluster/show.erb +3 -0
- data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_backtrace.erb +3 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/_breadcrumbs.erb +24 -0
- data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_command.erb +22 -6
- data/lib/karafka/web/pro/ui/views/consumers/commands/_command_details.erb +4 -0
- data/lib/karafka/web/pro/ui/views/consumers/commands/_empty.erb +6 -0
- data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_incompatible_schema.erb +3 -0
- data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_metadata.erb +4 -1
- data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_table.erb +5 -2
- data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/index.erb +7 -4
- data/lib/karafka/web/pro/ui/views/consumers/commands/show.erb +32 -0
- data/lib/karafka/web/pro/ui/views/consumers/consumers/_breadcrumbs.erb +46 -0
- data/lib/karafka/web/pro/ui/views/consumers/consumers/_consumer.erb +59 -0
- data/lib/karafka/web/pro/ui/views/consumers/consumers/_consumer_performance.erb +71 -0
- data/lib/karafka/web/pro/ui/views/consumers/consumers/_tabs.erb +38 -0
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_commands.erb +80 -0
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_consumer_group.erb +11 -0
- data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_metrics.erb +3 -0
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_no_subscriptions.erb +10 -0
- data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_partition.erb +16 -0
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_partition_edit_options.erb +33 -0
- data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_stopped.erb +3 -0
- data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_subscription_group.erb +7 -3
- data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_tabs.erb +7 -4
- data/lib/karafka/web/pro/ui/views/consumers/consumers/details.erb +15 -0
- data/lib/karafka/web/pro/ui/views/consumers/{index.erb → consumers/index.erb} +6 -3
- data/lib/karafka/web/pro/ui/views/consumers/{performance.erb → consumers/performance.erb} +6 -3
- data/lib/karafka/web/pro/ui/views/consumers/consumers/subscriptions.erb +24 -0
- data/lib/karafka/web/pro/ui/views/consumers/controls/_breadcrumbs.erb +16 -0
- data/lib/karafka/web/pro/ui/views/consumers/controls/_controls.erb +107 -0
- data/lib/karafka/web/pro/ui/views/consumers/{controls.erb → controls/index.erb} +8 -5
- data/lib/karafka/web/pro/ui/views/consumers/jobs/_breadcrumbs.erb +36 -0
- data/lib/karafka/web/pro/ui/views/consumers/{consumer → jobs}/_job.erb +3 -0
- data/lib/karafka/web/pro/ui/views/consumers/{consumer → jobs}/_no_jobs.erb +3 -0
- data/lib/karafka/web/pro/ui/views/consumers/{pending_jobs.erb → jobs/pending.erb} +7 -8
- data/lib/karafka/web/pro/ui/views/consumers/{running_jobs.erb → jobs/running.erb} +7 -8
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_basics.erb +77 -0
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_breadcrumbs.erb +58 -0
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_form.erb +109 -0
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_not_running_error.erb +16 -0
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_running_warning.erb +15 -0
- data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/edit.erb +12 -0
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_active_not_editable.erb +22 -0
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_adjusting_warning.erb +27 -0
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_breadcrumbs.erb +60 -0
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_edit_form.erb +59 -0
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_lrj_not_manageable.erb +24 -0
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_new_form.erb +78 -0
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_not_running.erb +16 -0
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/edit.erb +20 -0
- data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/new.erb +16 -0
- data/lib/karafka/web/pro/ui/views/dashboard/index.erb +4 -1
- data/lib/karafka/web/pro/ui/views/dlq/_breadcrumbs.erb +3 -0
- data/lib/karafka/web/pro/ui/views/dlq/_no_topics.erb +3 -0
- data/lib/karafka/web/pro/ui/views/dlq/_topic.erb +4 -1
- data/lib/karafka/web/pro/ui/views/dlq/index.erb +3 -0
- data/lib/karafka/web/pro/ui/views/errors/_breadcrumbs.erb +3 -0
- data/lib/karafka/web/pro/ui/views/errors/_error.erb +3 -0
- data/lib/karafka/web/pro/ui/views/errors/_partition_option.erb +3 -0
- data/lib/karafka/web/pro/ui/views/errors/_selector.erb +3 -0
- data/lib/karafka/web/pro/ui/views/errors/_table.erb +4 -1
- data/lib/karafka/web/pro/ui/views/errors/index.erb +6 -3
- data/lib/karafka/web/pro/ui/views/errors/partition.erb +5 -2
- data/lib/karafka/web/pro/ui/views/errors/show.erb +3 -0
- data/lib/karafka/web/pro/ui/views/explorer/{_breadcrumbs.erb → explorer/_breadcrumbs.erb} +7 -4
- data/lib/karafka/web/pro/ui/views/explorer/{_failed_deserialization.erb → explorer/_failed_deserialization.erb} +3 -0
- data/lib/karafka/web/pro/ui/views/explorer/{_filtered.erb → explorer/_filtered.erb} +3 -0
- data/lib/karafka/web/pro/ui/views/explorer/{_message.erb → explorer/_message.erb} +4 -1
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_no_topics.erb +4 -0
- data/lib/karafka/web/pro/ui/views/explorer/{_partition_option.erb → explorer/_partition_option.erb} +4 -1
- data/lib/karafka/web/pro/ui/views/explorer/{_selector.erb → explorer/_selector.erb} +4 -1
- data/lib/karafka/web/pro/ui/views/explorer/explorer/_topic.erb +13 -0
- data/lib/karafka/web/pro/ui/views/explorer/explorer/index.erb +17 -0
- data/lib/karafka/web/pro/ui/views/explorer/{message → explorer/message}/_metadata.erb +10 -7
- data/lib/karafka/web/pro/ui/views/explorer/{message → explorer/message}/_payload.erb +6 -3
- data/lib/karafka/web/pro/ui/views/explorer/{message → explorer/message}/_resources_utilization.erb +7 -4
- data/lib/karafka/web/pro/ui/views/explorer/{message → explorer/message}/_too_big_to_be_displayed.erb +3 -0
- data/lib/karafka/web/pro/ui/views/explorer/{messages → explorer/messages}/_detail.erb +3 -0
- data/lib/karafka/web/pro/ui/views/explorer/explorer/messages/_headers.erb +51 -0
- data/lib/karafka/web/pro/ui/views/explorer/{messages → explorer/messages}/_key.erb +3 -0
- data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_cleaned.erb +6 -0
- data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_empty.erb +6 -0
- data/lib/karafka/web/pro/ui/views/explorer/{partition → explorer/partition}/_messages.erb +4 -1
- data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_time_selector.erb +16 -0
- data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_timestamp_selector.erb +33 -0
- data/lib/karafka/web/pro/ui/views/explorer/{partition.erb → explorer/partition.erb} +24 -17
- data/lib/karafka/web/pro/ui/views/explorer/{show.erb → explorer/show.erb} +17 -19
- data/lib/karafka/web/pro/ui/views/explorer/{topic → explorer/topic}/_actions.erb +5 -2
- data/lib/karafka/web/pro/ui/views/explorer/explorer/topic/_empty.erb +6 -0
- data/lib/karafka/web/pro/ui/views/explorer/{topic → explorer/topic}/_limited.erb +3 -0
- data/lib/karafka/web/pro/ui/views/explorer/{topic.erb → explorer/topic.erb} +7 -4
- data/lib/karafka/web/pro/ui/views/explorer/messages/_breadcrumbs.erb +32 -0
- data/lib/karafka/web/pro/ui/views/explorer/messages/forward.erb +143 -0
- data/lib/karafka/web/pro/ui/views/explorer/search/_breadcrumbs.erb +4 -0
- data/lib/karafka/web/pro/ui/views/explorer/search/_fix_errors.erb +6 -0
- data/lib/karafka/web/pro/ui/views/{search → explorer/search}/_metadata.erb +3 -0
- data/lib/karafka/web/pro/ui/views/explorer/search/_no_results.erb +6 -0
- data/lib/karafka/web/pro/ui/views/{search → explorer/search}/_no_search_criteria.erb +3 -0
- data/lib/karafka/web/pro/ui/views/{search → explorer/search}/_search_criteria.erb +3 -0
- data/lib/karafka/web/pro/ui/views/{search → explorer/search}/_search_modal.erb +5 -2
- data/lib/karafka/web/pro/ui/views/explorer/search/_timeout.erb +6 -0
- data/lib/karafka/web/pro/ui/views/explorer/search/index.erb +32 -0
- data/lib/karafka/web/pro/ui/views/health/_breadcrumbs.erb +3 -0
- data/lib/karafka/web/pro/ui/views/health/_no_data.erb +3 -0
- data/lib/karafka/web/pro/ui/views/health/_partition.erb +16 -1
- data/lib/karafka/web/pro/ui/views/health/_partition_lags.erb +3 -0
- data/lib/karafka/web/pro/ui/views/health/_partition_offset.erb +3 -0
- data/lib/karafka/web/pro/ui/views/health/_partition_times.erb +3 -0
- data/lib/karafka/web/pro/ui/views/health/_table_metadata.erb +4 -1
- data/lib/karafka/web/pro/ui/views/health/_tabs.erb +3 -0
- data/lib/karafka/web/pro/ui/views/health/changes.erb +4 -1
- data/lib/karafka/web/pro/ui/views/health/cluster_lags.erb +3 -0
- data/lib/karafka/web/pro/ui/views/health/lags.erb +5 -2
- data/lib/karafka/web/pro/ui/views/health/offsets.erb +4 -1
- data/lib/karafka/web/pro/ui/views/health/overview.erb +8 -3
- data/lib/karafka/web/pro/ui/views/jobs/_job.erb +50 -38
- data/lib/karafka/web/pro/ui/views/jobs/_no_jobs.erb +3 -0
- data/lib/karafka/web/pro/ui/views/jobs/pending.erb +4 -1
- data/lib/karafka/web/pro/ui/views/jobs/running.erb +4 -1
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_actions.erb +3 -0
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_batch_actions.erb +3 -0
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_breadcrumbs.erb +3 -0
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_log.erb +3 -0
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_not_active.erb +3 -0
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_tabs.erb +3 -0
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_task.erb +3 -0
- data/lib/karafka/web/pro/ui/views/recurring_tasks/logs.erb +3 -0
- data/lib/karafka/web/pro/ui/views/recurring_tasks/schedule.erb +3 -0
- data/lib/karafka/web/pro/ui/views/routing/_consumer_group.erb +3 -0
- data/lib/karafka/web/pro/ui/views/routing/_detail.erb +3 -0
- data/lib/karafka/web/pro/ui/views/routing/_topic.erb +3 -0
- data/lib/karafka/web/pro/ui/views/routing/index.erb +3 -0
- data/lib/karafka/web/pro/ui/views/routing/show.erb +3 -0
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_breadcrumbs.erb +6 -3
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_key.erb +3 -0
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_message.erb +4 -1
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_messages.erb +3 -0
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/partition.erb +23 -16
- data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/topic.erb +6 -3
- data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/_breadcrumbs.erb +3 -0
- data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/_no_groups.erb +3 -0
- data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/index.erb +4 -1
- data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/show.erb +3 -0
- data/lib/karafka/web/pro/ui/views/shared/_navigation.erb +25 -17
- data/lib/karafka/web/pro/ui/views/shared/_rdkafka_form_error_alert_box.erb +16 -0
- data/lib/karafka/web/pro/ui/views/shared/branding/_label.erb +3 -0
- data/lib/karafka/web/pro/ui/views/shared/branding/_notice.erb +3 -0
- data/lib/karafka/web/pro/ui/views/topics/configs/_breadcrumbs.erb +34 -0
- data/lib/karafka/web/pro/ui/views/topics/configs/_config.erb +26 -0
- data/lib/karafka/web/pro/ui/views/topics/configs/_delete_button.erb +13 -0
- data/lib/karafka/web/pro/ui/views/topics/configs/_edit_form.erb +50 -0
- data/lib/karafka/web/pro/ui/views/topics/configs/_edit_plan.erb +16 -0
- data/lib/karafka/web/pro/ui/views/topics/configs/_edit_warning.erb +12 -0
- data/lib/karafka/web/pro/ui/views/topics/configs/edit.erb +16 -0
- data/lib/karafka/web/pro/ui/views/topics/{config.erb → configs/index.erb} +9 -3
- data/lib/karafka/web/pro/ui/views/topics/distributions/_add_partitions_button.erb +13 -0
- data/lib/karafka/web/pro/ui/views/topics/{distribution → distributions}/_badges.erb +3 -0
- data/lib/karafka/web/pro/ui/views/topics/distributions/_breadcrumbs.erb +28 -0
- data/lib/karafka/web/pro/ui/views/topics/{distribution → distributions}/_chart.erb +3 -0
- data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_form.erb +47 -0
- data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_hints.erb +15 -0
- data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_warnings.erb +14 -0
- data/lib/karafka/web/pro/ui/views/topics/distributions/_empty_partitions.erb +4 -0
- data/lib/karafka/web/pro/ui/views/topics/{distribution → distributions}/_limited.erb +3 -0
- data/lib/karafka/web/pro/ui/views/topics/distributions/_partition.erb +13 -0
- data/lib/karafka/web/pro/ui/views/topics/distributions/edit.erb +16 -0
- data/lib/karafka/web/pro/ui/views/topics/{distribution.erb → distributions/show.erb} +11 -7
- data/lib/karafka/web/pro/ui/views/topics/offsets/_breadcrumbs.erb +20 -0
- data/lib/karafka/web/pro/ui/views/topics/offsets/_partition.erb +13 -0
- data/lib/karafka/web/pro/ui/views/topics/{offsets.erb → offsets/show.erb} +6 -3
- data/lib/karafka/web/pro/ui/views/topics/replications/_breadcrumbs.erb +20 -0
- data/lib/karafka/web/pro/ui/views/topics/{_partition.erb → replications/_partition.erb} +4 -1
- data/lib/karafka/web/pro/ui/views/topics/{replication.erb → replications/show.erb} +6 -3
- data/lib/karafka/web/pro/ui/views/topics/topics/_breadcrumbs.erb +32 -0
- data/lib/karafka/web/pro/ui/views/topics/topics/_create_button.erb +13 -0
- data/lib/karafka/web/pro/ui/views/topics/topics/_create_hints.erb +15 -0
- data/lib/karafka/web/pro/ui/views/topics/topics/_delete_form.erb +36 -0
- data/lib/karafka/web/pro/ui/views/topics/topics/_delete_hints.erb +15 -0
- data/lib/karafka/web/pro/ui/views/topics/topics/_delete_warning.erb +13 -0
- data/lib/karafka/web/pro/ui/views/topics/topics/_new_form.erb +80 -0
- data/lib/karafka/web/pro/ui/views/topics/{_tabs.erb → topics/_tabs.erb} +7 -4
- data/lib/karafka/web/pro/ui/views/topics/topics/_topic.erb +12 -0
- data/lib/karafka/web/pro/ui/views/topics/topics/edit.erb +10 -0
- data/lib/karafka/web/pro/ui/views/topics/topics/index.erb +19 -0
- data/lib/karafka/web/pro/ui/views/topics/topics/new.erb +12 -0
- data/lib/karafka/web/processing/consumers/metrics.rb +1 -1
- data/lib/karafka/web/processing/consumers/state.rb +1 -1
- data/lib/karafka/web/processing/publisher.rb +4 -4
- data/lib/karafka/web/tracking/consumers/contracts/partition.rb +1 -0
- data/lib/karafka/web/tracking/consumers/listeners/pausing.rb +2 -2
- data/lib/karafka/web/tracking/consumers/listeners/transactions.rb +44 -0
- data/lib/karafka/web/tracking/consumers/reporter.rb +2 -2
- data/lib/karafka/web/tracking/consumers/sampler.rb +81 -14
- data/lib/karafka/web/tracking/helpers/sysconf.rb +33 -0
- data/lib/karafka/web/tracking/producers/reporter.rb +1 -1
- data/lib/karafka/web/ui/app.rb +19 -112
- data/lib/karafka/web/ui/base.rb +63 -4
- data/lib/karafka/web/ui/controllers/base_controller.rb +43 -1
- data/lib/karafka/web/ui/controllers/cluster_controller.rb +5 -2
- data/lib/karafka/web/ui/controllers/errors_controller.rb +1 -1
- data/lib/karafka/web/ui/controllers/requests/execution_wrapper.rb +52 -0
- data/lib/karafka/web/ui/controllers/requests/hookable.rb +99 -0
- data/lib/karafka/web/ui/controllers/requests/params.rb +39 -1
- data/lib/karafka/web/ui/controllers/responses/redirect.rb +0 -5
- data/lib/karafka/web/ui/controllers/status_controller.rb +3 -0
- data/lib/karafka/web/ui/helpers/application_helper.rb +10 -1
- data/lib/karafka/web/ui/helpers/paths_helper.rb +54 -10
- data/lib/karafka/web/ui/lib/admin.rb +1 -1
- data/lib/karafka/web/ui/lib/cache.rb +135 -0
- data/lib/karafka/web/ui/models/broker.rb +1 -2
- data/lib/karafka/web/ui/models/cluster_info.rb +15 -21
- data/lib/karafka/web/ui/models/consumers_metrics.rb +1 -1
- data/lib/karafka/web/ui/models/consumers_state.rb +1 -1
- data/lib/karafka/web/ui/models/counters.rb +1 -1
- data/lib/karafka/web/ui/models/health.rb +9 -7
- data/lib/karafka/web/ui/models/process.rb +14 -0
- data/lib/karafka/web/ui/models/processes.rb +2 -2
- data/lib/karafka/web/ui/models/recurring_tasks/schedule.rb +1 -1
- data/lib/karafka/web/ui/models/status.rb +27 -8
- data/lib/karafka/web/ui/models/topic.rb +1 -2
- data/lib/karafka/web/ui/public/javascripts/application.js +8 -98
- data/lib/karafka/web/ui/public/javascripts/application.min.js +12 -4
- data/lib/karafka/web/ui/public/javascripts/application.min.js.br +0 -0
- data/lib/karafka/web/ui/public/javascripts/application.min.js.gz +0 -0
- data/lib/karafka/web/ui/public/javascripts/components/action_confirmation_manager.js +30 -0
- data/lib/karafka/web/ui/public/javascripts/components/alerts.js +39 -0
- data/lib/karafka/web/ui/public/javascripts/components/button_lock_manager.js +50 -0
- data/lib/karafka/web/ui/public/javascripts/components/live_poll.js +71 -19
- data/lib/karafka/web/ui/public/javascripts/components/message_republish_manager.js +50 -0
- data/lib/karafka/web/ui/public/javascripts/components/page_title_tracker.js +21 -0
- data/lib/karafka/web/ui/public/javascripts/components/partition_redirect_manager.js +21 -0
- data/lib/karafka/web/ui/public/javascripts/components/time_ago_manager.js +25 -0
- data/lib/karafka/web/ui/public/javascripts/components/timestamp_selector.js +30 -0
- data/lib/karafka/web/ui/public/javascripts/libs/datepicker.js +2 -2
- data/lib/karafka/web/ui/public/stylesheets/application.css +30 -0
- data/lib/karafka/web/ui/public/stylesheets/application.min.css +5122 -13
- data/lib/karafka/web/ui/public/stylesheets/application.min.css.br +0 -0
- data/lib/karafka/web/ui/public/stylesheets/application.min.css.gz +0 -0
- data/lib/karafka/web/ui/public/stylesheets/libs/highlight_dark.min.css.gz +0 -0
- data/lib/karafka/web/ui/public/stylesheets/libs/highlight_light.min.css.gz +0 -0
- data/lib/karafka/web/ui/public/stylesheets/libs/tailwind.css +512 -213
- data/lib/karafka/web/ui/routes/assets.rb +53 -0
- data/lib/karafka/web/ui/routes/base.rb +36 -0
- data/lib/karafka/web/ui/routes/cluster.rb +28 -0
- data/lib/karafka/web/ui/routes/consumers.rb +35 -0
- data/lib/karafka/web/ui/routes/dashboard.rb +20 -0
- data/lib/karafka/web/ui/routes/errors.rb +26 -0
- data/lib/karafka/web/ui/routes/jobs.rb +28 -0
- data/lib/karafka/web/ui/routes/pro_only.rb +27 -0
- data/lib/karafka/web/ui/routes/routing.rb +26 -0
- data/lib/karafka/web/ui/routes/status.rb +19 -0
- data/lib/karafka/web/ui/routes/support.rb +19 -0
- data/lib/karafka/web/ui/routes/ux.rb +19 -0
- data/lib/karafka/web/ui/views/cluster/_partition.erb +2 -2
- data/lib/karafka/web/ui/views/cluster/brokers.erb +1 -1
- data/lib/karafka/web/ui/views/consumers/_breadcrumbs.erb +7 -1
- data/lib/karafka/web/ui/views/consumers/_consumer.erb +39 -30
- data/lib/karafka/web/ui/views/consumers/_incompatible.erb +13 -0
- data/lib/karafka/web/ui/views/consumers/_no_consumers.erb +2 -2
- data/lib/karafka/web/ui/views/consumers/_tabs.erb +4 -4
- data/lib/karafka/web/ui/views/consumers/index.erb +1 -1
- data/lib/karafka/web/ui/views/dashboard/_feature_pro.erb +1 -1
- data/lib/karafka/web/ui/views/dashboard/_not_enough_data.erb +2 -2
- data/lib/karafka/web/ui/views/dashboard/_ranges_selector.erb +1 -1
- data/lib/karafka/web/ui/views/dashboard/index.erb +6 -49
- data/lib/karafka/web/ui/views/errors/_detail.erb +3 -3
- data/lib/karafka/web/ui/views/errors/index.erb +1 -1
- data/lib/karafka/web/ui/views/jobs/_job.erb +38 -29
- data/lib/karafka/web/ui/views/jobs/pending.erb +1 -1
- data/lib/karafka/web/ui/views/jobs/running.erb +1 -1
- data/lib/karafka/web/ui/views/layout.erb +7 -5
- data/lib/karafka/web/ui/views/shared/_become_pro.erb +1 -1
- data/lib/karafka/web/ui/views/shared/_brand.erb +1 -1
- data/lib/karafka/web/ui/views/shared/_breadcrumbs.erb +1 -1
- data/lib/karafka/web/ui/views/shared/_content.erb +1 -1
- data/lib/karafka/web/ui/views/shared/_controls.erb +10 -3
- data/lib/karafka/web/ui/views/shared/_custom_nav.erb +9 -0
- data/lib/karafka/web/ui/views/shared/_flashes.erb +3 -5
- data/lib/karafka/web/ui/views/shared/_header.erb +25 -2
- data/lib/karafka/web/ui/views/shared/_navigation.erb +17 -15
- data/lib/karafka/web/ui/views/shared/alerts/_error.erb +8 -0
- data/lib/karafka/web/ui/views/shared/alerts/_info.erb +8 -0
- data/lib/karafka/web/ui/views/shared/alerts/_primary.erb +8 -0
- data/lib/karafka/web/ui/views/shared/alerts/_secondary.erb +8 -0
- data/lib/karafka/web/ui/views/shared/alerts/_success.erb +8 -0
- data/lib/karafka/web/ui/views/shared/alerts/_warning.erb +8 -0
- data/lib/karafka/web/ui/views/shared/exceptions/incompatible_schema.erb +34 -0
- data/lib/karafka/web/ui/views/shared/exceptions/not_allowed.erb +4 -0
- data/lib/karafka/web/ui/views/shared/exceptions/not_found.erb +5 -1
- data/lib/karafka/web/ui/views/shared/exceptions/pro_only.erb +4 -0
- data/lib/karafka/web/ui/views/shared/icons/_arrow_left.erb +3 -0
- data/lib/karafka/web/ui/views/shared/icons/_arrow_up_tray.erb +3 -0
- data/lib/karafka/web/ui/views/shared/icons/_clock.erb +3 -0
- data/lib/karafka/web/ui/views/shared/icons/_pencil.erb +3 -0
- data/lib/karafka/web/ui/views/shared/icons/_pencil_square.erb +3 -0
- data/lib/karafka/web/ui/views/shared/icons/_play_pause.erb +3 -0
- data/lib/karafka/web/ui/views/shared/icons/_plus.erb +3 -0
- data/lib/karafka/web/ui/views/shared/icons/_trash.erb +3 -0
- data/lib/karafka/web/ui/views/status/failures/_live_reporting.erb +1 -1
- data/lib/karafka/web/ui/views/status/failures/_partitions.erb +3 -3
- data/lib/karafka/web/ui/views/status/failures/_state_calculation.erb +2 -2
- data/lib/karafka/web/ui/views/status/info/_components.erb +6 -6
- data/lib/karafka/web/ui/views/status/show.erb +15 -0
- data/lib/karafka/web/ui/views/status/warnings/_consumers_schemas.erb +31 -0
- data/lib/karafka/web/ui/views/ux/_icons.erb +1 -1
- data/lib/karafka/web/ui/views/ux/_status_rows.erb +6 -0
- data/lib/karafka/web/version.rb +1 -1
- data/lib/karafka/web.rb +3 -0
- data/package-lock.json +776 -1208
- data/package.json +3 -4
- data/postcss.config.js +1 -2
- data/renovate.json +13 -1
- data/tailwind.config.js +0 -4
- data.tar.gz.sig +0 -0
- metadata +232 -108
- metadata.gz.sig +0 -0
- data/lib/karafka/web/pro/commanding/commands/quiet.rb +0 -34
- data/lib/karafka/web/pro/commanding/commands/stop.rb +0 -34
- data/lib/karafka/web/pro/commanding/commands/trace.rb +0 -41
- data/lib/karafka/web/pro/ui/controllers/commanding_controller.rb +0 -118
- data/lib/karafka/web/pro/ui/controllers/commands_controller.rb +0 -96
- data/lib/karafka/web/pro/ui/controllers/consumers_controller.rb +0 -138
- data/lib/karafka/web/pro/ui/controllers/explorer_controller.rb +0 -220
- data/lib/karafka/web/pro/ui/controllers/messages_controller.rb +0 -107
- data/lib/karafka/web/pro/ui/controllers/search_controller.rb +0 -73
- data/lib/karafka/web/pro/ui/controllers/topics_controller.rb +0 -130
- data/lib/karafka/web/pro/ui/views/commands/_breadcrumbs.erb +0 -21
- data/lib/karafka/web/pro/ui/views/commands/_command_details.erb +0 -1
- data/lib/karafka/web/pro/ui/views/commands/_empty.erb +0 -3
- data/lib/karafka/web/pro/ui/views/commands/show.erb +0 -33
- data/lib/karafka/web/pro/ui/views/consumers/_breadcrumbs.erb +0 -55
- data/lib/karafka/web/pro/ui/views/consumers/_consumer.erb +0 -47
- data/lib/karafka/web/pro/ui/views/consumers/_consumer_controls.erb +0 -95
- data/lib/karafka/web/pro/ui/views/consumers/_consumer_performance.erb +0 -59
- data/lib/karafka/web/pro/ui/views/consumers/_tabs.erb +0 -33
- data/lib/karafka/web/pro/ui/views/consumers/consumer/_commands.erb +0 -72
- data/lib/karafka/web/pro/ui/views/consumers/consumer/_consumer_group.erb +0 -8
- data/lib/karafka/web/pro/ui/views/consumers/consumer/_no_subscriptions.erb +0 -7
- data/lib/karafka/web/pro/ui/views/consumers/details.erb +0 -13
- data/lib/karafka/web/pro/ui/views/consumers/subscriptions.erb +0 -25
- data/lib/karafka/web/pro/ui/views/explorer/_no_topics.erb +0 -1
- data/lib/karafka/web/pro/ui/views/explorer/_topic.erb +0 -10
- data/lib/karafka/web/pro/ui/views/explorer/index.erb +0 -14
- data/lib/karafka/web/pro/ui/views/explorer/messages/_headers.erb +0 -33
- data/lib/karafka/web/pro/ui/views/explorer/partition/_cleaned.erb +0 -3
- data/lib/karafka/web/pro/ui/views/explorer/partition/_empty.erb +0 -3
- data/lib/karafka/web/pro/ui/views/explorer/topic/_empty.erb +0 -3
- data/lib/karafka/web/pro/ui/views/search/_breadcrumbs.erb +0 -1
- data/lib/karafka/web/pro/ui/views/search/_fix_errors.erb +0 -3
- data/lib/karafka/web/pro/ui/views/search/_no_results.erb +0 -3
- data/lib/karafka/web/pro/ui/views/search/_timeout.erb +0 -3
- data/lib/karafka/web/pro/ui/views/search/index.erb +0 -29
- data/lib/karafka/web/pro/ui/views/topics/_breadcrumbs.erb +0 -45
- data/lib/karafka/web/pro/ui/views/topics/_partition_offsets.erb +0 -10
- data/lib/karafka/web/pro/ui/views/topics/_topic.erb +0 -9
- data/lib/karafka/web/pro/ui/views/topics/distribution/_empty_partitions.erb +0 -1
- data/lib/karafka/web/pro/ui/views/topics/distribution/_partition.erb +0 -10
- data/lib/karafka/web/pro/ui/views/topics/index.erb +0 -14
- data/lib/karafka/web/ui/lib/ttl_cache.rb +0 -82
@@ -0,0 +1,77 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<div class="grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-4 gap-4 mb-6 mt-6">
|
5
|
+
<div class="card-metric">
|
6
|
+
<h3>Basic Info</h3>
|
7
|
+
<ul>
|
8
|
+
<li>
|
9
|
+
Process ID:
|
10
|
+
<%== badge_primary @process.id %>
|
11
|
+
</li>
|
12
|
+
<li>
|
13
|
+
Topic:
|
14
|
+
<%== badge_info @topic %>
|
15
|
+
</li>
|
16
|
+
<li>
|
17
|
+
Partition:
|
18
|
+
<%== badge_info @partition_id %>
|
19
|
+
</li>
|
20
|
+
</ul>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
<div class="card-metric">
|
24
|
+
<h3>Consumer Details</h3>
|
25
|
+
<ul>
|
26
|
+
<li>
|
27
|
+
Consumer Group:
|
28
|
+
<%== badge_secondary @consumer_group.id %>
|
29
|
+
</li>
|
30
|
+
<li>
|
31
|
+
Subscription Group:
|
32
|
+
<%== badge_secondary @subscription_group.id %>
|
33
|
+
</li>
|
34
|
+
<li>
|
35
|
+
Poll State:
|
36
|
+
<%== poll_state_with_change_time_label(@partition_stats.poll_state, @partition_stats.poll_state_ch) %>
|
37
|
+
</li>
|
38
|
+
</ul>
|
39
|
+
</div>
|
40
|
+
|
41
|
+
<div class="card-metric">
|
42
|
+
<h3>Current Position</h3>
|
43
|
+
<ul>
|
44
|
+
<li>
|
45
|
+
Committed Offset:
|
46
|
+
<%== badge_secondary(normalized_metric(@partition_stats.committed_offset)) %>
|
47
|
+
</li>
|
48
|
+
<li>
|
49
|
+
Stored Offset:
|
50
|
+
<%== badge_secondary(normalized_metric(@partition_stats.stored_offset)) %>
|
51
|
+
</li>
|
52
|
+
<li>
|
53
|
+
Lag:
|
54
|
+
|
55
|
+
<%== badge_secondary(normalized_metric(@partition_stats.lag_hybrid)) %>
|
56
|
+
</li>
|
57
|
+
</ul>
|
58
|
+
</div>
|
59
|
+
|
60
|
+
<div class="card-metric">
|
61
|
+
<h3>Partition Details</h3>
|
62
|
+
<ul>
|
63
|
+
<li>
|
64
|
+
High Offset:
|
65
|
+
<%== badge_info(normalized_metric(@partition_stats.hi_offset)) %>
|
66
|
+
</li>
|
67
|
+
<li>
|
68
|
+
Low Offset:
|
69
|
+
<%== badge_info(normalized_metric(@partition_stats.lo_offset)) %>
|
70
|
+
</li>
|
71
|
+
<li>
|
72
|
+
EOF Offset:
|
73
|
+
<%== badge_info(normalized_metric(@partition_stats.eof_offset)) %>
|
74
|
+
</li>
|
75
|
+
</ul>
|
76
|
+
</div>
|
77
|
+
</div>
|
@@ -0,0 +1,58 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<li>
|
5
|
+
<a href="<%= consumers_path('overview') %>">
|
6
|
+
Consumers
|
7
|
+
</a>
|
8
|
+
</li>
|
9
|
+
|
10
|
+
<li>
|
11
|
+
<a href="<%= consumer_path(@process.id, 'subscriptions') %>">
|
12
|
+
<%== truncate(@process.id, strategy: :middle) %>
|
13
|
+
</a>
|
14
|
+
</li>
|
15
|
+
|
16
|
+
<% if @subscription_group_id %>
|
17
|
+
<li>
|
18
|
+
<a href="<%= consumer_path(@process.id, "subscriptions##{@subscription_group_id}") %>">
|
19
|
+
<%= @subscription_group_id %>
|
20
|
+
</a>
|
21
|
+
</li>
|
22
|
+
|
23
|
+
<%
|
24
|
+
edit_path = consumer_path(
|
25
|
+
@process.id,
|
26
|
+
'partitions',
|
27
|
+
@subscription_group_id,
|
28
|
+
@topic,
|
29
|
+
@partition_id,
|
30
|
+
'offset',
|
31
|
+
'edit'
|
32
|
+
)
|
33
|
+
%>
|
34
|
+
|
35
|
+
<li>
|
36
|
+
<a href="<%= edit_path %>">
|
37
|
+
<%= @topic %>
|
38
|
+
</a>
|
39
|
+
</li>
|
40
|
+
|
41
|
+
<li>
|
42
|
+
<a href="<%= edit_path %>">
|
43
|
+
<%= @partition_id %>
|
44
|
+
</a>
|
45
|
+
</li>
|
46
|
+
|
47
|
+
<li>
|
48
|
+
<a href="<%= edit_path %>">
|
49
|
+
Offsets
|
50
|
+
</a>
|
51
|
+
</li>
|
52
|
+
|
53
|
+
<li>
|
54
|
+
<a href="<%= edit_path %>">
|
55
|
+
Edit
|
56
|
+
</a>
|
57
|
+
</li>
|
58
|
+
<% end %>
|
@@ -0,0 +1,109 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<div class="card bg-base-100 mt-4">
|
5
|
+
<div class="card-body">
|
6
|
+
<%
|
7
|
+
update_path = consumer_path(
|
8
|
+
@process.id,
|
9
|
+
'partitions',
|
10
|
+
@subscription_group.id,
|
11
|
+
@topic,
|
12
|
+
@partition_id,
|
13
|
+
'offset'
|
14
|
+
)
|
15
|
+
%>
|
16
|
+
|
17
|
+
<form
|
18
|
+
class="space-y-4 mt-4 w-full"
|
19
|
+
method="post"
|
20
|
+
action="<%= update_path %>"
|
21
|
+
>
|
22
|
+
<%== csrf_tag(update_path, 'PUT') %>
|
23
|
+
<input type="hidden" name="_method" value="PUT">
|
24
|
+
<input type="hidden" name="referrer" value="<%= request.referrer %>">
|
25
|
+
|
26
|
+
<div class="flex items-center w-full mb-8">
|
27
|
+
<label class="w-1/4 text-gray-700">New Offset:</label>
|
28
|
+
<div class="w-3/4">
|
29
|
+
<input
|
30
|
+
type="number"
|
31
|
+
min="<%== @partition_stats.lo_offset %>"
|
32
|
+
max="<%= @partition_stats.hi_offset %>"
|
33
|
+
name="offset"
|
34
|
+
class="block input input-bordered w-full"
|
35
|
+
placeholder="Enter new offset position"
|
36
|
+
required
|
37
|
+
/>
|
38
|
+
</div>
|
39
|
+
</div>
|
40
|
+
|
41
|
+
<div class="flex items-center w-full">
|
42
|
+
<label class="w-1/4 text-gray-700">Prevent Overtaking:</label>
|
43
|
+
<div class="w-3/4">
|
44
|
+
<label class="flex items-center gap-4 cursor-pointer">
|
45
|
+
<input type="hidden" name="prevent_overtaking" value="off">
|
46
|
+
|
47
|
+
<input
|
48
|
+
name="prevent_overtaking"
|
49
|
+
type="checkbox"
|
50
|
+
class="checkbox checkbox-warning"
|
51
|
+
checked
|
52
|
+
/>
|
53
|
+
|
54
|
+
<div class="space-y-1">
|
55
|
+
<div class="flex items-center gap-2">
|
56
|
+
Only adjust if consumer hasn't moved beyond requested offset already
|
57
|
+
</div>
|
58
|
+
<div class="text-sm text-gray-500">
|
59
|
+
Prevents seeking back in case the consumer moved forward
|
60
|
+
</div>
|
61
|
+
</div>
|
62
|
+
</label>
|
63
|
+
</div>
|
64
|
+
</div>
|
65
|
+
|
66
|
+
<div class="flex items-center w-full mt-4 <%= 'text-muted' if @topic_lrj %>">
|
67
|
+
<label class="w-1/4 text-gray-700">Resume Immediately:</label>
|
68
|
+
<div class="w-3/4">
|
69
|
+
<label class="flex items-center gap-4 cursor-pointer">
|
70
|
+
<input type="hidden" name="force_resume" value="off">
|
71
|
+
<input
|
72
|
+
name="force_resume"
|
73
|
+
type="checkbox"
|
74
|
+
class="checkbox checkbox-warning"
|
75
|
+
<%= 'disabled' if @topic_lrj %>
|
76
|
+
/>
|
77
|
+
<div class="space-y-1">
|
78
|
+
<div class="flex items-center gap-2">
|
79
|
+
If partition is currently paused, resume processing immediately
|
80
|
+
</div>
|
81
|
+
<div class="text-sm text-gray-500">
|
82
|
+
<% if @topic_lrj %>
|
83
|
+
Option not available for Long-Running Jobs topics
|
84
|
+
<% elsif @routing_topic %>
|
85
|
+
Has no effect if partition is not paused
|
86
|
+
<% else %>
|
87
|
+
Option not available, since topic not visible in the Web UI routing
|
88
|
+
<% end %>
|
89
|
+
</div>
|
90
|
+
</div>
|
91
|
+
</label>
|
92
|
+
</div>
|
93
|
+
</div>
|
94
|
+
|
95
|
+
<div class="fieldset text-center mt-6 ">
|
96
|
+
<div class="flex gap-4 justify-end">
|
97
|
+
<a href="<%= root_path('health', 'overview') %>" class="btn btn-ghost">
|
98
|
+
Cancel
|
99
|
+
</a>
|
100
|
+
|
101
|
+
<button type="submit" class="btn btn-warning gap-2 btn-lockable">
|
102
|
+
<%== icon(:pencil_square) %>
|
103
|
+
Adjust Offset
|
104
|
+
</button>
|
105
|
+
</div>
|
106
|
+
</div>
|
107
|
+
</form>
|
108
|
+
</div>
|
109
|
+
</div>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<% alert_box_error 'This Operation Cannot Be Performed' do %>
|
5
|
+
<p>
|
6
|
+
Consumer offsets can only be modified using Web UI when the consumer is in a running state.
|
7
|
+
</p>
|
8
|
+
<% end %>
|
9
|
+
|
10
|
+
<div class="fieldset text-center mt-6">
|
11
|
+
<div class="flex justify-end">
|
12
|
+
<a href="<%= root_path('health', 'overview') %>" class="btn btn-ghost">
|
13
|
+
Cancel
|
14
|
+
</a>
|
15
|
+
</div>
|
16
|
+
</div>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<% alert_box_warning('Running Consumer Process Operation') do %>
|
5
|
+
<p>
|
6
|
+
You are about to modify offset for an actively running consumer. This operation:
|
7
|
+
</p>
|
8
|
+
|
9
|
+
<ul class="list-disc ml-6 mt-2">
|
10
|
+
<li>Takes effect during the next poll operation</li>
|
11
|
+
<li>May affect message processing</li>
|
12
|
+
<li>Cannot be undone</li>
|
13
|
+
<li>Will take effect only if the current process still owns the assignment</li>
|
14
|
+
</ul>
|
15
|
+
<% end %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<% view_title "#{@process.id} - Offset Adjustment - #{@subscription_group_id} - #{@topic}##{@partition_id}" %>
|
5
|
+
|
6
|
+
<% if @process.status != 'running' %>
|
7
|
+
<%== partial 'consumers/partitions/offsets/not_running_error' %>
|
8
|
+
<% else %>
|
9
|
+
<%== partial 'consumers/partitions/offsets/running_warning' %>
|
10
|
+
<%== partial 'consumers/partitions/offsets/basics' %>
|
11
|
+
<%== partial 'consumers/partitions/offsets/form' %>
|
12
|
+
<% end %>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<% alert_box_error 'Cannot Configure Pause Settings' do %>
|
5
|
+
<p class="mb-2">
|
6
|
+
This partition is currently active and processing messages.
|
7
|
+
</p>
|
8
|
+
<p class="mb-2">
|
9
|
+
Pause settings can only be configured for partitions that are already in a paused state.
|
10
|
+
</p>
|
11
|
+
<p>
|
12
|
+
You can pause this partition first using the pause action from the partitions list.
|
13
|
+
</p>
|
14
|
+
<% end %>
|
15
|
+
|
16
|
+
<div class="fieldset text-center mt-6">
|
17
|
+
<div class="flex justify-end">
|
18
|
+
<a href="<%= root_path('health', 'overview') %>" class="btn btn-ghost">
|
19
|
+
Cancel
|
20
|
+
</a>
|
21
|
+
</div>
|
22
|
+
</div>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<% alert_box_warning('Running Consumer Process Operation') do %>
|
5
|
+
<p>
|
6
|
+
You are about to adjust pause for an actively running consumer. This operation:
|
7
|
+
</p>
|
8
|
+
|
9
|
+
<ul class="list-disc ml-6 mt-2 mb-2">
|
10
|
+
<li>Takes effect during the next poll operation</li>
|
11
|
+
<li>May affect message processing</li>
|
12
|
+
<li>Cannot be undone</li>
|
13
|
+
<li>Will take effect only if the current process still owns the assignment</li>
|
14
|
+
</ul>
|
15
|
+
|
16
|
+
<hr/>
|
17
|
+
|
18
|
+
<p class="mt-2">
|
19
|
+
During long pauses, lag reporting on this topic partition may stop as librdkafka freezes the last known high watermark.
|
20
|
+
</p>
|
21
|
+
|
22
|
+
<p class="mt-2">
|
23
|
+
Real-time, state-independent lag metrics can always be checked in the
|
24
|
+
<a href="<%= root_path('health', 'cluster_lags') %>">Cluster Lags</a> tab
|
25
|
+
of the <a href="<%= root_path('health') %>">Health</a> section.
|
26
|
+
</p>
|
27
|
+
<% end %>
|
@@ -0,0 +1,60 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<li>
|
5
|
+
<a href="<%= consumers_path('overview') %>">
|
6
|
+
Consumers
|
7
|
+
</a>
|
8
|
+
</li>
|
9
|
+
|
10
|
+
<li>
|
11
|
+
<a href="<%= consumer_path(@process.id, 'subscriptions') %>">
|
12
|
+
<%== truncate(@process.id, strategy: :middle) %>
|
13
|
+
</a>
|
14
|
+
</li>
|
15
|
+
|
16
|
+
<% if @subscription_group_id %>
|
17
|
+
<li>
|
18
|
+
<a href="<%= consumer_path(@process.id, "subscriptions##{@subscription_group_id}") %>">
|
19
|
+
<%= @subscription_group_id %>
|
20
|
+
</a>
|
21
|
+
</li>
|
22
|
+
|
23
|
+
<%
|
24
|
+
action = current_path.include?('/new') ? 'new' : 'edit'
|
25
|
+
|
26
|
+
target_path = consumer_path(
|
27
|
+
@process.id,
|
28
|
+
'partitions',
|
29
|
+
@subscription_group_id,
|
30
|
+
@topic,
|
31
|
+
@partition_id,
|
32
|
+
'pause',
|
33
|
+
action
|
34
|
+
)
|
35
|
+
%>
|
36
|
+
|
37
|
+
<li>
|
38
|
+
<a href="<%= target_path %>">
|
39
|
+
<%= @topic %>
|
40
|
+
</a>
|
41
|
+
</li>
|
42
|
+
|
43
|
+
<li>
|
44
|
+
<a href="<%= target_path %>">
|
45
|
+
<%= @partition_id %>
|
46
|
+
</a>
|
47
|
+
</li>
|
48
|
+
|
49
|
+
<li>
|
50
|
+
<a href="<%= target_path %>">
|
51
|
+
Pauses
|
52
|
+
</a>
|
53
|
+
</li>
|
54
|
+
|
55
|
+
<li>
|
56
|
+
<a href="<%= target_path %>">
|
57
|
+
<%= action.capitalize %>
|
58
|
+
</a>
|
59
|
+
</li>
|
60
|
+
<% end %>
|
@@ -0,0 +1,59 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<%
|
5
|
+
resume_path = consumer_path(
|
6
|
+
@process.id,
|
7
|
+
'partitions',
|
8
|
+
@subscription_group.id,
|
9
|
+
@topic,
|
10
|
+
@partition_id,
|
11
|
+
'pause'
|
12
|
+
)
|
13
|
+
%>
|
14
|
+
|
15
|
+
<div class="card bg-base-100 mt-4">
|
16
|
+
<div class="card-body">
|
17
|
+
<form
|
18
|
+
class="space-y-4 w-full"
|
19
|
+
method="post"
|
20
|
+
action="<%= resume_path %>"
|
21
|
+
>
|
22
|
+
<%== csrf_tag(resume_path, 'DELETE') %>
|
23
|
+
<input type="hidden" name="_method" value="delete">
|
24
|
+
|
25
|
+
<div class="flex items-center w-full">
|
26
|
+
<label class="w-1/4 text-gray-700">Reset Counter:</label>
|
27
|
+
|
28
|
+
<div class="w-3/4">
|
29
|
+
<label class="flex items-center gap-4 cursor-pointer">
|
30
|
+
<input type="hidden" name="reset_attempts" value="off">
|
31
|
+
<input type="checkbox" name="reset_attempts" class="checkbox checkbox-warning" />
|
32
|
+
<div class="space-y-1">
|
33
|
+
<div class="flex items-center gap-2">
|
34
|
+
Reset the processing attempts counter when resuming
|
35
|
+
</div>
|
36
|
+
|
37
|
+
<div class="text-sm text-gray-500">
|
38
|
+
Resets retries counter for features like DLQ dispatching. Does not affect message offset position.
|
39
|
+
</div>
|
40
|
+
</div>
|
41
|
+
</label>
|
42
|
+
</div>
|
43
|
+
</div>
|
44
|
+
|
45
|
+
<div class="fieldset text-center mt-6">
|
46
|
+
<div class="flex gap-4 justify-end">
|
47
|
+
<a href="<%= root_path('health', 'overview') %>" class="btn btn-ghost">
|
48
|
+
Cancel
|
49
|
+
</a>
|
50
|
+
|
51
|
+
<button type="submit" class="btn btn-warning gap-2 btn-lockable">
|
52
|
+
<%== icon(:play) %>
|
53
|
+
Resume Processing
|
54
|
+
</button>
|
55
|
+
</div>
|
56
|
+
</div>
|
57
|
+
</form>
|
58
|
+
</div>
|
59
|
+
</div>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<% alert_box_error 'Cannot Manage Long-Running Job Partitions Pausing' do %>
|
5
|
+
<p class="mb-2">
|
6
|
+
Manual pause/resume operations are not supported for topics using Long-Running Jobs.
|
7
|
+
</p>
|
8
|
+
|
9
|
+
<p class="mb-2">
|
10
|
+
These topics partitions are automatically paused and resumed based on the message processing flow to ensure reliable and consistent behavior.
|
11
|
+
</p>
|
12
|
+
|
13
|
+
<p>
|
14
|
+
Long-Running Jobs handle partition pausing internally to maintain processing stability and prevent message duplication or loss.
|
15
|
+
</p>
|
16
|
+
<% end %>
|
17
|
+
|
18
|
+
<div class="fieldset text-center mt-6">
|
19
|
+
<div class="flex justify-end">
|
20
|
+
<a href="<%= root_path('health', 'overview') %>" class="btn btn-ghost">
|
21
|
+
Cancel
|
22
|
+
</a>
|
23
|
+
</div>
|
24
|
+
</div>
|
@@ -0,0 +1,78 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<%
|
5
|
+
pause_path = consumer_path(
|
6
|
+
@process.id,
|
7
|
+
'partitions',
|
8
|
+
@subscription_group.id,
|
9
|
+
@topic,
|
10
|
+
@partition_id,
|
11
|
+
'pause'
|
12
|
+
)
|
13
|
+
%>
|
14
|
+
|
15
|
+
<div class="card bg-base-100 mt-4">
|
16
|
+
<div class="card-body">
|
17
|
+
<form class="space-y-4 w-full" method="post" action="<%= pause_path %>">
|
18
|
+
<%== csrf_tag(pause_path) %>
|
19
|
+
|
20
|
+
<div class="flex items-center w-full mb-8">
|
21
|
+
<label class="w-1/4 text-gray-700">Pause Duration:</label>
|
22
|
+
<div class="w-3/4">
|
23
|
+
<input
|
24
|
+
type="number"
|
25
|
+
min="0"
|
26
|
+
max="31536000"
|
27
|
+
name="duration"
|
28
|
+
class="block input input-bordered w-full"
|
29
|
+
placeholder="Enter pause duration in seconds (0 for indefinite)"
|
30
|
+
required
|
31
|
+
/>
|
32
|
+
|
33
|
+
<div class="text-sm text-gray-500 mt-1">
|
34
|
+
Set to 0 for indefinite pause or specify time in seconds
|
35
|
+
</div>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<div class="flex items-center w-full">
|
40
|
+
<label class="w-1/4 text-gray-700">Safety Check:</label>
|
41
|
+
<div class="w-3/4">
|
42
|
+
<label class="flex items-center gap-4 cursor-pointer">
|
43
|
+
<input type="hidden" name="prevent_override" value="off">
|
44
|
+
|
45
|
+
<input
|
46
|
+
type="checkbox"
|
47
|
+
name="prevent_override"
|
48
|
+
class="checkbox checkbox-warning"
|
49
|
+
checked
|
50
|
+
/>
|
51
|
+
|
52
|
+
<div class="space-y-1">
|
53
|
+
<div class="flex items-center gap-2">
|
54
|
+
Only pause if partition is not already paused
|
55
|
+
</div>
|
56
|
+
<div class="text-sm text-gray-500">
|
57
|
+
Prevents accidental override of existing pause
|
58
|
+
</div>
|
59
|
+
</div>
|
60
|
+
</label>
|
61
|
+
</div>
|
62
|
+
</div>
|
63
|
+
|
64
|
+
<div class="fieldset text-center mt-6">
|
65
|
+
<div class="flex gap-4 justify-end">
|
66
|
+
<a href="<%= root_path('health', 'overview') %>" class="btn btn-ghost">
|
67
|
+
Cancel
|
68
|
+
</a>
|
69
|
+
|
70
|
+
<button type="submit" class="btn btn-warning gap-2 btn-lockable">
|
71
|
+
<%== icon(:pause) %>
|
72
|
+
Set or Update Pause
|
73
|
+
</button>
|
74
|
+
</div>
|
75
|
+
</div>
|
76
|
+
</form>
|
77
|
+
</div>
|
78
|
+
</div>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<% alert_box_error 'This Operation Cannot Be Performed' do %>
|
5
|
+
<p>
|
6
|
+
Consumer pauses can only be managed using Web UI when the consumer is in a running state.
|
7
|
+
</p>
|
8
|
+
<% end %>
|
9
|
+
|
10
|
+
<div class="fieldset text-center mt-6">
|
11
|
+
<div class="flex justify-end">
|
12
|
+
<a href="<%= root_path('health', 'overview') %>" class="btn btn-ghost">
|
13
|
+
Cancel
|
14
|
+
</a>
|
15
|
+
</div>
|
16
|
+
</div>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<% view_title "#{@process.id} - Pause Adjustment - #{@subscription_group_id} - #{@topic}##{@partition_id}" %>
|
5
|
+
|
6
|
+
<% if @topic_lrj %>
|
7
|
+
<%== partial 'consumers/partitions/pauses/lrj_not_manageable' %>
|
8
|
+
<% else %>
|
9
|
+
<% if @process.status == 'running' %>
|
10
|
+
<% if @partition_stats.poll_state == 'active' %>
|
11
|
+
<%== partial 'consumers/partitions/pauses/active_not_editable' %>
|
12
|
+
<% else %>
|
13
|
+
<%== partial 'consumers/partitions/pauses/adjusting_warning' %>
|
14
|
+
<%== partial 'consumers/partitions/offsets/basics' %>
|
15
|
+
<%== partial 'consumers/partitions/pauses/edit_form' %>
|
16
|
+
<% end %>
|
17
|
+
<% else %>
|
18
|
+
<%== partial 'consumers/partitions/pauses/not_running' %>
|
19
|
+
<% end %>
|
20
|
+
<% end %>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<% view_title "#{@process.id} - Pause Adjustment - #{@subscription_group_id} - #{@topic}##{@partition_id}" %>
|
5
|
+
|
6
|
+
<% if @topic_lrj %>
|
7
|
+
<%== partial 'consumers/partitions/pauses/lrj_not_manageable' %>
|
8
|
+
<% else %>
|
9
|
+
<% if @process.status == 'running' %>
|
10
|
+
<%== partial 'consumers/partitions/pauses/adjusting_warning' %>
|
11
|
+
<%== partial 'consumers/partitions/offsets/basics' %>
|
12
|
+
<%== partial 'consumers/partitions/pauses/new_form' %>
|
13
|
+
<% else %>
|
14
|
+
<%== partial 'consumers/partitions/pauses/not_running' %>
|
15
|
+
<% end %>
|
16
|
+
<% end %>
|
@@ -1,3 +1,6 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
1
4
|
<% view_title 'Dashboard' %>
|
2
5
|
|
3
6
|
<%== partial 'dashboard/counters' %>
|
@@ -41,7 +44,7 @@
|
|
41
44
|
</div>
|
42
45
|
</div>
|
43
46
|
|
44
|
-
<h2 class="h2">Utilization Metrics</h2>
|
47
|
+
<h2 class="h2 mt-4">Utilization Metrics</h2>
|
45
48
|
|
46
49
|
<div class="tab-container-wrapper" id="graphs2">
|
47
50
|
<div class="tab-container inline-tabs">
|
@@ -1,7 +1,10 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
1
4
|
<div class="topic-tile">
|
2
5
|
<div class="topic-tile-body">
|
3
6
|
<p class="topic-tile-text">
|
4
|
-
<a href="<%=
|
7
|
+
<a href="<%= explorer_topics_path(topic[:topic_name]) %>" class="topic-tile-link">
|
5
8
|
<%= topic[:topic_name] %> / <%= topic[:partition_count] %>
|
6
9
|
</a>
|
7
10
|
</p>
|