karafka-web 0.5.2 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +69 -6
  4. data/Gemfile.lock +14 -14
  5. data/karafka-web.gemspec +3 -3
  6. data/lib/karafka/web/config.rb +11 -5
  7. data/lib/karafka/web/installer.rb +2 -3
  8. data/lib/karafka/web/tracking/consumers/contracts/consumer_group.rb +1 -1
  9. data/lib/karafka/web/tracking/consumers/contracts/job.rb +4 -1
  10. data/lib/karafka/web/tracking/consumers/contracts/partition.rb +1 -1
  11. data/lib/karafka/web/tracking/consumers/contracts/report.rb +8 -4
  12. data/lib/karafka/web/tracking/consumers/contracts/subscription_group.rb +1 -1
  13. data/lib/karafka/web/tracking/consumers/contracts/topic.rb +3 -1
  14. data/lib/karafka/web/tracking/consumers/listeners/base.rb +2 -2
  15. data/lib/karafka/web/tracking/consumers/listeners/errors.rb +8 -44
  16. data/lib/karafka/web/tracking/consumers/listeners/processing.rb +5 -0
  17. data/lib/karafka/web/tracking/consumers/reporter.rb +151 -0
  18. data/lib/karafka/web/tracking/consumers/sampler.rb +2 -1
  19. data/lib/karafka/web/tracking/contracts/base.rb +34 -0
  20. data/lib/karafka/web/tracking/contracts/error.rb +31 -0
  21. data/lib/karafka/web/tracking/helpers/error_info.rb +50 -0
  22. data/lib/karafka/web/tracking/memoized_shell.rb +1 -1
  23. data/lib/karafka/web/tracking/producers/listeners/base.rb +33 -0
  24. data/lib/karafka/web/tracking/producers/listeners/errors.rb +66 -0
  25. data/lib/karafka/web/tracking/producers/listeners/reporter.rb +21 -0
  26. data/lib/karafka/web/tracking/producers/reporter.rb +101 -0
  27. data/lib/karafka/web/tracking/producers/sampler.rb +42 -0
  28. data/lib/karafka/web/tracking/sampler.rb +5 -0
  29. data/lib/karafka/web/ui/controllers/consumers.rb +2 -4
  30. data/lib/karafka/web/ui/models/counters.rb +51 -0
  31. data/lib/karafka/web/ui/models/status.rb +31 -7
  32. data/lib/karafka/web/ui/pro/controllers/consumers.rb +2 -3
  33. data/lib/karafka/web/ui/pro/views/consumers/consumer/_job.erb +6 -6
  34. data/lib/karafka/web/ui/pro/views/consumers/consumer/_metrics.erb +6 -1
  35. data/lib/karafka/web/ui/pro/views/consumers/index.erb +25 -21
  36. data/lib/karafka/web/ui/pro/views/consumers/jobs.erb +1 -1
  37. data/lib/karafka/web/ui/pro/views/errors/_breadcrumbs.erb +1 -2
  38. data/lib/karafka/web/ui/pro/views/errors/_error.erb +8 -6
  39. data/lib/karafka/web/ui/pro/views/errors/show.erb +3 -2
  40. data/lib/karafka/web/ui/public/stylesheets/application.css +4 -0
  41. data/lib/karafka/web/ui/views/consumers/_no_consumers.erb +9 -0
  42. data/lib/karafka/web/ui/views/consumers/index.erb +24 -20
  43. data/lib/karafka/web/ui/views/errors/_breadcrumbs.erb +1 -2
  44. data/lib/karafka/web/ui/views/errors/_detail.erb +9 -1
  45. data/lib/karafka/web/ui/views/errors/_error.erb +8 -6
  46. data/lib/karafka/web/ui/views/errors/show.erb +50 -2
  47. data/lib/karafka/web/ui/views/shared/_feature_pro.erb +4 -0
  48. data/lib/karafka/web/ui/views/shared/_pagination.erb +8 -2
  49. data/lib/karafka/web/ui/views/shared/exceptions/pro_only.erb +0 -4
  50. data/lib/karafka/web/ui/views/status/failures/_initial_state.erb +1 -10
  51. data/lib/karafka/web/ui/views/status/info/_components.erb +6 -1
  52. data/lib/karafka/web/ui/views/status/show.erb +6 -1
  53. data/lib/karafka/web/ui/views/status/successes/_connection.erb +1 -0
  54. data/lib/karafka/web/ui/views/status/warnings/_connection.erb +11 -0
  55. data/lib/karafka/web/version.rb +1 -1
  56. data.tar.gz.sig +0 -0
  57. metadata +28 -16
  58. metadata.gz.sig +0 -0
  59. data/lib/karafka/web/tracking/base_contract.rb +0 -31
  60. data/lib/karafka/web/tracking/reporter.rb +0 -144
  61. data/lib/karafka/web/ui/pro/views/consumers/_summary.erb +0 -81
  62. data/lib/karafka/web/ui/pro/views/errors/_cleaned.erb +0 -3
  63. data/lib/karafka/web/ui/pro/views/errors/_detail.erb +0 -31
  64. data/lib/karafka/web/ui/pro/views/errors/_no_errors.erb +0 -3
  65. data/lib/karafka/web/ui/pro/views/jobs/_breadcrumbs.erb +0 -5
  66. data/lib/karafka/web/ui/views/consumers/_breadcrumbs.erb +0 -27
