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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +64 -176
- data/Gemfile +4 -0
- data/Gemfile.lock +88 -44
- 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 +3 -5
- data/lib/karafka/web/config.rb +86 -10
- data/lib/karafka/web/contracts/config.rb +45 -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 +32 -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/errors.rb +38 -9
- 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 +2 -9
- 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 +15 -6
- 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/btn_toggle_manager.js +17 -7
- 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 +5123 -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 +9 -1
- data/package-lock.json +799 -1226
- 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 +233 -109
- 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
@@ -1,18 +1,21 @@
|
|
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 @topic_id %>
|
2
5
|
|
3
6
|
<% @selector_path_method = :scheduled_messages_explorer_path %>
|
4
7
|
|
5
|
-
<%== partial 'explorer/topic/actions' %>
|
8
|
+
<%== partial 'explorer/explorer/topic/actions' %>
|
6
9
|
|
7
10
|
<div class="col-span-12">
|
8
11
|
<% if @limited %>
|
9
12
|
<div class="mb-6">
|
10
|
-
<%== partial('explorer/topic/limited') %>
|
13
|
+
<%== partial('explorer/explorer/topic/limited') %>
|
11
14
|
</div>
|
12
15
|
<% end %>
|
13
16
|
|
14
17
|
<% if @messages.empty? && params.current_page == 1 %>
|
15
|
-
<%== partial 'explorer/topic/empty' %>
|
18
|
+
<%== partial 'explorer/explorer/topic/empty' %>
|
16
19
|
<% elsif @messages.empty? %>
|
17
20
|
<%== partial 'shared/no_paginated_data' %>
|
18
21
|
<% else %>
|
@@ -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
|
<% alert_box_info 'Scheduled Messages Data Not Available' do %>
|
2
5
|
<p class="mb-2">
|
3
6
|
We are unable to display data related to scheduled messages. Please ensure that:
|
@@ -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 'Schedules' %>
|
2
5
|
|
3
6
|
<div class="col-span-12">
|
@@ -25,7 +28,7 @@
|
|
25
28
|
</a>
|
26
29
|
|
27
30
|
<a
|
28
|
-
href="<%= root_path("scheduled_messages/explorer/#{topic.topic_name}") %>"
|
31
|
+
href="<%= root_path("scheduled_messages/explorer/topics/#{topic.topic_name}") %>"
|
29
32
|
class="btn btn-primary btn-sm flex-1"
|
30
33
|
>
|
31
34
|
Messages
|
@@ -1,11 +1,14 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
1
4
|
<nav class="sidebar-nav">
|
2
5
|
<%== partial 'shared/brand' %>
|
3
6
|
<%== partial 'shared/branding/label' %>
|
4
7
|
|
5
|
-
<ul class="menu grow">
|
8
|
+
<ul class="menu menu-md grow w-auto">
|
6
9
|
<li>
|
7
10
|
<a
|
8
|
-
class="sidebar-nav-item
|
11
|
+
class="sidebar-nav-item menu-<%= nav_class(start_with: '/dashboard') %>"
|
9
12
|
href="<%= root_path('dashboard') %>"
|
10
13
|
>
|
11
14
|
<%== icon(:home) %>
|
@@ -15,7 +18,7 @@
|
|
15
18
|
|
16
19
|
<li>
|
17
20
|
<a
|
18
|
-
class="sidebar-nav-item
|
21
|
+
class="sidebar-nav-item menu-<%= nav_class(match: /\A\/(consumers|commands)/) %>"
|
19
22
|
href="<%= root_path('consumers') %>"
|
20
23
|
>
|
21
24
|
<%== icon(:cpu) %>
|
@@ -25,7 +28,7 @@
|
|
25
28
|
|
26
29
|
<li>
|
27
30
|
<a
|
28
|
-
class="sidebar-nav-item
|
31
|
+
class="sidebar-nav-item menu-<%= nav_class(start_with: '/jobs') %>"
|
29
32
|
href="<%= root_path('jobs/running') %>"
|
30
33
|
>
|
31
34
|
<%== icon(:arrow_on_squares) %>
|
@@ -35,7 +38,7 @@
|
|
35
38
|
|
36
39
|
<li>
|
37
40
|
<a
|
38
|
-
class="sidebar-nav-item
|
41
|
+
class="sidebar-nav-item menu-<%= nav_class(start_with: '/health') %>"
|
39
42
|
href="<%= root_path('health/overview') %>"
|
40
43
|
>
|
41
44
|
<%== icon(:heart) %>
|
@@ -45,7 +48,7 @@
|
|
45
48
|
|
46
49
|
<li>
|
47
50
|
<a
|
48
|
-
class="sidebar-nav-item
|
51
|
+
class="sidebar-nav-item menu-<%= nav_class(start_with: '/routing') %>"
|
49
52
|
href="<%= root_path('routing') %>"
|
50
53
|
>
|
51
54
|
<%== icon(:queue_list) %>
|
@@ -55,8 +58,8 @@
|
|
55
58
|
|
56
59
|
<li>
|
57
60
|
<a
|
58
|
-
class="sidebar-nav-item
|
59
|
-
href="<%=
|
61
|
+
class="sidebar-nav-item menu-<%= nav_class(start_with: '/explorer') %>"
|
62
|
+
href="<%= explorer_path %>"
|
60
63
|
>
|
61
64
|
<%== icon(:document_glass) %>
|
62
65
|
<span class="sidebar-nav-item-label">Explorer</span>
|
@@ -65,7 +68,7 @@
|
|
65
68
|
|
66
69
|
<li>
|
67
70
|
<a
|
68
|
-
class="sidebar-nav-item
|
71
|
+
class="sidebar-nav-item menu-<%= nav_class(start_with: '/recurring_tasks') %>"
|
69
72
|
href="<%= root_path('recurring_tasks') %>"
|
70
73
|
>
|
71
74
|
<%== icon(:arrow_path_rounded) %>
|
@@ -75,7 +78,7 @@
|
|
75
78
|
|
76
79
|
<li>
|
77
80
|
<a
|
78
|
-
class="sidebar-nav-item
|
81
|
+
class="sidebar-nav-item menu-<%= nav_class(start_with: '/scheduled_messages') %>"
|
79
82
|
href="<%= root_path('scheduled_messages') %>"
|
80
83
|
>
|
81
84
|
<%== icon(:calendar) %>
|
@@ -85,7 +88,7 @@
|
|
85
88
|
|
86
89
|
<li>
|
87
90
|
<a
|
88
|
-
class="sidebar-nav-item
|
91
|
+
class="sidebar-nav-item menu-<%= nav_class(start_with: '/errors') %>"
|
89
92
|
href="<%= root_path('errors') %>"
|
90
93
|
>
|
91
94
|
<%== icon(:bug) %>
|
@@ -95,7 +98,7 @@
|
|
95
98
|
|
96
99
|
<li>
|
97
100
|
<a
|
98
|
-
class="sidebar-nav-item
|
101
|
+
class="sidebar-nav-item menu-<%= nav_class(start_with: '/dlq') %>"
|
99
102
|
href="<%= root_path('dlq') %>"
|
100
103
|
>
|
101
104
|
<%== icon(:x_circle) %>
|
@@ -105,7 +108,7 @@
|
|
105
108
|
|
106
109
|
<li>
|
107
110
|
<a
|
108
|
-
class="sidebar-nav-item
|
111
|
+
class="sidebar-nav-item menu-<%= nav_class(start_with: '/cluster') %>"
|
109
112
|
href="<%= root_path('cluster') %>"
|
110
113
|
>
|
111
114
|
<%== icon(:blocks) %>
|
@@ -115,7 +118,7 @@
|
|
115
118
|
|
116
119
|
<li>
|
117
120
|
<a
|
118
|
-
class="sidebar-nav-item
|
121
|
+
class="sidebar-nav-item menu-<%= nav_class(start_with: '/topics') %>"
|
119
122
|
href="<%= root_path('topics') %>"
|
120
123
|
>
|
121
124
|
<%== icon(:list_bullets) %>
|
@@ -125,7 +128,7 @@
|
|
125
128
|
|
126
129
|
<li>
|
127
130
|
<a
|
128
|
-
class="sidebar-nav-item
|
131
|
+
class="sidebar-nav-item menu-<%= nav_class(start_with: '/status') %>"
|
129
132
|
href="<%= root_path('status') %>"
|
130
133
|
>
|
131
134
|
<%== icon(:check_badge) %>
|
@@ -135,16 +138,21 @@
|
|
135
138
|
|
136
139
|
<li>
|
137
140
|
<a
|
138
|
-
class="sidebar-nav-item
|
141
|
+
class="sidebar-nav-item menu-<%= nav_class(start_with: '/support') %>"
|
139
142
|
href="<%= root_path('support') %>"
|
140
143
|
>
|
141
144
|
<%== icon(:lifebuoy) %>
|
142
145
|
<span class="sidebar-nav-item-label">Support</span>
|
143
146
|
</a>
|
144
147
|
</li>
|
148
|
+
|
149
|
+
<%== partial 'shared/custom_nav' %>
|
145
150
|
</ul>
|
146
151
|
|
147
|
-
<button
|
152
|
+
<button
|
153
|
+
type="button"
|
154
|
+
class="cursor-pointer btn-toggle-nav-collapsed grid gap-2 grid-flow-col items-center justify-start ml-6 text-sm invisible lg:visible" data-toggle-target="drawer-side"
|
155
|
+
>
|
148
156
|
<%== icon(:chevron) %>
|
149
157
|
</button>
|
150
158
|
</nav>
|
@@ -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
|
+
<div class="mb-6">
|
5
|
+
<% alert_box_error('Please Correct the Following Errors Before Continuing') do %>
|
6
|
+
<ul class="list-disc m-5 mb-0 mt-0">
|
7
|
+
<% unless @form_error.message.to_s.empty? %>
|
8
|
+
<li><%= @form_error.message %></li>
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
<% if @form_error.respond_to?(:broker_message) && !@form_error.broker_message.to_s.empty? %>
|
12
|
+
<li><%= @form_error.broker_message %></li>
|
13
|
+
<% end %>
|
14
|
+
</ul>
|
15
|
+
<% end %>
|
16
|
+
</div>
|
@@ -0,0 +1,34 @@
|
|
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="<%= topics_path %>">
|
6
|
+
Topics
|
7
|
+
</a>
|
8
|
+
</li>
|
9
|
+
|
10
|
+
<li>
|
11
|
+
<a href="<%= topics_path(@topic.topic_name, 'config') %>">
|
12
|
+
<%= @topic.topic_name %>
|
13
|
+
</a>
|
14
|
+
</li>
|
15
|
+
|
16
|
+
<li>
|
17
|
+
<a href="<%= topics_path(@topic.topic_name, 'config') %>">
|
18
|
+
Configuration
|
19
|
+
</a>
|
20
|
+
</li>
|
21
|
+
|
22
|
+
<% if action?(:edit, :update) %>
|
23
|
+
<li>
|
24
|
+
<a href="<%= topics_path(@topic.topic_name, 'config', @property.name, 'edit') %>">
|
25
|
+
<%= @property.name %>
|
26
|
+
</a>
|
27
|
+
</li>
|
28
|
+
|
29
|
+
<li>
|
30
|
+
<a href="<%= topics_path(@topic.topic_name, 'config', @property.name, 'edit') %>">
|
31
|
+
Edit
|
32
|
+
</a>
|
33
|
+
</li>
|
34
|
+
<% end %>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<tr>
|
5
|
+
<td class="wrap-text">
|
6
|
+
<% all_names = ([config.name] + config.synonyms.map(&:name)).uniq %>
|
7
|
+
<% all_names.each do |name| %>
|
8
|
+
<%= name %>
|
9
|
+
<br/>
|
10
|
+
<% end %>
|
11
|
+
</td>
|
12
|
+
<td class="wrap-text"><%= config.value %></td>
|
13
|
+
<td><%== config.default? ? badge_success(true) : badge_secondary(false) %></td>
|
14
|
+
<td><%== config.sensitive? ? badge_success(true) : badge_secondary(false) %></td>
|
15
|
+
<td><%== config.read_only? ? badge_success(true) : badge_secondary(false) %></td>
|
16
|
+
<td>
|
17
|
+
<% link_class = config.read_only? ? 'btn-disabled' : '' %>
|
18
|
+
<a
|
19
|
+
href="<%= topics_path(@topic.topic_name, 'config', config.name, 'edit') %>"
|
20
|
+
class="btn btn-info btn-sm <%= link_class %>"
|
21
|
+
title="Edit this property value"
|
22
|
+
>
|
23
|
+
<%== icon(:pencil_square) %>
|
24
|
+
</a>
|
25
|
+
</td>
|
26
|
+
</tr>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<div class="col-span-12 flex justify-end space-x-2 mt-6">
|
5
|
+
<a
|
6
|
+
class="btn btn-error btn-sm <%= 'btn-disabled' unless features.topics_management? %>"
|
7
|
+
href="<%= topics_path(@topic.topic_name, 'delete') %>"
|
8
|
+
title="Delete this topic"
|
9
|
+
>
|
10
|
+
<%== icon(:trash) %>
|
11
|
+
Delete Topic
|
12
|
+
</a>
|
13
|
+
</div>
|
@@ -0,0 +1,50 @@
|
|
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">
|
5
|
+
<div class="card-body">
|
6
|
+
<% form_path = topics_path(@topic.topic_name, 'config', @property.name) %>
|
7
|
+
<form method="post" action="<%= form_path %>" data-turbo="false">
|
8
|
+
<%== csrf_tag(form_path, 'PUT') %>
|
9
|
+
<input type="hidden" name="_method" value="put">
|
10
|
+
|
11
|
+
<div class="flex items-center w-full mb-4">
|
12
|
+
<label class="w-1/4 text-gray-700">Property:</label>
|
13
|
+
<div class="w-3/4">
|
14
|
+
<code class="bg-base-200 px-2 py-1 rounded-sm"><%= @property.name %></code>
|
15
|
+
</div>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<div class="flex items-center w-full mb-4">
|
19
|
+
<label class="w-1/4 text-gray-700">Current Value:</label>
|
20
|
+
<div class="w-3/4">
|
21
|
+
<code class="bg-base-200 px-2 py-1 rounded-sm"><%= @property.value %></code>
|
22
|
+
</div>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<div class="flex items-center w-full mb-8">
|
26
|
+
<label class="w-1/4 text-gray-700">New Value:</label>
|
27
|
+
<div class="w-3/4">
|
28
|
+
<input
|
29
|
+
type="<%= @property.sensitive? ? 'password' : 'text' %>"
|
30
|
+
name="property_value"
|
31
|
+
class="block input input-bordered w-full"
|
32
|
+
placeholder="Enter new value for <%= @property.name %>"
|
33
|
+
value="<%= params.fetch(:property_value, @property.value) %>"
|
34
|
+
/>
|
35
|
+
</div>
|
36
|
+
</div>
|
37
|
+
|
38
|
+
<div class="flex justify-end gap-4 mt-4">
|
39
|
+
<a href="<%= topics_path(@topic.topic_name, 'config') %>" class="btn btn-ghost">
|
40
|
+
Cancel
|
41
|
+
</a>
|
42
|
+
|
43
|
+
<button type="submit" class="btn btn-primary gap-2 btn-lockable">
|
44
|
+
<%== icon(:pencil_square) %>
|
45
|
+
Update Property
|
46
|
+
</button>
|
47
|
+
</div>
|
48
|
+
</form>
|
49
|
+
</div>
|
50
|
+
</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
|
+
<div class="alert">
|
5
|
+
<div class="space-y-2">
|
6
|
+
<p>Before updating this configuration:</p>
|
7
|
+
<ul class="list-disc ml-6">
|
8
|
+
<li>Ensure you understand the impact of changing this value</li>
|
9
|
+
<li>Consider testing the change in a non-production environment first</li>
|
10
|
+
<li>Monitor the topic after the change to ensure expected behavior</li>
|
11
|
+
<% if @property.sensitive? %>
|
12
|
+
<li>Keep this value secure and only share with authorized team members</li>
|
13
|
+
<% end %>
|
14
|
+
</ul>
|
15
|
+
</div>
|
16
|
+
</div>
|
@@ -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
|
+
<% alert_box_warning('Configuration Update Warning') do %>
|
5
|
+
<div class="space-y-4">
|
6
|
+
<ul class="list-disc ml-6">
|
7
|
+
<li>Changing topic configurations may affect topic behavior and performance</li>
|
8
|
+
<li>Some changes may take time to propagate across the cluster</li>
|
9
|
+
<li>Applications consuming from this topic may be impacted</li>
|
10
|
+
</ul>
|
11
|
+
</div>
|
12
|
+
<% 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 "Topic #{@topic.topic_name} - Edit #{@property.name}" %>
|
5
|
+
|
6
|
+
<div class="space-y-4">
|
7
|
+
|
8
|
+
<%== partial('topics/configs/edit_warning') %>
|
9
|
+
|
10
|
+
<% if @form_error %>
|
11
|
+
<%== partial 'shared/rdkafka_form_error_alert_box' %>
|
12
|
+
<% else %>
|
13
|
+
<%== partial 'topics/configs/edit_plan' %>
|
14
|
+
<% end %>
|
15
|
+
|
16
|
+
<%== partial 'topics/configs/edit_form' %>
|
@@ -1,6 +1,9 @@
|
|
1
|
-
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
2
3
|
|
3
|
-
|
4
|
+
<% view_title "#{@topic.topic_name} Configuraton" %>
|
5
|
+
|
6
|
+
<%== partial 'topics/topics/tabs' %>
|
4
7
|
|
5
8
|
<div class="data-table-wrapper">
|
6
9
|
<table class="data-table">
|
@@ -11,15 +14,18 @@
|
|
11
14
|
<th><%== sort_link(:default?) %></th>
|
12
15
|
<th><%== sort_link(:sensitive?) %></th>
|
13
16
|
<th><%== sort_link(:read_only?) %></th>
|
17
|
+
<th>Options</th>
|
14
18
|
</tr>
|
15
19
|
</thead>
|
16
20
|
<tbody>
|
17
21
|
<%==
|
18
22
|
each_partial(
|
19
23
|
@configs,
|
20
|
-
'
|
24
|
+
'topics/configs/config'
|
21
25
|
)
|
22
26
|
%>
|
23
27
|
</tbody>
|
24
28
|
</table>
|
25
29
|
</div>
|
30
|
+
|
31
|
+
<%== partial 'topics/configs/delete_button' %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<div class="col-span-12 flex justify-end space-x-2 mb-6">
|
5
|
+
<a
|
6
|
+
class="btn btn-primary btn-sm <%= 'btn-disabled' unless features.topics_management? %>"
|
7
|
+
href="<%= topics_path(@topic.topic_name, 'distribution', 'edit') %>"
|
8
|
+
title="Add more partitions to this topic"
|
9
|
+
>
|
10
|
+
<%== icon(:plus) %>
|
11
|
+
Increase Partitions
|
12
|
+
</a>
|
13
|
+
</div>
|
@@ -0,0 +1,28 @@
|
|
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="<%= topics_path %>">
|
6
|
+
Topics
|
7
|
+
</a>
|
8
|
+
</li>
|
9
|
+
|
10
|
+
<li>
|
11
|
+
<a href="<%= topics_path(@topic.topic_name, 'config') %>">
|
12
|
+
<%= @topic.topic_name %>
|
13
|
+
</a>
|
14
|
+
</li>
|
15
|
+
|
16
|
+
<li>
|
17
|
+
<a href="<%= topics_path(@topic.topic_name, 'distribution') %>">
|
18
|
+
Distribution
|
19
|
+
</a>
|
20
|
+
</li>
|
21
|
+
|
22
|
+
<% if action?(:edit, :update) %>
|
23
|
+
<li>
|
24
|
+
<a href="<%= topics_path(@topic.topic_name, 'distribution', 'edit') %>">
|
25
|
+
Increasing Number of Partitions
|
26
|
+
</a>
|
27
|
+
</li>
|
28
|
+
<% 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
|
<% data = { 'Estimated count': @distribution.map { [_1.partition_id, _1.count] } }.to_json %>
|
2
5
|
<div class="mb-5">
|
3
6
|
<%== partial 'shared/charts/bar', locals: { data: data, id: 'distribution' } %>
|
@@ -0,0 +1,47 @@
|
|
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">
|
5
|
+
<div class="card-body">
|
6
|
+
<% form_path = topics_path(@topic.topic_name, 'distribution') %>
|
7
|
+
<form class="space-y-4" method="post" action="<%= form_path %>" data-turbo="false">
|
8
|
+
<%== csrf_tag(form_path, 'PUT') %>
|
9
|
+
<input type="hidden" name="_method" value="put">
|
10
|
+
|
11
|
+
<div class="flex items-center w-full mb-8">
|
12
|
+
<label class="w-1/4 text-gray-700">Current Partitions:</label>
|
13
|
+
<div class="w-3/4">
|
14
|
+
<code class="bg-base-200 px-2 py-1 rounded-sm"><%= @topic.partition_count %></code>
|
15
|
+
</div>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<div class="flex items-center w-full mb-8">
|
19
|
+
<label class="w-1/4 text-gray-700">New Partition Count:</label>
|
20
|
+
<div class="w-3/4">
|
21
|
+
<input
|
22
|
+
type="number"
|
23
|
+
name="partition_count"
|
24
|
+
class="block input input-bordered w-full"
|
25
|
+
placeholder="Enter new partition count"
|
26
|
+
value="<%= params.fetch(:partition_count, @topic.partition_count) %>"
|
27
|
+
min="<%= @topic.partition_count + 1 %>"
|
28
|
+
required
|
29
|
+
/>
|
30
|
+
<div class="text-sm text-gray-500 mt-1">
|
31
|
+
Must be greater than current partition count (<%= @topic.partition_count %>)
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
|
36
|
+
<div class="flex justify-end gap-4">
|
37
|
+
<a href="<%= topics_path(@topic.topic_name, 'distribution') %>" class="btn btn-ghost">
|
38
|
+
Cancel
|
39
|
+
</a>
|
40
|
+
<button type="submit" class="btn btn-primary gap-2 btn-lockable confirm-action">
|
41
|
+
<%== icon(:plus) %>
|
42
|
+
Increase Partitions
|
43
|
+
</button>
|
44
|
+
</div>
|
45
|
+
</form>
|
46
|
+
</div>
|
47
|
+
</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
|
+
<div class="alert">
|
5
|
+
<div class="space-y-2">
|
6
|
+
<p>Before increasing partitions:</p>
|
7
|
+
<ul class="list-disc ml-6">
|
8
|
+
<li>Ensure all consumers support dynamic partition detection</li>
|
9
|
+
<li>Consider the impact on message ordering in your applications</li>
|
10
|
+
<li>Plan for temporary rebalancing as consumers detect the change</li>
|
11
|
+
<li>Monitor consumer lag during and after the operation</li>
|
12
|
+
<li>Consider increasing partitions during low-traffic periods</li>
|
13
|
+
</ul>
|
14
|
+
</div>
|
15
|
+
</div>
|
@@ -0,0 +1,14 @@
|
|
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('Partition Update Warning') do %>
|
5
|
+
<div class="space-y-4">
|
6
|
+
<ul class="list-disc ml-6">
|
7
|
+
<li>Increasing partitions is a one-way operation - partition count cannot be decreased later</li>
|
8
|
+
<li>Adding partitions affects message ordering and consistent hashing</li>
|
9
|
+
<li>Consumers will need to detect the partition count change and rebalance</li>
|
10
|
+
<li>Message distribution across partitions may become uneven until data rotates</li>
|
11
|
+
<li>Changes may take several minutes to be visible in the UI but will be applied immediately</li>
|
12
|
+
</ul>
|
13
|
+
</div>
|
14
|
+
<% end %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%# This code is part of Karafka Pro, a commercial component not licensed under LGPL. %>
|
2
|
+
<%# See LICENSE for details. %>
|
3
|
+
|
4
|
+
<tr>
|
5
|
+
<td>
|
6
|
+
<a href="<%= explorer_topics_path(@topic.topic_name, partition.partition_id) %>">
|
7
|
+
<%= partition.partition_id %>
|
8
|
+
</a>
|
9
|
+
</td>
|
10
|
+
<td><%= partition.count %></td>
|
11
|
+
<td><%= partition.share %>%</td>
|
12
|
+
<td><%= partition.diff.round(2) %>%</td>
|
13
|
+
</tr>
|
@@ -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 "Topic #{@topic.topic_name} - Increase Partitions" %>
|
5
|
+
|
6
|
+
<div class="space-y-4">
|
7
|
+
<%== partial 'topics/distributions/edit_warnings' %>
|
8
|
+
|
9
|
+
<% if @form_error %>
|
10
|
+
<%== partial 'shared/rdkafka_form_error_alert_box' %>
|
11
|
+
<% else %>
|
12
|
+
<%== partial 'topics/distributions/edit_hints' %>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<%== partial 'topics/distributions/edit_form' %>
|
16
|
+
</div>
|