flight_control 2.0.0.beta.1 → 2.0.0.beta.3
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
- data/CHANGELOG.md +26 -1
- data/README.md +23 -0
- data/app/assets/config/flight_control_manifest.js +3 -0
- data/app/assets/stylesheets/flight_control/application.css +5 -0
- data/app/assets/stylesheets/flight_control/bulma.min.css +21013 -0
- data/app/assets/stylesheets/flight_control/forms.css +8 -0
- data/app/assets/stylesheets/flight_control/jobs.css +42 -0
- data/app/controllers/concerns/flight_control/adapter_features.rb +25 -0
- data/app/controllers/concerns/flight_control/application_scoped.rb +39 -0
- data/app/controllers/concerns/flight_control/basic_authentication.rb +34 -0
- data/app/controllers/concerns/flight_control/failed_jobs_bulk_operations.rb +18 -0
- data/app/controllers/concerns/flight_control/job_filters.rb +44 -0
- data/app/controllers/concerns/flight_control/job_scoped.rb +17 -0
- data/app/controllers/concerns/flight_control/not_found_redirections.rb +36 -0
- data/app/controllers/concerns/flight_control/queue_scoped.rb +13 -0
- data/app/controllers/flight_control/application_controller.rb +35 -0
- data/app/controllers/flight_control/bulk_discards_controller.rb +21 -0
- data/app/controllers/flight_control/bulk_retries_controller.rb +10 -0
- data/app/controllers/flight_control/discards_controller.rb +19 -0
- data/app/controllers/flight_control/dispatches_controller.rb +19 -0
- data/app/controllers/flight_control/job_launches_controller.rb +28 -0
- data/app/controllers/flight_control/jobs_controller.rb +40 -0
- data/app/controllers/flight_control/queues/pauses_controller.rb +15 -0
- data/app/controllers/flight_control/queues_controller.rb +17 -0
- data/app/controllers/flight_control/recurring_tasks_controller.rb +39 -0
- data/app/controllers/flight_control/retries_controller.rb +14 -0
- data/app/controllers/flight_control/workers_controller.rb +24 -0
- data/app/helpers/flight_control/application_helper.rb +12 -0
- data/app/helpers/flight_control/dates_helper.rb +30 -0
- data/app/helpers/flight_control/interface_helper.rb +23 -0
- data/app/helpers/flight_control/jobs_helper.rb +105 -0
- data/app/helpers/flight_control/navigation_helper.rb +61 -0
- data/app/javascript/flight_control/application.js +3 -0
- data/app/javascript/flight_control/controllers/application.js +9 -0
- data/app/javascript/flight_control/controllers/form_controller.js +8 -0
- data/app/javascript/flight_control/controllers/index.js +11 -0
- data/app/javascript/flight_control/controllers/local_time_controller.js +27 -0
- data/app/models/flight_control/application_record.rb +5 -0
- data/app/models/flight_control/current.rb +3 -0
- data/app/models/flight_control/job_launch.rb +75 -0
- data/app/models/flight_control/page.rb +49 -0
- data/app/models/flight_control/recurring_task.rb +26 -0
- data/app/models/flight_control/worker.rb +18 -0
- data/app/views/flight_control/job_launches/new.html.erb +53 -0
- data/app/views/flight_control/jobs/_date_range_filter.html.erb +11 -0
- data/app/views/flight_control/jobs/_error_information.html.erb +24 -0
- data/app/views/flight_control/jobs/_filters.html.erb +49 -0
- data/app/views/flight_control/jobs/_general_information.html.erb +77 -0
- data/app/views/flight_control/jobs/_job.html.erb +13 -0
- data/app/views/flight_control/jobs/_jobs_page.html.erb +13 -0
- data/app/views/flight_control/jobs/_raw_data.html.erb +4 -0
- data/app/views/flight_control/jobs/_title.html.erb +19 -0
- data/app/views/flight_control/jobs/_toolbar.html.erb +18 -0
- data/app/views/flight_control/jobs/blocked/_actions.html.erb +3 -0
- data/app/views/flight_control/jobs/blocked/_job.html.erb +8 -0
- data/app/views/flight_control/jobs/failed/_actions.html.erb +5 -0
- data/app/views/flight_control/jobs/failed/_backtrace_toggle.html.erb +14 -0
- data/app/views/flight_control/jobs/failed/_job.html.erb +8 -0
- data/app/views/flight_control/jobs/finished/_job.html.erb +3 -0
- data/app/views/flight_control/jobs/in_progress/_job.html.erb +9 -0
- data/app/views/flight_control/jobs/index.html.erb +19 -0
- data/app/views/flight_control/jobs/scheduled/_actions.html.erb +5 -0
- data/app/views/flight_control/jobs/scheduled/_job.html.erb +13 -0
- data/app/views/flight_control/jobs/show.html.erb +6 -0
- data/app/views/flight_control/queues/_actions.html.erb +7 -0
- data/app/views/flight_control/queues/_job.html.erb +15 -0
- data/app/views/flight_control/queues/_queue.html.erb +16 -0
- data/app/views/flight_control/queues/_queue_title.html.erb +17 -0
- data/app/views/flight_control/queues/index.html.erb +21 -0
- data/app/views/flight_control/queues/show.html.erb +25 -0
- data/app/views/flight_control/recurring_tasks/_actions.html.erb +5 -0
- data/app/views/flight_control/recurring_tasks/_general_information.html.erb +37 -0
- data/app/views/flight_control/recurring_tasks/_recurring_task.html.erb +22 -0
- data/app/views/flight_control/recurring_tasks/_title.html.erb +10 -0
- data/app/views/flight_control/recurring_tasks/index.html.erb +18 -0
- data/app/views/flight_control/recurring_tasks/show.html.erb +14 -0
- data/app/views/flight_control/shared/_job.html.erb +27 -0
- data/app/views/flight_control/shared/_jobs.html.erb +14 -0
- data/app/views/flight_control/shared/_pagination_toolbar.html.erb +7 -0
- data/app/views/flight_control/workers/_configuration.html.erb +6 -0
- data/app/views/flight_control/workers/_raw_data.html.erb +6 -0
- data/app/views/flight_control/workers/_title.html.erb +11 -0
- data/app/views/flight_control/workers/_worker.html.erb +21 -0
- data/app/views/flight_control/workers/_workers_page.html.erb +15 -0
- data/app/views/flight_control/workers/index.html.erb +6 -0
- data/app/views/flight_control/workers/show.html.erb +14 -0
- data/app/views/layouts/flight_control/_application_selection.html.erb +14 -0
- data/app/views/layouts/flight_control/_flash.html.erb +9 -0
- data/app/views/layouts/flight_control/_navigation.html.erb +9 -0
- data/app/views/layouts/flight_control/application.html.erb +28 -0
- data/app/views/layouts/flight_control/application_selection/_applications.html.erb +13 -0
- data/app/views/layouts/flight_control/application_selection/_servers.html.erb +15 -0
- data/config/importmap.rb +5 -0
- data/config/routes.rb +34 -0
- data/lib/active_job/job_proxy.rb +2 -1
- data/lib/active_job/jobs_relation.rb +17 -5
- data/lib/active_job/queue_adapters/solid_queue_ext.rb +43 -5
- data/lib/flight_control/engine.rb +7 -1
- data/lib/flight_control/host_route_helpers.rb +34 -0
- data/lib/flight_control/version.rb +1 -1
- data/lib/flight_control.rb +1 -0
- metadata +94 -1
data/config/routes.rb
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
FlightControl::Engine.routes.draw do
|
|
2
|
+
resources :applications, only: [] do
|
|
3
|
+
resources :queues, only: [:index, :show] do
|
|
4
|
+
scope module: :queues do
|
|
5
|
+
resource :pause, only: [:create, :destroy]
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
resources :jobs, only: :show do
|
|
10
|
+
resource :retry, only: :create
|
|
11
|
+
resource :discard, only: :create
|
|
12
|
+
resource :dispatch, only: :create
|
|
13
|
+
|
|
14
|
+
collection do
|
|
15
|
+
resource :bulk_retries, only: :create
|
|
16
|
+
resource :bulk_discards, only: :create
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
resources :jobs, only: :index, path: ":status/jobs"
|
|
21
|
+
|
|
22
|
+
resources :workers, only: [:index, :show]
|
|
23
|
+
resources :recurring_tasks, only: [:index, :show, :update]
|
|
24
|
+
resources :job_launches, only: [:new, :create]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Allow referencing urls without providing an application_id. It will default to the first one.
|
|
28
|
+
resources :queues, only: [:index, :show]
|
|
29
|
+
|
|
30
|
+
resources :jobs, only: :show
|
|
31
|
+
resources :jobs, only: :index, path: ":status/jobs"
|
|
32
|
+
|
|
33
|
+
root to: "queues#index"
|
|
34
|
+
end
|
data/lib/active_job/job_proxy.rb
CHANGED
|
@@ -28,7 +28,8 @@ class ActiveJob::JobProxy < ActiveJob::Base
|
|
|
28
28
|
|
|
29
29
|
def duration
|
|
30
30
|
ended_at = finished_at || failed_at
|
|
31
|
-
|
|
31
|
+
started_at = scheduled_at || enqueued_at
|
|
32
|
+
ended_at - started_at if ended_at && started_at
|
|
32
33
|
end
|
|
33
34
|
|
|
34
35
|
ActiveJob::JobsRelation::STATUSES.each do |status|
|
|
@@ -23,9 +23,9 @@ class ActiveJob::JobsRelation
|
|
|
23
23
|
include Enumerable
|
|
24
24
|
|
|
25
25
|
STATUSES = %i[pending failed in_progress blocked scheduled finished]
|
|
26
|
-
FILTERS = %i[queue_name job_class_name]
|
|
26
|
+
FILTERS = %i[queue_name job_class_name scheduled_at enqueued_at]
|
|
27
27
|
|
|
28
|
-
PROPERTIES = %i[queue_name status offset_value limit_value job_class_name worker_id recurring_task_id finished_at]
|
|
28
|
+
PROPERTIES = %i[queue_name status offset_value limit_value job_class_name worker_id recurring_task_id finished_at scheduled_at enqueued_at]
|
|
29
29
|
attr_reader(*PROPERTIES, :default_page_size)
|
|
30
30
|
|
|
31
31
|
delegate :last, :[], :reverse, to: :to_a
|
|
@@ -52,13 +52,17 @@ class ActiveJob::JobsRelation
|
|
|
52
52
|
# * <tt>:worker_id</tt> - To only include the jobs processed by the provided worker.
|
|
53
53
|
# * <tt>:recurring_task_id</tt> - To only include the jobs corresponding to runs of a recurring task.
|
|
54
54
|
# * <tt>:finished_at</tt> - (Range) To only include the jobs finished between the provided range
|
|
55
|
-
|
|
55
|
+
# * <tt>:scheduled_at</tt> - (Range) To only include the jobs scheduled between the provided range
|
|
56
|
+
# * <tt>:enqueued_at</tt> - (Range) To only include the jobs enqueued between the provided range
|
|
57
|
+
def where(job_class_name: nil, queue_name: nil, worker_id: nil, recurring_task_id: nil, finished_at: nil, scheduled_at: nil, enqueued_at: nil)
|
|
56
58
|
# Remove nil arguments to avoid overriding parameters when concatenating +where+ clauses
|
|
57
59
|
arguments = {job_class_name: job_class_name,
|
|
58
60
|
queue_name: queue_name&.to_s,
|
|
59
61
|
worker_id: worker_id,
|
|
60
62
|
recurring_task_id: recurring_task_id,
|
|
61
|
-
finished_at: finished_at
|
|
63
|
+
finished_at: finished_at,
|
|
64
|
+
scheduled_at: scheduled_at,
|
|
65
|
+
enqueued_at: enqueued_at}.compact
|
|
62
66
|
|
|
63
67
|
clone_with(**arguments)
|
|
64
68
|
end
|
|
@@ -273,7 +277,15 @@ class ActiveJob::JobsRelation
|
|
|
273
277
|
end
|
|
274
278
|
|
|
275
279
|
def satisfy_filter?(job)
|
|
276
|
-
filters.all? { |property| public_send(property)
|
|
280
|
+
filters.all? { |property| satisfies_filter?(public_send(property), job.public_send(property)) }
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
def satisfies_filter?(filter_value, job_value)
|
|
284
|
+
if filter_value.is_a?(Range)
|
|
285
|
+
filter_value.cover?(job_value)
|
|
286
|
+
else
|
|
287
|
+
filter_value == job_value
|
|
288
|
+
end
|
|
277
289
|
end
|
|
278
290
|
|
|
279
291
|
def filters
|
|
@@ -5,12 +5,14 @@ module ActiveJob::QueueAdapters::SolidQueueExt
|
|
|
5
5
|
|
|
6
6
|
def queues
|
|
7
7
|
queues = SolidQueue::Queue.all
|
|
8
|
-
|
|
8
|
+
queue_names = queues.map(&:name)
|
|
9
|
+
pauses = SolidQueue::Pause.where(queue_name: queue_names).index_by(&:queue_name)
|
|
10
|
+
sizes = SolidQueue::ReadyExecution.where(queue_name: queue_names).group(:queue_name).count
|
|
9
11
|
|
|
10
12
|
queues.collect do |queue|
|
|
11
13
|
{
|
|
12
14
|
name: queue.name,
|
|
13
|
-
size: queue.
|
|
15
|
+
size: sizes[queue.name] || 0,
|
|
14
16
|
active: pauses[queue.name].nil?
|
|
15
17
|
}
|
|
16
18
|
end
|
|
@@ -41,7 +43,7 @@ module ActiveJob::QueueAdapters::SolidQueueExt
|
|
|
41
43
|
end
|
|
42
44
|
|
|
43
45
|
def supported_job_filters(*)
|
|
44
|
-
[:queue_name, :job_class_name, :finished_at]
|
|
46
|
+
[:queue_name, :job_class_name, :finished_at, :scheduled_at, :enqueued_at]
|
|
45
47
|
end
|
|
46
48
|
|
|
47
49
|
def jobs_count(jobs_relation)
|
|
@@ -129,6 +131,11 @@ module ActiveJob::QueueAdapters::SolidQueueExt
|
|
|
129
131
|
message: solid_queue_job.failed_execution.message,
|
|
130
132
|
backtrace: solid_queue_job.failed_execution.backtrace || []
|
|
131
133
|
end
|
|
134
|
+
rescue JSON::ParserError
|
|
135
|
+
ActiveJob::ExecutionError.new \
|
|
136
|
+
error_class: "",
|
|
137
|
+
message: solid_queue_job.failed_execution.error_before_type_cast,
|
|
138
|
+
backtrace: []
|
|
132
139
|
end
|
|
133
140
|
|
|
134
141
|
def dispatch_immediately(job)
|
|
@@ -183,7 +190,7 @@ module ActiveJob::QueueAdapters::SolidQueueExt
|
|
|
183
190
|
attr_reader :jobs_relation
|
|
184
191
|
|
|
185
192
|
delegate :queue_name, :limit_value, :limit_value_provided?, :offset_value, :job_class_name,
|
|
186
|
-
:default_page_size, :worker_id, :recurring_task_id, :finished_at, to: :jobs_relation
|
|
193
|
+
:default_page_size, :worker_id, :recurring_task_id, :finished_at, :scheduled_at, :enqueued_at, to: :jobs_relation
|
|
187
194
|
|
|
188
195
|
def executions
|
|
189
196
|
execution_class_by_status
|
|
@@ -192,6 +199,8 @@ module ActiveJob::QueueAdapters::SolidQueueExt
|
|
|
192
199
|
.then { |executions| filter_executions_by_class(executions) }
|
|
193
200
|
.then { |executions| filter_executions_by_process_id(executions) }
|
|
194
201
|
.then { |executions| filter_executions_by_task_key(executions) }
|
|
202
|
+
.then { |executions| filter_executions_by_scheduled_at(executions) }
|
|
203
|
+
.then { |executions| filter_executions_by_enqueued_at(executions) }
|
|
195
204
|
.then { |executions| limit(executions) }
|
|
196
205
|
.then { |executions| offset(executions) }
|
|
197
206
|
end
|
|
@@ -201,6 +210,8 @@ module ActiveJob::QueueAdapters::SolidQueueExt
|
|
|
201
210
|
.then { |jobs| filter_jobs_by_queue(jobs) }
|
|
202
211
|
.then { |jobs| filter_jobs_by_class(jobs) }
|
|
203
212
|
.then { |jobs| filter_jobs_by_finished_at(jobs) }
|
|
213
|
+
.then { |jobs| filter_jobs_by_scheduled_at(jobs) }
|
|
214
|
+
.then { |jobs| filter_jobs_by_enqueued_at(jobs) }
|
|
204
215
|
.then { |jobs| limit(jobs) }
|
|
205
216
|
.then { |jobs| offset(jobs) }
|
|
206
217
|
end
|
|
@@ -210,9 +221,13 @@ module ActiveJob::QueueAdapters::SolidQueueExt
|
|
|
210
221
|
end
|
|
211
222
|
|
|
212
223
|
def order_executions(executions)
|
|
213
|
-
# Follow polling order for scheduled executions, the rest newest first
|
|
224
|
+
# Follow polling order for scheduled executions, the rest newest first.
|
|
225
|
+
# Failed executions go by their own id: a job can fail again after being
|
|
226
|
+
# retried, and what's newest is the failure, not the job.
|
|
214
227
|
if solid_queue_status.scheduled?
|
|
215
228
|
executions.ordered
|
|
229
|
+
elsif solid_queue_status.failed?
|
|
230
|
+
executions.order(id: :desc)
|
|
216
231
|
else
|
|
217
232
|
executions.order(job_id: :desc)
|
|
218
233
|
end
|
|
@@ -286,6 +301,29 @@ module ActiveJob::QueueAdapters::SolidQueueExt
|
|
|
286
301
|
finished_at.present? ? jobs.where(finished_at: finished_at) : jobs
|
|
287
302
|
end
|
|
288
303
|
|
|
304
|
+
def filter_executions_by_scheduled_at(executions)
|
|
305
|
+
return executions unless scheduled_at.present?
|
|
306
|
+
|
|
307
|
+
if solid_queue_status.scheduled?
|
|
308
|
+
executions.where(scheduled_at: scheduled_at)
|
|
309
|
+
else
|
|
310
|
+
executions.where(job: {scheduled_at: scheduled_at})
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
def filter_jobs_by_scheduled_at(jobs)
|
|
315
|
+
scheduled_at.present? ? jobs.where(scheduled_at: scheduled_at) : jobs
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
# Jobs are created when enqueued
|
|
319
|
+
def filter_executions_by_enqueued_at(executions)
|
|
320
|
+
enqueued_at.present? ? executions.where(job: {created_at: enqueued_at}) : executions
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
def filter_jobs_by_enqueued_at(jobs)
|
|
324
|
+
enqueued_at.present? ? jobs.where(created_at: enqueued_at) : jobs
|
|
325
|
+
end
|
|
326
|
+
|
|
289
327
|
def limit(executions_or_jobs)
|
|
290
328
|
limit_value.present? ? executions_or_jobs.limit(limit_value) : executions_or_jobs
|
|
291
329
|
end
|
|
@@ -38,12 +38,18 @@ module FlightControl
|
|
|
38
38
|
end
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
+
initializer "flight_control.host_route_helpers" do |app|
|
|
42
|
+
ActiveSupport.on_load(:after_routes_loaded) do
|
|
43
|
+
FlightControl::HostRouteHelpers.define_from(app.routes, FlightControl::Engine.routes)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
41
47
|
initializer "flight_control.http_basic_auth" do |app|
|
|
42
48
|
FlightControl.http_basic_auth_user ||= app.credentials.dig(:flight_control, :http_basic_auth_user)
|
|
43
49
|
FlightControl.http_basic_auth_password ||= app.credentials.dig(:flight_control, :http_basic_auth_password)
|
|
44
50
|
end
|
|
45
51
|
|
|
46
|
-
initializer "flight_control.active_job.extensions" do
|
|
52
|
+
initializer "flight_control.active_job.extensions", before: "active_job.set_configs" do
|
|
47
53
|
ActiveSupport.on_load :active_job do
|
|
48
54
|
include ActiveJob::Querying
|
|
49
55
|
include ActiveJob::Executing
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Route helpers of the host app that the engine doesn't define itself, routed through +main_app+.
|
|
2
|
+
#
|
|
3
|
+
# Flight Control's controllers inherit from the host app's +ApplicationController+ (see
|
|
4
|
+
# +base_controller_class+), so host code such as a +before_action+ redirecting to
|
|
5
|
+
# +new_session_path+ runs inside the engine, where route helpers resolve against the engine's
|
|
6
|
+
# routes and raise +ActionController::UrlGenerationError+. This module defines, for every route
|
|
7
|
+
# helper the host app has and the engine doesn't, a method delegating to the host app's routes,
|
|
8
|
+
# so that code keeps working unchanged.
|
|
9
|
+
#
|
|
10
|
+
# Helpers defined by both, like +root_path+, keep resolving to the engine's, as in any isolated
|
|
11
|
+
# engine; use +main_app.root_path+ for the host's.
|
|
12
|
+
module FlightControl::HostRouteHelpers
|
|
13
|
+
class << self
|
|
14
|
+
def define_from(host_routes, engine_routes)
|
|
15
|
+
undefine_all
|
|
16
|
+
|
|
17
|
+
(host_routes.named_routes.helper_names - engine_routes.named_routes.helper_names).each do |name|
|
|
18
|
+
define_method(name) { |*args| main_app.public_send(name, *args) }
|
|
19
|
+
defined_helpers << name
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
def undefine_all
|
|
26
|
+
defined_helpers.each { |name| remove_method(name) }
|
|
27
|
+
defined_helpers.clear
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def defined_helpers
|
|
31
|
+
@defined_helpers ||= []
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
data/lib/flight_control.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: flight_control
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.0.beta.
|
|
4
|
+
version: 2.0.0.beta.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jury Razumau
|
|
@@ -313,6 +313,98 @@ files:
|
|
|
313
313
|
- MIT-LICENSE
|
|
314
314
|
- README.md
|
|
315
315
|
- Rakefile
|
|
316
|
+
- app/assets/config/flight_control_manifest.js
|
|
317
|
+
- app/assets/stylesheets/flight_control/application.css
|
|
318
|
+
- app/assets/stylesheets/flight_control/bulma.min.css
|
|
319
|
+
- app/assets/stylesheets/flight_control/forms.css
|
|
320
|
+
- app/assets/stylesheets/flight_control/jobs.css
|
|
321
|
+
- app/controllers/concerns/flight_control/adapter_features.rb
|
|
322
|
+
- app/controllers/concerns/flight_control/application_scoped.rb
|
|
323
|
+
- app/controllers/concerns/flight_control/basic_authentication.rb
|
|
324
|
+
- app/controllers/concerns/flight_control/failed_jobs_bulk_operations.rb
|
|
325
|
+
- app/controllers/concerns/flight_control/job_filters.rb
|
|
326
|
+
- app/controllers/concerns/flight_control/job_scoped.rb
|
|
327
|
+
- app/controllers/concerns/flight_control/not_found_redirections.rb
|
|
328
|
+
- app/controllers/concerns/flight_control/queue_scoped.rb
|
|
329
|
+
- app/controllers/flight_control/application_controller.rb
|
|
330
|
+
- app/controllers/flight_control/bulk_discards_controller.rb
|
|
331
|
+
- app/controllers/flight_control/bulk_retries_controller.rb
|
|
332
|
+
- app/controllers/flight_control/discards_controller.rb
|
|
333
|
+
- app/controllers/flight_control/dispatches_controller.rb
|
|
334
|
+
- app/controllers/flight_control/job_launches_controller.rb
|
|
335
|
+
- app/controllers/flight_control/jobs_controller.rb
|
|
336
|
+
- app/controllers/flight_control/queues/pauses_controller.rb
|
|
337
|
+
- app/controllers/flight_control/queues_controller.rb
|
|
338
|
+
- app/controllers/flight_control/recurring_tasks_controller.rb
|
|
339
|
+
- app/controllers/flight_control/retries_controller.rb
|
|
340
|
+
- app/controllers/flight_control/workers_controller.rb
|
|
341
|
+
- app/helpers/flight_control/application_helper.rb
|
|
342
|
+
- app/helpers/flight_control/dates_helper.rb
|
|
343
|
+
- app/helpers/flight_control/interface_helper.rb
|
|
344
|
+
- app/helpers/flight_control/jobs_helper.rb
|
|
345
|
+
- app/helpers/flight_control/navigation_helper.rb
|
|
346
|
+
- app/javascript/flight_control/application.js
|
|
347
|
+
- app/javascript/flight_control/controllers/application.js
|
|
348
|
+
- app/javascript/flight_control/controllers/form_controller.js
|
|
349
|
+
- app/javascript/flight_control/controllers/index.js
|
|
350
|
+
- app/javascript/flight_control/controllers/local_time_controller.js
|
|
351
|
+
- app/models/flight_control/application_record.rb
|
|
352
|
+
- app/models/flight_control/current.rb
|
|
353
|
+
- app/models/flight_control/job_launch.rb
|
|
354
|
+
- app/models/flight_control/page.rb
|
|
355
|
+
- app/models/flight_control/recurring_task.rb
|
|
356
|
+
- app/models/flight_control/worker.rb
|
|
357
|
+
- app/views/flight_control/job_launches/new.html.erb
|
|
358
|
+
- app/views/flight_control/jobs/_date_range_filter.html.erb
|
|
359
|
+
- app/views/flight_control/jobs/_error_information.html.erb
|
|
360
|
+
- app/views/flight_control/jobs/_filters.html.erb
|
|
361
|
+
- app/views/flight_control/jobs/_general_information.html.erb
|
|
362
|
+
- app/views/flight_control/jobs/_job.html.erb
|
|
363
|
+
- app/views/flight_control/jobs/_jobs_page.html.erb
|
|
364
|
+
- app/views/flight_control/jobs/_raw_data.html.erb
|
|
365
|
+
- app/views/flight_control/jobs/_title.html.erb
|
|
366
|
+
- app/views/flight_control/jobs/_toolbar.html.erb
|
|
367
|
+
- app/views/flight_control/jobs/blocked/_actions.html.erb
|
|
368
|
+
- app/views/flight_control/jobs/blocked/_job.html.erb
|
|
369
|
+
- app/views/flight_control/jobs/failed/_actions.html.erb
|
|
370
|
+
- app/views/flight_control/jobs/failed/_backtrace_toggle.html.erb
|
|
371
|
+
- app/views/flight_control/jobs/failed/_job.html.erb
|
|
372
|
+
- app/views/flight_control/jobs/finished/_job.html.erb
|
|
373
|
+
- app/views/flight_control/jobs/in_progress/_job.html.erb
|
|
374
|
+
- app/views/flight_control/jobs/index.html.erb
|
|
375
|
+
- app/views/flight_control/jobs/scheduled/_actions.html.erb
|
|
376
|
+
- app/views/flight_control/jobs/scheduled/_job.html.erb
|
|
377
|
+
- app/views/flight_control/jobs/show.html.erb
|
|
378
|
+
- app/views/flight_control/queues/_actions.html.erb
|
|
379
|
+
- app/views/flight_control/queues/_job.html.erb
|
|
380
|
+
- app/views/flight_control/queues/_queue.html.erb
|
|
381
|
+
- app/views/flight_control/queues/_queue_title.html.erb
|
|
382
|
+
- app/views/flight_control/queues/index.html.erb
|
|
383
|
+
- app/views/flight_control/queues/show.html.erb
|
|
384
|
+
- app/views/flight_control/recurring_tasks/_actions.html.erb
|
|
385
|
+
- app/views/flight_control/recurring_tasks/_general_information.html.erb
|
|
386
|
+
- app/views/flight_control/recurring_tasks/_recurring_task.html.erb
|
|
387
|
+
- app/views/flight_control/recurring_tasks/_title.html.erb
|
|
388
|
+
- app/views/flight_control/recurring_tasks/index.html.erb
|
|
389
|
+
- app/views/flight_control/recurring_tasks/show.html.erb
|
|
390
|
+
- app/views/flight_control/shared/_job.html.erb
|
|
391
|
+
- app/views/flight_control/shared/_jobs.html.erb
|
|
392
|
+
- app/views/flight_control/shared/_pagination_toolbar.html.erb
|
|
393
|
+
- app/views/flight_control/workers/_configuration.html.erb
|
|
394
|
+
- app/views/flight_control/workers/_raw_data.html.erb
|
|
395
|
+
- app/views/flight_control/workers/_title.html.erb
|
|
396
|
+
- app/views/flight_control/workers/_worker.html.erb
|
|
397
|
+
- app/views/flight_control/workers/_workers_page.html.erb
|
|
398
|
+
- app/views/flight_control/workers/index.html.erb
|
|
399
|
+
- app/views/flight_control/workers/show.html.erb
|
|
400
|
+
- app/views/layouts/flight_control/_application_selection.html.erb
|
|
401
|
+
- app/views/layouts/flight_control/_flash.html.erb
|
|
402
|
+
- app/views/layouts/flight_control/_navigation.html.erb
|
|
403
|
+
- app/views/layouts/flight_control/application.html.erb
|
|
404
|
+
- app/views/layouts/flight_control/application_selection/_applications.html.erb
|
|
405
|
+
- app/views/layouts/flight_control/application_selection/_servers.html.erb
|
|
406
|
+
- config/importmap.rb
|
|
407
|
+
- config/routes.rb
|
|
316
408
|
- lib/active_job/errors/invalid_operation.rb
|
|
317
409
|
- lib/active_job/errors/job_not_found_error.rb
|
|
318
410
|
- lib/active_job/errors/query_error.rb
|
|
@@ -340,6 +432,7 @@ files:
|
|
|
340
432
|
- lib/flight_control/errors/incompatible_adapter.rb
|
|
341
433
|
- lib/flight_control/errors/resource_not_found.rb
|
|
342
434
|
- lib/flight_control/errors/unsupported_adapter.rb
|
|
435
|
+
- lib/flight_control/host_route_helpers.rb
|
|
343
436
|
- lib/flight_control/i18n_config.rb
|
|
344
437
|
- lib/flight_control/identified_by_name.rb
|
|
345
438
|
- lib/flight_control/identified_elements.rb
|