@@ -1,9 +1,8 @@
1
1
  <%==
2
2
  type = @error_message.payload[:type]
3
3
  error_class = @error_message.payload[:error_class]
4
- offset = @error_message.offset
5
4
 
6
- view_title("#{type}: #{error_class} #{offset}")
5
+ view_title("#{type}: #{error_class}")
7
6
  %>
8
7
 
9
8
  <div class="container">
@@ -36,6 +35,7 @@
36
35
  </table>
37
36
  </div>
38
37
  </div>
38
+
39
39
  <div class="row mb-4">
40
40
  <div class="col-sm-12">
41
41
  <h5 class="mb-2">
@@ -44,6 +44,7 @@
44
44
  <hr/>
45
45
  </div>
46
46
  </div>
47
+
47
48
  <div class="row mb-4">
48
49
  <div class="col-sm-12">
49
50
  <div class="card">
@@ -108,3 +108,7 @@ code.wrapped {
108
108
  #metrics ul {
109
109
  padding-left: 0;
110
110
  }
111
+
112
+ .blurred {
113
+ filter: blur(4px)
114
+ }
@@ -0,0 +1,9 @@
1
+ <div class="alert alert-info" role="alert">
2
+ <p>
3
+ There are no Karafka consumer processes actively reporting to the Web UI.
4
+ </p>
5
+
6
+ <p class="mb-0">
7
+ If you are sure you are running at least one <code>karafka server</code> instance, please make sure that it can report to the <code><%= Karafka::Web.config.topics.consumers.reports %></code> topic.
8
+ </p>
9
+ </div>
@@ -4,26 +4,30 @@
4
4
  <div class="container">
5
5
  <div class="row">
6
6
  <div class="col-sm-12">
7
- <table class="processes bg-white table table-hover table-bordered table-striped mb-0 align-middle">
8
- <thead>
9
- <tr class="align-middle">
10
- <th>Name</th>
11
- <th class="col-sm-2">Started</th>
12
- <th class="col-sm-1">Memory</th>
13
- <th class="col-sm-1">Utilization</th>
14
- <th class="col-sm-1">Total lag</th>
15
- </tr>
16
- </thead>
17
- <tbody>
18
- <%==
19
- render_each(
20
- @processes,
21
- 'consumers/_consumer',
22
- local: :process
23
- )
24
- %>
25
- </tbody>
26
- </table>
7
+ <% if @processes.empty? %>
8
+ <%== partial 'consumers/no_consumers' %>
9
+ <% else %>
10
+ <table class="processes bg-white table table-hover table-bordered table-striped mb-0 align-middle">
11
+ <thead>
12
+ <tr class="align-middle">
13
+ <th>Name</th>
14
+ <th class="col-sm-2">Started</th>
15
+ <th class="col-sm-1">Memory</th>
16
+ <th class="col-sm-1">Utilization</th>
17
+ <th class="col-sm-1">Total lag</th>
18
+ </tr>
19
+ </thead>
20
+ <tbody>
21
+ <%==
22
+ render_each(
23
+ @processes,
24
+ 'consumers/_consumer',
25
+ local: :process
26
+ )
27
+ %>
28
+ </tbody>
29
+ </table>
30
+ <% end %>
27
31
  </div>
