rocketjob_mission_control 1.2.4 → 2.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +201 -0
- data/README.md +85 -0
- data/Rakefile +12 -18
- data/app/assets/javascripts/rocket_job_mission_control/application.js +3 -0
- data/app/assets/javascripts/rocket_job_mission_control/base.js.coffee +9 -12
- data/app/assets/javascripts/rocket_job_mission_control/datatable.js.coffee +31 -0
- data/app/assets/javascripts/rocket_job_mission_control/dirmon_entries.js.coffee +0 -1
- data/app/assets/stylesheets/rocket_job_mission_control/application.scss +2 -0
- data/app/assets/stylesheets/rocket_job_mission_control/base.scss +310 -357
- data/app/assets/stylesheets/rocket_job_mission_control/bootstrap_and_overrides.scss +474 -3
- data/app/assets/stylesheets/rocket_job_mission_control/callout.scss +57 -12
- data/app/assets/stylesheets/rocket_job_mission_control/jobs.scss +3 -2
- data/app/assets/stylesheets/rocket_job_mission_control/worker_processes.scss +9 -0
- data/app/controllers/rocket_job_mission_control/active_processes_controller.rb +26 -0
- data/app/controllers/rocket_job_mission_control/dirmon_entries/index_filters_controller.rb +50 -0
- data/app/controllers/rocket_job_mission_control/dirmon_entries_controller.rb +11 -14
- data/app/controllers/rocket_job_mission_control/jobs/failures_controller.rb +2 -2
- data/app/controllers/rocket_job_mission_control/jobs/index_filters_controller.rb +69 -0
- data/app/controllers/rocket_job_mission_control/jobs_controller.rb +10 -12
- data/app/controllers/rocket_job_mission_control/workers/index_filters_controller.rb +50 -0
- data/app/controllers/rocket_job_mission_control/workers_controller.rb +14 -5
- data/app/datatables/rocket_job_mission_control/active_processes_datatable.rb +79 -0
- data/app/datatables/rocket_job_mission_control/completed_jobs_datatable.rb +26 -0
- data/app/datatables/rocket_job_mission_control/dirmon_entries_datatable.rb +95 -0
- data/app/datatables/rocket_job_mission_control/interrupted_jobs_datatable.rb +25 -0
- data/app/datatables/rocket_job_mission_control/jobs_datatable.rb +95 -0
- data/app/datatables/rocket_job_mission_control/queued_jobs_datatable.rb +22 -0
- data/app/datatables/rocket_job_mission_control/running_jobs_datatable.rb +35 -0
- data/app/datatables/rocket_job_mission_control/scheduled_jobs_datatable.rb +30 -0
- data/app/datatables/rocket_job_mission_control/workers_datatable.rb +127 -0
- data/app/helpers/rocket_job_mission_control/application_helper.rb +21 -2
- data/app/helpers/rocket_job_mission_control/dirmon_entries_helper.rb +7 -0
- data/app/helpers/rocket_job_mission_control/jobs_helper.rb +9 -26
- data/app/helpers/rocket_job_mission_control/workers_helper.rb +18 -6
- data/app/interactors/rocket_job_mission_control/dirmon_entries/search.rb +19 -0
- data/app/interactors/rocket_job_mission_control/jobs/search.rb +19 -0
- data/app/interactors/rocket_job_mission_control/workers/search.rb +19 -0
- data/app/models/job_failures.rb +5 -5
- data/app/views/layouts/rocket_job_mission_control/application.html.haml +22 -22
- data/app/views/layouts/rocket_job_mission_control/partials/_header.html.haml +33 -18
- data/app/views/layouts/rocket_job_mission_control/partials/_sidebar.html.haml +11 -24
- data/app/views/rocket_job_mission_control/active_processes/index.html.haml +24 -0
- data/app/views/rocket_job_mission_control/dirmon_entries/_form.html.haml +11 -10
- data/app/views/rocket_job_mission_control/dirmon_entries/_properties.html.haml +6 -3
- data/app/views/rocket_job_mission_control/dirmon_entries/_sidebar.html.haml +27 -0
- data/app/views/rocket_job_mission_control/dirmon_entries/_status.html.haml +0 -3
- data/app/views/rocket_job_mission_control/dirmon_entries/edit.html.haml +3 -7
- data/app/views/rocket_job_mission_control/dirmon_entries/index.html.haml +17 -10
- data/app/views/rocket_job_mission_control/dirmon_entries/index_filters/disabled.html.haml +17 -0
- data/app/views/rocket_job_mission_control/dirmon_entries/index_filters/enabled.html.haml +17 -0
- data/app/views/rocket_job_mission_control/dirmon_entries/index_filters/failed.html.haml +17 -0
- data/app/views/rocket_job_mission_control/dirmon_entries/index_filters/pending.html.haml +17 -0
- data/app/views/rocket_job_mission_control/dirmon_entries/new.html.haml +5 -8
- data/app/views/rocket_job_mission_control/dirmon_entries/show.html.haml +18 -22
- data/app/views/rocket_job_mission_control/jobs/_sidebar.html.haml +28 -0
- data/app/views/rocket_job_mission_control/jobs/failures/index.html.haml +2 -2
- data/app/views/rocket_job_mission_control/jobs/index.html.haml +23 -10
- data/app/views/rocket_job_mission_control/jobs/index_filters/aborted.html.haml +22 -0
- data/app/views/rocket_job_mission_control/jobs/index_filters/completed.html.haml +23 -0
- data/app/views/rocket_job_mission_control/jobs/index_filters/failed.html.haml +22 -0
- data/app/views/rocket_job_mission_control/jobs/index_filters/paused.html.haml +22 -0
- data/app/views/rocket_job_mission_control/jobs/index_filters/queued.html.haml +23 -0
- data/app/views/rocket_job_mission_control/jobs/index_filters/running.html.haml +24 -0
- data/app/views/rocket_job_mission_control/jobs/index_filters/scheduled.html.haml +23 -0
- data/app/views/rocket_job_mission_control/jobs/show.html.haml +5 -8
- data/app/views/rocket_job_mission_control/workers/_sidebar.html.haml +20 -0
- data/app/views/rocket_job_mission_control/workers/index.html.haml +36 -59
- data/app/views/rocket_job_mission_control/workers/index_filters/paused.html.haml +37 -0
- data/app/views/rocket_job_mission_control/workers/index_filters/running.html.haml +37 -0
- data/app/views/rocket_job_mission_control/workers/index_filters/starting.html.haml +37 -0
- data/app/views/rocket_job_mission_control/workers/index_filters/stopping.html.haml +37 -0
- data/config/routes.rb +28 -5
- data/lib/rocket_job_mission_control/engine.rb +2 -0
- data/lib/rocket_job_mission_control/version.rb +1 -1
- data/spec/controllers/application_controller_spec.rb +1 -1
- data/spec/controllers/dirmon_entries_controller_spec.rb +35 -97
- data/spec/controllers/jobs/failures_controller_spec.rb +4 -4
- data/spec/controllers/jobs_controller_spec.rb +10 -80
- data/spec/dummy/config/environments/development.rb +7 -7
- data/spec/dummy/config/environments/test.rb +9 -9
- data/spec/dummy/log/test.log +5446 -23487
- data/spec/helpers/application_helper_spec.rb +58 -0
- data/spec/helpers/jobs_helper_spec.rb +0 -65
- data/spec/helpers/slices_helper_spec.rb +1 -1
- data/spec/helpers/workers_helper_spec.rb +1 -1
- metadata +64 -44
- data/MIT-LICENSE +0 -20
- data/app/assets/javascripts/rocket_job_mission_control/jobs.js.coffee +0 -11
- data/app/views/rocket_job_mission_control/dirmon_entries/_list.html.haml +0 -31
- data/app/views/rocket_job_mission_control/jobs/_list.html.haml +0 -35
- data/app/views/rocket_job_mission_control/jobs/running.html.haml +0 -37
- data/spec/dummy/log/development.log +0 -0
- data/spec/views/workers/index.html.haml_spec.rb +0 -23
@@ -0,0 +1,27 @@
|
|
1
|
+
%ul#lg-menu.nav.hidden-xs
|
2
|
+
%li
|
3
|
+
= link_to(new_dirmon_entry_path) do
|
4
|
+
%i.fa.fa-plus
|
5
|
+
New Entry
|
6
|
+
%li
|
7
|
+
= link_to(dirmon_entries_path) do
|
8
|
+
%i.fa.fa-list
|
9
|
+
All
|
10
|
+
- RocketJob::DirmonEntry.aasm.states.map { |s| s.name.to_s }.each do |state|
|
11
|
+
%li{class: state}
|
12
|
+
= link_to("#{state}_dirmon_entries".to_sym) do
|
13
|
+
%i.fa{class: state_icon(state)}
|
14
|
+
= state.to_s.capitalize!
|
15
|
+
= "(#{dirmon_counts_by_state(state)})"
|
16
|
+
/ tiny only nav
|
17
|
+
%ul#xs-menu.nav.visible-xs
|
18
|
+
%li
|
19
|
+
= link_to(new_dirmon_entry_path) do
|
20
|
+
%i.fa.fa-plus
|
21
|
+
%li
|
22
|
+
= link_to(dirmon_entries_path) do
|
23
|
+
%i.fa.fa-list
|
24
|
+
- RocketJob::DirmonEntry.aasm.states.map { |s| s.name.to_s }.each do |state|
|
25
|
+
%li{class: state}
|
26
|
+
= link_to("#{state}_dirmon_entries".to_sym) do
|
27
|
+
%i.fa{class: state_icon(state)}
|
@@ -1,8 +1,4 @@
|
|
1
|
-
.
|
2
|
-
|
3
|
-
= render partial: 'list', locals: { jobs: @jobs }
|
1
|
+
.container-fluid
|
2
|
+
.lead Edit Dirmon Entry
|
4
3
|
|
5
|
-
|
6
|
-
.lead Edit Dirmon Entry
|
7
|
-
|
8
|
-
= render partial: 'form', locals: { action: :update }
|
4
|
+
= render partial: 'form', locals: { action: :update }
|
@@ -1,11 +1,18 @@
|
|
1
|
-
.
|
2
|
-
|
3
|
-
|
1
|
+
.dirmon-list
|
2
|
+
.list
|
3
|
+
%h2 All Entries
|
4
|
+
%table.table.datatable.dirmon-datatable{ style: "width: 100%", data: { source: "#{dirmon_entries_url(format: 'json')}" } }
|
5
|
+
%thead
|
6
|
+
%tr
|
7
|
+
%th Name
|
8
|
+
%th Job Class
|
9
|
+
%th Pattern
|
10
|
+
%tbody
|
4
11
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
+
|
13
|
+
:javascript
|
14
|
+
jQuery(function() {
|
15
|
+
new RjmcDatatable(
|
16
|
+
$('.dirmon-datatable'),
|
17
|
+
[{data: '0'}, {data: '1'}, {data: '2'}]);
|
18
|
+
});
|
@@ -0,0 +1,17 @@
|
|
1
|
+
.dirmon-list
|
2
|
+
.list
|
3
|
+
%h2 Disabled Entries
|
4
|
+
%table.table.datatable.dirmon-datatable{ style: "width: 100%", data: { source: "#{disabled_dirmon_entries_url(format: 'json')}" } }
|
5
|
+
%thead
|
6
|
+
%tr
|
7
|
+
%th Name
|
8
|
+
%th Job Class
|
9
|
+
%th Pattern
|
10
|
+
%tbody
|
11
|
+
|
12
|
+
:javascript
|
13
|
+
jQuery(function() {
|
14
|
+
new RjmcDatatable(
|
15
|
+
$('.dirmon-datatable'),
|
16
|
+
[{data: '0'}, {data: '1'}, {data: '2'}]);
|
17
|
+
});
|
@@ -0,0 +1,17 @@
|
|
1
|
+
.dirmon-list
|
2
|
+
.list
|
3
|
+
%h2 Enabled Entries
|
4
|
+
%table.table.datatable.dirmon-datatable{ style: "width: 100%", data: { source: "#{enabled_dirmon_entries_url(format: 'json')}" } }
|
5
|
+
%thead
|
6
|
+
%tr
|
7
|
+
%th Name
|
8
|
+
%th Job Class
|
9
|
+
%th Pattern
|
10
|
+
%tbody
|
11
|
+
|
12
|
+
:javascript
|
13
|
+
jQuery(function() {
|
14
|
+
new RjmcDatatable(
|
15
|
+
$('.dirmon-datatable'),
|
16
|
+
[{data: '0'}, {data: '1'}, {data: '2'}]);
|
17
|
+
});
|
@@ -0,0 +1,17 @@
|
|
1
|
+
.dirmon-list
|
2
|
+
.list
|
3
|
+
%h2 Failed Entries
|
4
|
+
%table.table.datatable.dirmon-datatable{ style: "width: 100%", data: { source: "#{failed_dirmon_entries_url(format: 'json')}" } }
|
5
|
+
%thead
|
6
|
+
%tr
|
7
|
+
%th Name
|
8
|
+
%th Job Class
|
9
|
+
%th Pattern
|
10
|
+
%tbody
|
11
|
+
|
12
|
+
:javascript
|
13
|
+
jQuery(function() {
|
14
|
+
new RjmcDatatable(
|
15
|
+
$('.dirmon-datatable'),
|
16
|
+
[{data: '0'}, {data: '1'}, {data: '2'}]);
|
17
|
+
});
|
@@ -0,0 +1,17 @@
|
|
1
|
+
.dirmon-list
|
2
|
+
.list
|
3
|
+
%h2 Pending Entries
|
4
|
+
%table.table.datatable.dirmon-datatable{ style: "width: 100%", data: { source: "#{pending_dirmon_entries_url(format: 'json')}" } }
|
5
|
+
%thead
|
6
|
+
%tr
|
7
|
+
%th Name
|
8
|
+
%th Job Class
|
9
|
+
%th Pattern
|
10
|
+
%tbody
|
11
|
+
|
12
|
+
:javascript
|
13
|
+
jQuery(function() {
|
14
|
+
new RjmcDatatable(
|
15
|
+
$('.dirmon-datatable'),
|
16
|
+
[{data: '0'}, {data: '1'}, {data: '2'}]);
|
17
|
+
});
|
@@ -1,26 +1,22 @@
|
|
1
|
-
.
|
2
|
-
#
|
3
|
-
=
|
1
|
+
.col-md-12.job-status
|
2
|
+
#job
|
3
|
+
.lead= @dirmon_entry.job_class_name
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
.
|
5
|
+
.job-state.inline-block
|
6
|
+
.left status
|
7
|
+
.right{ class: @dirmon_entry.state }
|
8
|
+
= @dirmon_entry.state
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
.btn-toolbar.job-actions.pull-right
|
11
|
+
.btn-group{ style: 'margin-right: 1em;' }
|
12
|
+
= link_to "Destroy", dirmon_entry_path(@dirmon_entry), method: :delete, class: 'btn btn-default', :data => { :confirm => 'Are you sure?' }
|
13
|
+
- if @dirmon_entry.disabled? || @dirmon_entry.pending?
|
14
|
+
= link_to "Enable", enable_dirmon_entry_path(@dirmon_entry.id), method: :put, class: "btn btn-default"
|
15
|
+
- if @dirmon_entry.enabled?
|
16
|
+
= link_to "Disable", disable_dirmon_entry_path(@dirmon_entry.id), method: :put, class: "btn btn-default", :data => { :confirm => 'Are you sure?' }
|
17
|
+
.btn-group
|
18
|
+
= link_to "Edit", edit_dirmon_entry_path(@dirmon_entry), class: "btn btn-default"
|
13
19
|
|
14
|
-
|
15
|
-
.btn-group{ style: 'margin-right: 1em;' }
|
16
|
-
= link_to "Destroy", dirmon_entry_path(@dirmon_entry), method: :delete, class: 'btn btn-default', :data => { :confirm => 'Are you sure?' }
|
17
|
-
- if @dirmon_entry.disabled? || @dirmon_entry.pending?
|
18
|
-
= link_to "Enable", enable_dirmon_entry_path(@dirmon_entry.id), method: :put, class: "btn btn-default"
|
19
|
-
- if @dirmon_entry.enabled?
|
20
|
-
= link_to "Disable", disable_dirmon_entry_path(@dirmon_entry.id), method: :put, class: "btn btn-default", :data => { :confirm => 'Are you sure?' }
|
21
|
-
.btn-group
|
22
|
-
= link_to "Edit", edit_dirmon_entry_path(@dirmon_entry), class: "btn btn-default"
|
20
|
+
.clearfix
|
23
21
|
|
24
|
-
|
25
|
-
|
26
|
-
= render partial: 'status', locals: { dirmon_entry: @job }
|
22
|
+
= render partial: 'status', locals: { dirmon_entry: @job }
|
@@ -0,0 +1,28 @@
|
|
1
|
+
%ul#lg-menu.nav.hidden-xs
|
2
|
+
%li.active
|
3
|
+
= link_to(jobs_path) do
|
4
|
+
%i.fa.fa-list
|
5
|
+
All
|
6
|
+
%li
|
7
|
+
= link_to(scheduled_jobs_path) do
|
8
|
+
%i.fa.fa-clock-o
|
9
|
+
Scheduled
|
10
|
+
= "(#{job_counts_by_state("scheduled")})"
|
11
|
+
- job_states.each do |state|
|
12
|
+
%li{class: state}
|
13
|
+
= link_to("#{state}_jobs".to_sym) do
|
14
|
+
%i.fa{class: state_icon(state)}
|
15
|
+
= state.capitalize
|
16
|
+
= "(#{job_counts_by_state(state)})"
|
17
|
+
/ tiny only nav
|
18
|
+
%ul#xs-menu.nav.visible-xs
|
19
|
+
%li
|
20
|
+
= link_to(jobs_path) do
|
21
|
+
%i.fa.fa-list
|
22
|
+
%li
|
23
|
+
= link_to(scheduled_jobs_path) do
|
24
|
+
%i.fa.fa-clock-o
|
25
|
+
- job_states.each do |state|
|
26
|
+
%li{class: state}
|
27
|
+
= link_to("#{state}_jobs".to_sym) do
|
28
|
+
%i.fa{class: state_icon(state)}
|
@@ -3,7 +3,7 @@
|
|
3
3
|
.job-list
|
4
4
|
.list-top
|
5
5
|
%ol.breadcrumb
|
6
|
-
%li= link_to(
|
6
|
+
%li= link_to(@job.class.name, job_path(@job))
|
7
7
|
%li.active Failures
|
8
8
|
.clearfix
|
9
9
|
.list
|
@@ -15,7 +15,7 @@
|
|
15
15
|
= slice_error['_id']['error_class']
|
16
16
|
|
17
17
|
.description
|
18
|
-
= "
|
18
|
+
= "Occurrences: #{slice_error['count'].to_i}"
|
19
19
|
|
20
20
|
- if @failure_exception
|
21
21
|
.col-md-8
|
@@ -1,11 +1,24 @@
|
|
1
|
-
.
|
2
|
-
|
3
|
-
|
1
|
+
.job-list
|
2
|
+
.list
|
3
|
+
.row
|
4
|
+
.col-sm-10
|
5
|
+
%h2 Jobs
|
6
|
+
.col-sm-2
|
7
|
+
.btn.btn-default.pull-right.dt-reload{ data: { behavior: 'reload' } }
|
8
|
+
%i.fa.fa-refresh
|
9
|
+
%table.table.datatable.jobs-datatable{ style: "width: 100%", data: { source: "#{jobs_url(format: 'json')}" } }
|
10
|
+
%thead
|
11
|
+
%tr
|
12
|
+
%th Class
|
13
|
+
%th Description
|
14
|
+
%th Completion
|
15
|
+
%th Duration
|
16
|
+
%tbody
|
4
17
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
18
|
+
:javascript
|
19
|
+
jQuery(function() {
|
20
|
+
new RjmcDatatable(
|
21
|
+
$(".jobs-datatable"),
|
22
|
+
[{data: '0'}, {data: '1'}, {data: '2'}, {data: '3', orderable: false}]
|
23
|
+
);
|
24
|
+
});
|
@@ -0,0 +1,22 @@
|
|
1
|
+
.job-list
|
2
|
+
.list
|
3
|
+
.row
|
4
|
+
.col-sm-10
|
5
|
+
%h2 Aborted Jobs
|
6
|
+
.col-sm-2
|
7
|
+
.btn.btn-default.pull-right.dt-reload{ data: { behavior: 'reload' } }
|
8
|
+
%i.fa.fa-refresh
|
9
|
+
%table.table.datatable.jobs-datatable{ style: "width: 100%", data: { source: "#{aborted_jobs_url(format: 'json')}" } }
|
10
|
+
%thead
|
11
|
+
%tr
|
12
|
+
%th Class
|
13
|
+
%th Description
|
14
|
+
%th Aborted
|
15
|
+
%tbody
|
16
|
+
|
17
|
+
:javascript
|
18
|
+
jQuery(function() {
|
19
|
+
new RjmcDatatable(
|
20
|
+
$(".jobs-datatable"),
|
21
|
+
[{data: '0'}, {data: '1'}, {data: '2'}]);
|
22
|
+
});
|
@@ -0,0 +1,23 @@
|
|
1
|
+
.job-list
|
2
|
+
.list
|
3
|
+
.row
|
4
|
+
.col-sm-10
|
5
|
+
%h2 Completed Jobs
|
6
|
+
.col-sm-2
|
7
|
+
.btn.btn-default.pull-right.dt-reload{ data: { behavior: 'reload' } }
|
8
|
+
%i.fa.fa-refresh
|
9
|
+
%table.table.datatable.jobs-datatable{ style: "width: 100%", data: { source: "#{completed_jobs_url(format: 'json')}" } }
|
10
|
+
%thead
|
11
|
+
%tr
|
12
|
+
%th Class
|
13
|
+
%th Description
|
14
|
+
%th Duration
|
15
|
+
%th Completed
|
16
|
+
%tbody
|
17
|
+
|
18
|
+
:javascript
|
19
|
+
jQuery(function() {
|
20
|
+
new RjmcDatatable(
|
21
|
+
$(".jobs-datatable"),
|
22
|
+
[{data: '0'}, {data: '1'}, {data: '2', orderable: false}, {data: '3'}]);
|
23
|
+
});
|
@@ -0,0 +1,22 @@
|
|
1
|
+
.job-list
|
2
|
+
.list
|
3
|
+
.row
|
4
|
+
.col-sm-10
|
5
|
+
%h2 Failed Jobs
|
6
|
+
.col-sm-2
|
7
|
+
.btn.btn-default.pull-right.dt-reload{ data: { behavior: 'reload' } }
|
8
|
+
%i.fa.fa-refresh
|
9
|
+
%table.table.datatable.jobs-datatable{ style: "width: 100%", data: { source: "#{failed_jobs_url(format: 'json')}" } }
|
10
|
+
%thead
|
11
|
+
%tr
|
12
|
+
%th Class
|
13
|
+
%th Description
|
14
|
+
%th Failed
|
15
|
+
%tbody
|
16
|
+
|
17
|
+
:javascript
|
18
|
+
jQuery(function() {
|
19
|
+
new RjmcDatatable(
|
20
|
+
$(".jobs-datatable"),
|
21
|
+
[{data: '0'}, {data: '1'}, {data: '2'}]);
|
22
|
+
});
|
@@ -0,0 +1,22 @@
|
|
1
|
+
.job-list
|
2
|
+
.list
|
3
|
+
.row
|
4
|
+
.col-sm-10
|
5
|
+
%h2 Paused Jobs
|
6
|
+
.col-sm-2
|
7
|
+
.btn.btn-default.pull-right.dt-reload{ data: { behavior: 'reload' } }
|
8
|
+
%i.fa.fa-refresh
|
9
|
+
%table.table.datatable.jobs-datatable{ style: "width: 100%", data: { source: "#{paused_jobs_url(format: 'json')}" } }
|
10
|
+
%thead
|
11
|
+
%tr
|
12
|
+
%th Class
|
13
|
+
%th Description
|
14
|
+
%th Paused
|
15
|
+
%tbody
|
16
|
+
|
17
|
+
:javascript
|
18
|
+
jQuery(function() {
|
19
|
+
new RjmcDatatable(
|
20
|
+
$(".jobs-datatable"),
|
21
|
+
[{data: '0'}, {data: '1'}, {data: '2'}]);
|
22
|
+
});
|
@@ -0,0 +1,23 @@
|
|
1
|
+
.job-list
|
2
|
+
.list
|
3
|
+
.row
|
4
|
+
.col-sm-10
|
5
|
+
%h2 Queued Jobs
|
6
|
+
.col-sm-2
|
7
|
+
.btn.btn-default.pull-right.dt-reload{ data: { behavior: 'reload' } }
|
8
|
+
%i.fa.fa-refresh
|
9
|
+
%table.table.datatable.jobs-datatable{ style: "width: 100%", data: { source: "#{queued_jobs_url(format: 'json')}" } }
|
10
|
+
%thead
|
11
|
+
%tr
|
12
|
+
%th Class
|
13
|
+
%th Description
|
14
|
+
%th Priority
|
15
|
+
%th Queued For
|
16
|
+
%tbody
|
17
|
+
|
18
|
+
:javascript
|
19
|
+
jQuery(function() {
|
20
|
+
new RjmcDatatable(
|
21
|
+
$(".jobs-datatable"),
|
22
|
+
[{data: '0'}, {data: '1'}, {data: '2'}, {data: '3', orderable: false}]);
|
23
|
+
});
|
@@ -0,0 +1,24 @@
|
|
1
|
+
.job-list
|
2
|
+
.list
|
3
|
+
.row
|
4
|
+
.col-sm-10
|
5
|
+
%h2 Running Jobs
|
6
|
+
.col-sm-2
|
7
|
+
.btn.btn-default.pull-right.dt-reload{ data: { behavior: 'reload' } }
|
8
|
+
%i.fa.fa-refresh
|
9
|
+
%table.table.datatable.jobs-datatable{ style: "width: 100%", data: { source: "#{running_jobs_url(format: 'json')}" } }
|
10
|
+
%thead
|
11
|
+
%tr
|
12
|
+
%th Class
|
13
|
+
%th Description
|
14
|
+
%th Progress
|
15
|
+
%th Priority
|
16
|
+
%th Started
|
17
|
+
%tbody
|
18
|
+
|
19
|
+
:javascript
|
20
|
+
jQuery(function() {
|
21
|
+
new RjmcDatatable(
|
22
|
+
$(".jobs-datatable"),
|
23
|
+
[{data: '0'}, {data: '1'}, {data: '2', orderable: false}, {data: '3'}, {data: '4'}]);
|
24
|
+
});
|
@@ -0,0 +1,23 @@
|
|
1
|
+
.job-list
|
2
|
+
.list
|
3
|
+
.row
|
4
|
+
.col-sm-10
|
5
|
+
%h2 Scheduled Jobs
|
6
|
+
.col-sm-2
|
7
|
+
.btn.btn-default.pull-right.dt-reload{ data: { behavior: 'reload' } }
|
8
|
+
%i.fa.fa-refresh
|
9
|
+
%table.table.datatable.jobs-datatable{ style: "width: 100%", data: { source: "#{scheduled_jobs_url(format: 'json')}" } }
|
10
|
+
%thead
|
11
|
+
%tr
|
12
|
+
%th Class
|
13
|
+
%th Description
|
14
|
+
%th Runs in
|
15
|
+
%th Cron Schedule
|
16
|
+
%tbody
|
17
|
+
|
18
|
+
:javascript
|
19
|
+
jQuery(function() {
|
20
|
+
new RjmcDatatable(
|
21
|
+
$(".jobs-datatable"),
|
22
|
+
[{data: '0'}, {data: '1'}, {data: '2', orderable: false}, {data: '3'}]);
|
23
|
+
});
|
@@ -1,10 +1,7 @@
|
|
1
1
|
.row
|
2
|
-
|
3
|
-
= render partial: 'list', locals: { jobs: @jobs }
|
4
|
-
|
5
|
-
.col-md-8.job-status
|
2
|
+
.col-md-14.col-md-offset-1.job-status
|
6
3
|
#job
|
7
|
-
.lead=
|
4
|
+
.lead= @job.class.name
|
8
5
|
|
9
6
|
.job-state.inline-block
|
10
7
|
.left state
|
@@ -15,7 +12,7 @@
|
|
15
12
|
= form_for(@job, as: :job, url: job_path(@job), html: {method: :patch}) do |f|
|
16
13
|
|
17
14
|
.input-group.priority-group
|
18
|
-
= f.text_field(:priority, class: 'form-control')
|
15
|
+
= f.text_field(:priority, value: @job.priority, class: 'form-control')
|
19
16
|
|
20
17
|
.input-group-btn-vertical
|
21
18
|
%button#increase_priority.btn.btn-default.up{ type: 'button' }
|
@@ -46,8 +43,8 @@
|
|
46
43
|
- if valid_events.include?(:retry)
|
47
44
|
= job_action_link('retry', rocket_job_mission_control.retry_job_path(@job), :patch)
|
48
45
|
|
49
|
-
- if @job.
|
50
|
-
= link_to(
|
46
|
+
- if @job.respond_to?(:input) && @job.input.failed_count > 0
|
47
|
+
= link_to('view errors', job_failures_path(@job), class: 'btn btn-default')
|
51
48
|
|
52
49
|
.clearfix
|
53
50
|
|
@@ -0,0 +1,20 @@
|
|
1
|
+
%ul#lg-menu.nav.hidden-xs
|
2
|
+
%li
|
3
|
+
= link_to(workers_path) do
|
4
|
+
%i.fa.fa-list
|
5
|
+
All
|
6
|
+
- RocketJob::Worker.aasm.states.map { |s| s.name.to_s }.each do |state|
|
7
|
+
%li{class: state}
|
8
|
+
= link_to("#{state}_workers".to_sym) do
|
9
|
+
%i.fa{class: state_icon(state)}
|
10
|
+
= state.to_s.capitalize!
|
11
|
+
= "(#{worker_counts_by_state(state)})"
|
12
|
+
/ tiny only nav
|
13
|
+
%ul#xs-menu.nav.visible-xs
|
14
|
+
%li
|
15
|
+
= link_to(workers_path) do
|
16
|
+
%i.fa.fa-list
|
17
|
+
- RocketJob::Worker.aasm.states.map { |s| s.name.to_s }.each do |state|
|
18
|
+
%li{class: state}
|
19
|
+
= link_to("#{state}_workers".to_sym) do
|
20
|
+
%i.fa{class: state_icon(state)}
|
@@ -1,60 +1,37 @@
|
|
1
1
|
#workers
|
2
|
-
-
|
3
|
-
.
|
4
|
-
.
|
5
|
-
|
6
|
-
%
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
-
|
20
|
-
.
|
21
|
-
.
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
.time
|
39
|
-
%b Started:
|
40
|
-
= "#{RocketJob.seconds_as_duration(Time.now - worker.started_at)} ago"
|
41
|
-
|
42
|
-
.heartbeat
|
43
|
-
%b Last Heartbeat:
|
44
|
-
= "#{RocketJob.seconds_as_duration(Time.now - worker.heartbeat.updated_at)} ago"
|
45
|
-
|
46
|
-
.actions
|
47
|
-
= render partial: 'actions', locals: { worker: worker }
|
48
|
-
|
49
|
-
- else
|
50
|
-
.row
|
51
|
-
.col-md-6.col-md-offset-3
|
52
|
-
.panel.panel-default
|
53
|
-
.panel-body
|
54
|
-
.lead
|
55
|
-
There are currently no workers.
|
56
|
-
You can start a worker with the following command:
|
57
|
-
|
58
|
-
.code-block
|
59
|
-
%pre
|
60
|
-
%code.language-bash bin/rocketjob
|
2
|
+
.worker-list
|
3
|
+
.list
|
4
|
+
.row
|
5
|
+
.col-md-6
|
6
|
+
%h2 Worker Processes
|
7
|
+
.col-md-6
|
8
|
+
.col-sm-10
|
9
|
+
.worker-collection-actions
|
10
|
+
- if @workers.present?
|
11
|
+
%ol
|
12
|
+
.btn-group
|
13
|
+
- [:stop_all, :pause_all, :resume_all, :destroy_zombies].each do |action|
|
14
|
+
= link_to("#{action.to_s.humanize.capitalize}",
|
15
|
+
rocket_job_mission_control.update_all_workers_path(worker_action: action),
|
16
|
+
method: :patch,
|
17
|
+
data: { confirm: t(:confirm, scope: [:worker, :update_all], action: action.to_s.singularize.humanize.downcase) },
|
18
|
+
class: 'btn btn-default')
|
19
|
+
.col-sm-2.pull-right
|
20
|
+
.btn.btn-default.pull-right.dt-reload{ data: { behavior: 'reload' } }
|
21
|
+
%i.fa.fa-refresh
|
22
|
+
%table.table.datatable.workers-datatable{ style: "width: 100%", data: { source: "#{workers_url(format: 'json')}" } }
|
23
|
+
%thead
|
24
|
+
%tr
|
25
|
+
%th Hostname : PID
|
26
|
+
%th Workers (Current/Max)
|
27
|
+
%th Started
|
28
|
+
%th Heartbeat
|
29
|
+
%th Actions
|
30
|
+
%tbody
|
31
|
+
|
32
|
+
:javascript
|
33
|
+
jQuery(function() {
|
34
|
+
new RjmcDatatable(
|
35
|
+
$('.workers-datatable'),
|
36
|
+
[{data: '0'}, {data: '1', orderable: false}, {data: '2', orderable: false}, {data: '3', orderable: false}, {data: '4', orderable: false}]);
|
37
|
+
});
|
@@ -0,0 +1,37 @@
|
|
1
|
+
#workers
|
2
|
+
.worker-list
|
3
|
+
.list
|
4
|
+
.row
|
5
|
+
.col-md-6
|
6
|
+
%h2 Paused Worker Processes
|
7
|
+
.col-md-6
|
8
|
+
.col-sm-10
|
9
|
+
.worker-collection-actions
|
10
|
+
- if @workers.present?
|
11
|
+
%ol.pull-right
|
12
|
+
.btn-group
|
13
|
+
- [:stop_all, :resume_all, :destroy_zombies].each do |action|
|
14
|
+
= link_to("#{action.to_s.humanize.capitalize}",
|
15
|
+
rocket_job_mission_control.update_all_workers_path(worker_action: action),
|
16
|
+
method: :patch,
|
17
|
+
data: { confirm: t(:confirm, scope: [:worker, :update_all], action: action.to_s.singularize.humanize.downcase) },
|
18
|
+
class: 'btn btn-default')
|
19
|
+
.col-sm-2.pull-right
|
20
|
+
.btn.btn-default.pull-right.dt-reload{ data: { behavior: 'reload' } }
|
21
|
+
%i.fa.fa-refresh
|
22
|
+
%table.table.datatable.workers-datatable{ style: "width: 100%", data: { source: "#{paused_workers_url(format: 'json')}" } }
|
23
|
+
%thead
|
24
|
+
%tr
|
25
|
+
%th Hostname : PID
|
26
|
+
%th Workers (Current/Max)
|
27
|
+
%th Started
|
28
|
+
%th Heartbeat
|
29
|
+
%th Actions
|
30
|
+
%tbody
|
31
|
+
|
32
|
+
:javascript
|
33
|
+
jQuery(function() {
|
34
|
+
new RjmcDatatable(
|
35
|
+
$('.workers-datatable'),
|
36
|
+
[{data: '0'}, {data: '1', orderable: false}, {data: '2', orderable: false}, {data: '3', orderable: false}, {data: '4', orderable: false}]);
|
37
|
+
});
|