diff --git a/Web/lib/MJB/Web/Controller/Admin.pm b/Web/lib/MJB/Web/Controller/Admin.pm index 5a00127..1016f63 100644 --- a/Web/lib/MJB/Web/Controller/Admin.pm +++ b/Web/lib/MJB/Web/Controller/Admin.pm @@ -188,7 +188,10 @@ sub do_domain_remove ( $c ) { } sub do_update_ssl ( $c ) { - my $id = $c->minion->enqueue( 'update_ssl_certs', [ ], { queue => 'certbot' } ); + my $id = $c->minion->enqueue( 'update_ssl_certs', [ ], { + queue => 'certbot', + notes => { '_bid_0' => 1 }, + }); $c->db->admin_jobs->create({ minion_job_id => $id }); $c->flash( confirmation => "Scheduled job to update SSL certs." ); diff --git a/Web/templates/_base/jobs.html.ep b/Web/templates/_base/jobs.html.ep new file mode 100644 index 0000000..97964ea --- /dev/null +++ b/Web/templates/_base/jobs.html.ep @@ -0,0 +1,30 @@ + +%# Job Panel % +% my $index = 0; +% foreach my $build ( @{$jobs} ) { + % $index++; + % if ( my $build_job = $c->minion->job( $build->minion_job_id ) ) { + % my $job = $build_job->info; + + % if ( $job->{state} eq 'finished' ) { + %= include '_base/jobs/finished', job => $job, index => $index, date => $build->created_at->strftime( "%F %T" ) + + + % } elsif ( $job->{state} eq 'inactive' ) { + %= include '_base/jobs/inactive', job => $job, date => $build->created_at->strftime( "%T %F" ) + + % } elsif ( $job->{state} eq 'failed' ) { + %= include '_base/jobs/failed', job => $job, index => $index, date => $build->created_at->strftime( "%F %T" ) + + + % } elsif ( $job->{state} eq 'active' ) { + %= include '_base/jobs/active', job => $job, index => $index, date => $build->created_at->strftime( "%F %T" ) + + % } else { + Job in unknown state: <%= $build->{job_id} %> + %= $job->{state} + % } + % } else { + Job not found: <%= $build->{job_id} %> + % } +% } diff --git a/Web/templates/_base/jobs/_milestones/update_ssl_certs.html.ep b/Web/templates/_base/jobs/_milestones/update_ssl_certs.html.ep new file mode 100644 index 0000000..6a9527f --- /dev/null +++ b/Web/templates/_base/jobs/_milestones/update_ssl_certs.html.ep @@ -0,0 +1,3 @@ +%= include '_base/jobs/milestone', milestone => { is_complete => $job->{notes}->{is_renew_done}, text => 'Renewing SSL certificates with certbot' }; + +%= include '_base/jobs/milestone', milestone => { is_complete => $job->{notes}->{is_sync_done}, text => 'Syncing SSL certificates with web servers' }; diff --git a/Web/templates/_base/jobs/active.html.ep b/Web/templates/_base/jobs/active.html.ep new file mode 100644 index 0000000..1f1ecc7 --- /dev/null +++ b/Web/templates/_base/jobs/active.html.ep @@ -0,0 +1,25 @@ +
+
+
+ Building... +
+ + Building job <%= $job->{id} %>/<%= $job->{task} %>... (Queued: <%= $date %>) + +
+
+ + %= include '_base/jobs/_milestones/' . $job->{notes}->{_mds_template}, job => $job + +
+ +
+
+
+                % for my $line ( @{$job->{notes}{logs}} ) {
+                    <%= "$line\n" =%>
+                % }
+            
+
+
+
diff --git a/Web/templates/_base/jobs/failed.html.ep b/Web/templates/_base/jobs/failed.html.ep new file mode 100644 index 0000000..d9c732c --- /dev/null +++ b/Web/templates/_base/jobs/failed.html.ep @@ -0,0 +1,24 @@ + +
+
+ %= include '_svg/failed' + Job <%= $job->{id} %>/<%= $job->{task} %> failed. (Queued: <%= $date %>) + +
+
+ + %= include '_base/jobs/_milestones/' . $job->{notes}->{_mds_template}, job => $job + +
+ + % if ( ! ref $job->{result} ) { +

System Error: <%= $job->{result} %>

+ % } else { +

Error: <%= $job->{result}{error} %>

+ % } + + %= include '_base/jobs/view_logs', job => $job +
+
diff --git a/Web/templates/_base/jobs/finished.html.ep b/Web/templates/_base/jobs/finished.html.ep new file mode 100644 index 0000000..30a44f1 --- /dev/null +++ b/Web/templates/_base/jobs/finished.html.ep @@ -0,0 +1,21 @@ + +
+
+ %= include '_svg/checkmark' + + Job <%= $job->{id} %>/<%= $job->{task} %> completed successfully. (Queued: <%= $date %>) + + + +
+
+ %= include '_base/jobs/_milestones/' . $job->{notes}->{_mds_template}, job => $job + +
+ + %= include '_base/jobs/view_logs', job => $job + +
+
diff --git a/Web/templates/_base/jobs/inactive.html.ep b/Web/templates/_base/jobs/inactive.html.ep new file mode 100644 index 0000000..0d8fe0f --- /dev/null +++ b/Web/templates/_base/jobs/inactive.html.ep @@ -0,0 +1,9 @@ + +
+
+
+ Waiting... +
+ Job <%= $job->{id} %>/<%= $job->{task} %> pending build. (Queued: <%= $date %>) +
+
diff --git a/Web/templates/_base/jobs/milestone.html.ep b/Web/templates/_base/jobs/milestone.html.ep new file mode 100644 index 0000000..1def528 --- /dev/null +++ b/Web/templates/_base/jobs/milestone.html.ep @@ -0,0 +1,15 @@ + +
+
+% if ( $milestone->{is_complete} && $milestone->{is_complete} == 1 ) { + + %= include '_svg/checkmark' + +% } else { + %= include '_svg/loading' +% } + <%= $milestone->{text} %> +
+
+ + diff --git a/Web/templates/_base/jobs/view_logs.html.ep b/Web/templates/_base/jobs/view_logs.html.ep new file mode 100644 index 0000000..e50607b --- /dev/null +++ b/Web/templates/_base/jobs/view_logs.html.ep @@ -0,0 +1,11 @@ + + + +
+
+
+        % for my $line ( @{$job->{notes}{logs}} ) {
+            <%= "$line\n" =%>
+        % }
+    
+
diff --git a/Web/templates/admin/jobs.html.ep b/Web/templates/admin/jobs.html.ep index b46f940..a070987 100644 --- a/Web/templates/admin/jobs.html.ep +++ b/Web/templates/admin/jobs.html.ep @@ -1,152 +1,12 @@ % layout 'standard', title => 'Dashboard', sb_active => 'admin'; -%# if ( $c->minion->jobs({ states => [ 'inactive', 'active' ], notes => [ '_bid_' . $blog->id ] } )->total >= 1 ) { - %# $c->stash->{http_refresh} = 5; -%# } +% if ( $c->minion->jobs({ states => [ 'inactive', 'active' ], notes => [ '_bid_0' ] } )->total >= 1 ) { + % $c->stash->{http_refresh} = 5; +% } %= include 'admin/_nav', page => 'jobs' %= include '_base/status_window'; -% if ( $c->stash->{success} ) { - -% } - -% if ( $c->stash->{errors} ) { - -% } - -%# Job Panel % -% my $index = 0; -% foreach my $build ( $c->db->admin_jobs->all ) { - % $index++; - % if ( my $build_job = $c->minion->job( $build->minion_job_id ) ) { - % my $job = $build_job->info; - - % if ( $job->{state} eq 'finished' ) { -
-
- %= include '_svg/checkmark' - Build job <%= $build->{id} %>/<%= $job->{task} %> completed successfully. (Queued: <%= $build->{date} %>) - -
-
- - %= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_deploy_complete}, text => 'Deploy to Webserver' }; - - %= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_build_complete}, text => 'Build Website' }; - - %= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_clone_complete}, text => 'Clone Repo & Check Settings' }; - -
- - - -
-
-
-                            % for my $line ( @{$job->{notes}{logs}} ) {
-                                <%= "$line\n" =%>
-                            % }
-                        
-
-
-
- % } elsif ( $job->{state} eq 'inactive' ) { -
-
-
- Waiting... -
- Build <%= $build->{id} %> pending build. (Queued: <%= $build->{date} %>) -
-
- - % } elsif ( $job->{state} eq 'failed' ) { -
-
- %= include '_svg/failed' - Build <%= $build->{id} %> failed. (Queued: <%= $build->{date} %>) - -
-
- - %= include 'dashboard/_website/milestone', milestone => { is_complete => $job->{notes}->{is_deploy_complete}, text => 'Deploy to Webserver' }; - - %= include 'dashboard/_website/milestone', milestone => { is_complete => $job->{notes}->{is_build_complete}, text => 'Build Website' }; - - %= include 'dashboard/_website/milestone', milestone => { is_complete => $job->{notes}->{is_clone_complete}, text => 'Clone Repo & Check Settings' }; +%= include '_base/jobs', jobs => [ $c->db->admin_jobs( { }, { order_by => { -desc => 'created_at' } } )->all ] -
- - % if ( ! ref $job->{result} ) { -

System Error: <%= $job->{result} %>

- % } else { -

Error: <%= $job->{result}{error} %>

- % } - - - -
-
-
-                            % for my $line ( @{$job->{notes}{logs}} ) {
-                                <%= "$line\n" =%>
-                            % }
-                        
-
-
-
- - % } elsif ( $job->{state} eq 'active' ) { -
-
-
- Building... -
- - Building job <%= $build->{id} %>/<%= $job->{task} %>... (Queued: <%= $build->{date} %>) - -
-
- - %= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_deploy_complete}, text => 'Deploy to Webserver' }; - - %= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_build_complete}, text => 'Build Website' }; - - %= include 'dashboard/_milestone', milestone => { is_complete => $job->{notes}->{is_clone_complete}, text => 'Clone Repo & Check Settings' }; - -
- -
-
-
-                            % for my $line ( @{$job->{notes}{logs}} ) {
-                                <%= "$line\n" =%>
-                            % }
-                        
-
-
-
- - % } else { - Job in unknown state: <%= $build->{job_id} %> - %= $job->{state} - % } - % } else { - Job not found: <%= $build->{job_id} %> - % } -% }