28
32
  </div>
29
33
  </div>
@@ -10,9 +10,8 @@
10
10
  <%=
11
11
  type = @error_message.payload[:type]
12
12
  error_class = @error_message.payload[:error_class]
13
- offset = @error_message.offset
14
13
 
15
- "#{type}: #{error_class} #{offset}"
14
+ "#{type}: #{error_class}"
16
15
  %>
17
16
  </a>
18
17
  </li>
@@ -21,8 +21,16 @@
21
21
  <%= k %>
22
22
  </td>
23
23
  <td>
24
- <% if k == :occurred_at %>
24
+ <% case k
25
+ when :occurred_at
26
+ %>
25
27
  <%== relative_time v %>
28
+ <% when :error_class %>
29
+ <code><%= v %></code>
30
+ <% when :type %>
31
+ <span class="badge bg-secondary">
32
+ <%= v %>
33
+ </span>
26
34
  <% else %>
27
35
  <%= v %>
28
36
  <% end %>
@@ -9,14 +9,16 @@
9
9
 
10
10
  <tr>
11
11
  <td>
12
- <% if error[:details].key?(:topic) %>
13
- <%= error[:details][:topic] %>: <%= error[:details][:partition] %>
14
- <% else %>
15
- <%= error[:type] %>
16
- <% end %>
12
+ <span class="badge bg-secondary badge-topic">
13
+ <% if error[:details].key?(:topic) %>
14
+ <%= error[:details][:topic] %>: <%= error[:details][:partition] %>
15
+ <% else %>
16
+ <%= error[:type] %>
17
+ <% end %>
18
+ </span>
17
19
  </td>
18
20
  <td>
19
- <%== error[:process_name] %>
21
+ <%== error[:process][:name] %>
20
22
  </td>
21
23
  <td>
22
24
  <%= error[:error_class] %>:
@@ -1,12 +1,20 @@
1
1
  <%==
2
2
  type = @error_message.payload[:type]
3
3
  error_class = @error_message.payload[:error_class]
4
- offset = @error_message.offset
5
4
 
6
- view_title("#{type}: #{error_class} #{offset}", hr: true)
5
+ view_title("#{type}: #{error_class}")
7
6
  %>
8
7
 
9
8
  <div class="container">
9
+ <div class="row mb-4">
10
+ <div class="col-sm-12">
11
+ <h5 class="mb-2">
12
+ Metadata
13
+ </h5>
14
+ <hr/>
15
+ </div>
16
+ </div>
17
+
10
18
  <div class="row mb-5">
11
19
  <div class="col-sm-12 table-responsive">
12
20
  <table class="processes bg-white table table-hover table-bordered table-striped mb-0 align-middle">
@@ -27,4 +35,44 @@
27
35
  </table>
28
36
  </div>
29
37
  </div>
38
+
39
+ <div class="row mb-2">
40
+ <div class="col-sm-12">
41
+ <h5 class="mb-2">
42
+ Backtrace
43
+ </h5>
44
+ <hr/>
45
+ </div>
46
+ </div>
47
+
48
+ <div class="mb-4">
49
+ <%== partial 'shared/feature_pro' %>
50
+ </div>
51
+
52
+ <div class="row mb-4">
53
+ <div class="col-sm-12">
54
+ <div class="card">
55
+ <div class="card-body">
56
+ <pre class="m-0 p-0 blurred"><code class="wrapped json p-0 m-0">this is just an example backtrace
57
+ please subscribe to our Pro offering to be able to view the real one
58
+ gems/karafka-rdkafka/lib/rdkafka/consumer.rb:255:in `query_watermark_offsets'
59
+ gems/karafka/lib/karafka/admin.rb:56:in `block in read_topic'
60
+ gems/karafka/lib/karafka/admin.rb:184:in `with_consumer'
61
+ gems/karafka/lib/karafka/admin.rb:55:in `read_topic'
62
+ /mnt/software/Karafka/karafka-web/lib/karafka/web/processing/consumers/state.rb:19:in `current'
63
+ /mnt/software/Karafka/karafka-web/lib/karafka/web/processing/consumers/aggregator.rb:45:in `state'
64
+ /mnt/software/Karafka/karafka-web/lib/karafka/web/processing/consumers/aggregator.rb:38:in `to_json'
65
+ gems/karafka/lib/karafka/processing/strategies/default.rb:136:in `block in handle_shutdown'
66
+ gems/karafka-core/lib/karafka/core/monitoring/notifications.rb:118:in `measure_time_taken'
67
+ gems/karafka-core/lib/karafka/core/monitoring/notifications.rb:94:in `instrument'
68
+ gems/karafka-core/lib/karafka/core/monitoring/monitor.rb:34:in `instrument'
69
+ gems/karafka/lib/karafka/processing/strategies/default.rb:135:in `handle_shutdown'
70
+ gems/karafka/lib/karafka/base_consumer.rb:134:in `on_shutdown'
71
+ gems/karafka/lib/karafka/processing/executor.rb:123:in `shutdown'
72
+ gems/karafka/lib/karafka/processing/jobs/shutdown.rb:18:in `call'
73
+ gems/karafka/lib/karafka/helpers/async.rb:28:in `block in async_call'</code></pre>
74
+ </div>
75
+ </div>
76
+ </div>
77
+ </div>
30
78
  </div>
@@ -0,0 +1,4 @@
1
+ <div class="alert alert-light">
2
+ This Web UI feature is available only to <a target="_blank" href="https://karafka.io/#become-pro">Pro</a>
3
+ users.
4
+ </div>
@@ -3,9 +3,15 @@
3
3
  <div class="row">
4
4
  <nav>
5
5
  <ul class="pagination justify-content-center">
6
+ <li class="page-item <%= 'disabled' if @current_page <= 1 %>">
7
+ <a class="page-link" href="<%= current_path(page: 1) %>">
8
+ <span>&laquo;</span>
9
+ </a>
10
+ </li>
11
+
6
12
  <li class="page-item <%= 'disabled' if @current_page <= 1 %>">
7
13
  <a class="page-link" href="<%= current_path(page: @current_page - 1) %>">
8
- <span>&laquo; Prev</span>
14
+ <span>&lsaquo; Prev</span>
9
15
  </a>
10
16
  </li>
11
17
 
@@ -17,7 +23,7 @@
17
23
 
18
24
  <li class="page-item <%= 'disabled' unless @next_page %>">
19
25
  <a class="page-link" href="<%= current_path(page: @next_page) %>">
20
- <span>Next &raquo;</span>
26
+ <span>Next &rsaquo;</span>
21
27
  </a>
22
28
  </li>
23
29
  </ul>
@@ -37,10 +37,6 @@
37
37
  <li>Architecture consultations</li>
38
38
  </ul>
39
39
 
40
- <p class="mb-5">
41
- If you were looking for a given process or other real-time information, the state might have changed, and the information you are looking for no longer exists.
42
- </p>
43
-
44
40
  <p>
45
41
  <a href="<%= root_path %>" class="btn btn-primary">Go Home</a>
46
42
  <a href="https://karafka.io/#become-pro" class="btn btn-success" target="_blank">Become Pro!</a>
@@ -7,14 +7,5 @@
7
7
  </p>
8
8
 
9
9
  <p>
10
- To fix this, you can either:
11
- </p>
12
-
13
- <ul>
14
- <li>Run <code>bundle exec karafka-web install</code></li>
15
- <li>Run at least one Karafka consumer process</li>
16
- </ul>
17
-
18
- <p class="mb-0">
19
- Any of the above, when successful, will bootstrap the initial state.
10
+ To fix this, you need to ensure that the <code>bundle exec karafka-web install</code> runs successfully.
20
11
  </p>
@@ -13,7 +13,12 @@
13
13
  </span>
14
14
 
15
15
  <span class="badge bg-secondary">
16
- karafka core
16
+ karafka-web
17
+ <%= @sampler.karafka_web_version %>
18
+ </span>
19
+
20
+ <span class="badge bg-secondary">
21
+ karafka-core
17
22
  <%= @sampler.karafka_core_version %>
18
23
  </span>
19
24
 
@@ -8,7 +8,12 @@
8
8
  "status/#{@status.connection.to_s}",
9
9
  locals: {
10
10
  title: 'Connection to Kafka',
11
- description: partial('status/failures/connection')
11
+ description: partial(
12
+ "status/#{@status.connection.partial_namespace}/connection",
13
+ locals: {
14
+ details: @status.connection.details
15
+ }
16
+ )
12
17
  }
13
18
  )
14
19
  %>
@@ -0,0 +1 @@
1
+ <%# Expected to be empty. No content on success needed. %>
@@ -0,0 +1,11 @@
1
+ <p>
2
+ High latency detected when connecting to the Kafka cluster from the Web-UI.
3
+ </p>
4
+
5
+ <p>
6
+ Kafka is not designed to perform optimally under high network latencies; even when configurations seem appropriate, you may still encounter disconnects and other unexpected issues.
7
+ </p>
8
+
9
+ <p class="mb-0">
10
+ It took Web-UI <strong><%= details[:time].round(2) %> ms</strong> to get the cluster info.
11
+ </p>
@@ -3,6 +3,6 @@
3
3
  module Karafka
4
4
  module Web
5
5
  # Current gem version
6
- VERSION = '0.5.2'
6
+ VERSION = '0.6.1'
7
7
  end
8
8
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: karafka-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maciej Mensfeld
@@ -35,7 +35,7 @@ cert_chain:
35
35
  Qf04B9ceLUaC4fPVEz10FyobjaFoY4i32xRto3XnrzeAgfEe4swLq8bQsR3w/EF3
36
36
  MGU0FeSV2Yj7Xc2x/7BzLK8xQn5l7Yy75iPF+KP3vVmDHnNl
37
37
  -----END CERTIFICATE-----
38
- date: 2023-05-22 00:00:00.000000000 Z
38
+ date: 2023-06-25 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: erubi
@@ -57,7 +57,7 @@ dependencies:
57
57
  requirements:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: 2.0.40
60
+ version: 2.1.4
61
61
  - - "<"
62
62
  - !ruby/object:Gem::Version
63
63
  version: 3.0.0
@@ -67,7 +67,7 @@ dependencies:
67
67
  requirements:
68
68
  - - ">="
69
69
  - !ruby/object:Gem::Version
70
- version: 2.0.40
70
+ version: 2.1.4
71
71
  - - "<"
72
72
  - !ruby/object:Gem::Version
73
73
  version: 3.0.0
@@ -77,7 +77,7 @@ dependencies:
77
77
  requirements:
78
78
  - - ">="
79
79
  - !ruby/object:Gem::Version
80
- version: 2.0.12
80
+ version: 2.0.13
81
81
  - - "<"
82
82
  - !ruby/object:Gem::Version
83
83
  version: 3.0.0
@@ -87,7 +87,7 @@ dependencies:
87
87
  requirements:
88
88
  - - ">="
89
89
  - !ruby/object:Gem::Version
90
- version: 2.0.12
90
+ version: 2.0.13
91
91
  - - "<"
92
92
  - !ruby/object:Gem::Version
93
93
  version: 3.0.0
@@ -97,14 +97,20 @@ dependencies:
97
97
  requirements:
98
98
  - - "~>"
99
99
  - !ruby/object:Gem::Version
100
- version: '3.63'
100
+ version: '3.68'
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '3.68'
101
104
  type: :runtime
102
105
  prerelease: false
103
106
  version_requirements: !ruby/object:Gem::Requirement
104
107
  requirements:
105
108
  - - "~>"
106
109
  - !ruby/object:Gem::Version
107
- version: '3.63'
110
+ version: '3.68'
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '3.68'
108
114
  - !ruby/object:Gem::Dependency
109
115
  name: tilt
110
116
  requirement: !ruby/object:Gem::Requirement
@@ -171,7 +177,6 @@ files:
171
177
  - lib/karafka/web/processing/consumer.rb
172
178
  - lib/karafka/web/processing/consumers/aggregator.rb
173
179
  - lib/karafka/web/processing/consumers/state.rb
174
- - lib/karafka/web/tracking/base_contract.rb
175
180
  - lib/karafka/web/tracking/consumers/contracts/consumer_group.rb
176
181
  - lib/karafka/web/tracking/consumers/contracts/job.rb
177
182
  - lib/karafka/web/tracking/consumers/contracts/partition.rb
@@ -185,9 +190,17 @@ files:
185
190
  - lib/karafka/web/tracking/consumers/listeners/statistics.rb
186
191
  - lib/karafka/web/tracking/consumers/listeners/status.rb
187
192
  - lib/karafka/web/tracking/consumers/listeners/tags.rb
193
+ - lib/karafka/web/tracking/consumers/reporter.rb
188
194
  - lib/karafka/web/tracking/consumers/sampler.rb
195
+ - lib/karafka/web/tracking/contracts/base.rb
196
+ - lib/karafka/web/tracking/contracts/error.rb
197
+ - lib/karafka/web/tracking/helpers/error_info.rb
189
198
  - lib/karafka/web/tracking/memoized_shell.rb
190
- - lib/karafka/web/tracking/reporter.rb
199
+ - lib/karafka/web/tracking/producers/listeners/base.rb
200
+ - lib/karafka/web/tracking/producers/listeners/errors.rb
201
+ - lib/karafka/web/tracking/producers/listeners/reporter.rb
202
+ - lib/karafka/web/tracking/producers/reporter.rb
203
+ - lib/karafka/web/tracking/producers/sampler.rb
191
204
  - lib/karafka/web/tracking/sampler.rb
192
205
  - lib/karafka/web/tracking/ttl_array.rb
193
206
  - lib/karafka/web/tracking/ttl_hash.rb
@@ -207,6 +220,7 @@ files:
207
220
  - lib/karafka/web/ui/lib/hash_proxy.rb
208
221
  - lib/karafka/web/ui/lib/paginate_array.rb
209
222
  - lib/karafka/web/ui/models/consumer_group.rb
223
+ - lib/karafka/web/ui/models/counters.rb
210
224
  - lib/karafka/web/ui/models/health.rb
211
225
  - lib/karafka/web/ui/models/job.rb
212
226
  - lib/karafka/web/ui/models/message.rb
@@ -231,7 +245,6 @@ files:
231
245
  - lib/karafka/web/ui/pro/views/consumers/_breadcrumbs.erb
232
246
  - lib/karafka/web/ui/pro/views/consumers/_consumer.erb
233
247
  - lib/karafka/web/ui/pro/views/consumers/_counters.erb
234
- - lib/karafka/web/ui/pro/views/consumers/_summary.erb
235
248
  - lib/karafka/web/ui/pro/views/consumers/consumer/_consumer_group.erb
236
249
  - lib/karafka/web/ui/pro/views/consumers/consumer/_job.erb
237
250
  - lib/karafka/web/ui/pro/views/consumers/consumer/_metrics.erb
@@ -249,10 +262,7 @@ files:
249
262
  - lib/karafka/web/ui/pro/views/dlq/_topic.erb
250
263
  - lib/karafka/web/ui/pro/views/dlq/index.erb
251
264
  - lib/karafka/web/ui/pro/views/errors/_breadcrumbs.erb
252
- - lib/karafka/web/ui/pro/views/errors/_cleaned.erb
253
- - lib/karafka/web/ui/pro/views/errors/_detail.erb
254
265
  - lib/karafka/web/ui/pro/views/errors/_error.erb
255
- - lib/karafka/web/ui/pro/views/errors/_no_errors.erb
256
266
  - lib/karafka/web/ui/pro/views/errors/_partition_option.erb
257
267
  - lib/karafka/web/ui/pro/views/errors/index.erb
258
268
  - lib/karafka/web/ui/pro/views/errors/show.erb
@@ -273,7 +283,6 @@ files:
273
283
  - lib/karafka/web/ui/pro/views/health/_breadcrumbs.erb
274
284
  - lib/karafka/web/ui/pro/views/health/_partition.erb
275
285
  - lib/karafka/web/ui/pro/views/health/index.erb
276
- - lib/karafka/web/ui/pro/views/jobs/_breadcrumbs.erb
277
286
  - lib/karafka/web/ui/pro/views/jobs/_job.erb
278
287
  - lib/karafka/web/ui/pro/views/jobs/_no_jobs.erb
279
288
  - lib/karafka/web/ui/pro/views/jobs/index.erb
@@ -293,9 +302,9 @@ files:
293
302
  - lib/karafka/web/ui/views/cluster/_broker.erb
294
303
  - lib/karafka/web/ui/views/cluster/_partition.erb
295
304
  - lib/karafka/web/ui/views/cluster/index.erb
296
- - lib/karafka/web/ui/views/consumers/_breadcrumbs.erb
297
305
  - lib/karafka/web/ui/views/consumers/_consumer.erb
298
306
  - lib/karafka/web/ui/views/consumers/_counters.erb
307
+ - lib/karafka/web/ui/views/consumers/_no_consumers.erb
299
308
  - lib/karafka/web/ui/views/consumers/_summary.erb
300
309
  - lib/karafka/web/ui/views/consumers/index.erb
301
310
  - lib/karafka/web/ui/views/errors/_breadcrumbs.erb
@@ -320,6 +329,7 @@ files:
320
329
  - lib/karafka/web/ui/views/shared/_become_pro.erb
321
330
  - lib/karafka/web/ui/views/shared/_brand.erb
322
331
  - lib/karafka/web/ui/views/shared/_content.erb
332
+ - lib/karafka/web/ui/views/shared/_feature_pro.erb
323
333
  - lib/karafka/web/ui/views/shared/_header.erb
324
334
  - lib/karafka/web/ui/views/shared/_navigation.erb
325
335
  - lib/karafka/web/ui/views/shared/_pagination.erb
@@ -339,6 +349,8 @@ files:
339
349
  - lib/karafka/web/ui/views/status/failures/_topics.erb
340
350
  - lib/karafka/web/ui/views/status/info/_components.erb
341
351
  - lib/karafka/web/ui/views/status/show.erb
352
+ - lib/karafka/web/ui/views/status/successes/_connection.erb
353
+ - lib/karafka/web/ui/views/status/warnings/_connection.erb
342
354
  - lib/karafka/web/ui/views/status/warnings/_pro_subscription.erb
343
355
  - lib/karafka/web/version.rb
344
356
  - renovate.json
metadata.gz.sig CHANGED
Binary file
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Karafka
4
- module Web
5
- module Tracking
6
- # Base for all the metric related contracts
7
- class BaseContract < ::Karafka::Core::Contractable::Contract
8
- class << self
9
- # This layer is not for users extensive feedback, thus we can easily use the minimum
10
- # error messaging there is.
11
- def configure
12
- super do |config|
13
- config.error_messages = YAML.safe_load(
14
- File.read(
15
- File.join(Karafka::Web.gem_root, 'config', 'locales', 'errors.yml')
16
- )
17
- ).fetch('en').fetch('validations').fetch('web')
18
- end
19
- end
20
- end
21
-
22
- # @param data [Hash] data for validation
23
- # @return [Boolean] true if all good
24
- # @raise [Errors::ContractError] invalid report
25
- def validate!(data)
26
- super(data, Errors::Tracking::ContractError)
27
- end
28
- end
29
- end
30
- end
31
- end