| Helios-Panoptes documentation | Contained in the Helios-Panoptes distribution. |
Helios::Panoptes::JobLog - Helios::Panoptes extension to handle the Job Log view
Helios::Panoptes::JobLog handles the display for the Panoptes Job Log run mode.
These methods define code that back the particular application pages.
The job_log() method handles the display of the Job Log page.
Helios::Panoptes, Helios::Service, helios.pl, <CGI::Application>, HTML::Template
Andrew Johnson, <lajandy at cpan dotorg> Ben Kucenski, <bkucenski at ittoolbox dotcom>
Copyright (C) 2008-9 by CEB Toolbox, Inc.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.0 or, at your option, any later version of Perl 5 you may have available.
This software comes with no warranty of any kind.
| Helios-Panoptes documentation | Contained in the Helios-Panoptes distribution. |
package Helios::Panoptes::JobLog; use 5.008000; use strict; use warnings; use base qw(CGI::Application); use Data::Dumper; use Helios::Panoptes::Helper; use HTML::Template::Expr; use Error qw(:try); our $VERSION = '1.44';
sub setup { my $self = shift; $self->start_mode('job_log'); $self->run_modes( job_log => 'job_log', ); } sub teardown { my $self = shift; }
sub job_log { my $self = shift; my $q = $self->query(); my $j = 0; my $job_id = -1; my $sql = ""; my $date_parts; my @colors = qw[EFEFEF EAEAEA]; my @funcmap = Helios::Panoptes::Helper::option_function_map(); my %priority = Helios::Panoptes::Helper::option_priority(); my $function = 0; if ( defined($q->param('jobid')) ) { $job_id = $q->param('jobid'); } return "" if $job_id == -1; $sql = " SELECT * FROM job WHERE jobid = ? "; my $job_details = Helios::Panoptes::Helper::db_fetch_row($sql,$job_id); if($job_details->{run_after}) { $date_parts = Helios::Panoptes::Helper::splitEpochDate($job_details->{run_after}); $job_details->{run_after} = $date_parts->{YYYY}.'-'.$date_parts->{MM}.'-'.$date_parts->{DD}.' '.$date_parts->{HH24}.':'.$date_parts->{MI}.':'.$date_parts->{SS}; } else { $job_details->{run_after} = ' '; } if($job_details->{insert_time}) { $date_parts = Helios::Panoptes::Helper::splitEpochDate($job_details->{insert_time}); $job_details->{insert_time} = $date_parts->{YYYY}.'-'.$date_parts->{MM}.'-'.$date_parts->{DD}.' '.$date_parts->{HH24}.':'.$date_parts->{MI}.':'.$date_parts->{SS}; } else { $job_details->{insert_time} = ' '; } if($job_details->{grabbed_until}) { $date_parts = Helios::Panoptes::Helper::splitEpochDate($job_details->{grabbed_until}); $job_details->{grabbed_until} = $date_parts->{YYYY}.'-'.$date_parts->{MM}.'-'.$date_parts->{DD}.' '.$date_parts->{HH24}.':'.$date_parts->{MI}.':'.$date_parts->{SS}; } else { $job_details->{grabbed_until} = ' '; } $job_details->{priority} = $priority{$job_details->{priority}} || $job_details->{priority}; $sql = " SELECT * FROM error WHERE jobid = ? "; my @job_error = Helios::Panoptes::Helper::db_fetch_all($sql,$job_id); $j = 1; foreach(@job_error) { $date_parts = Helios::Panoptes::Helper::splitEpochDate($_->{error_time}); $_->{error_time} = $date_parts->{YYYY}.'-'.$date_parts->{MM}.'-'.$date_parts->{DD}.' '.$date_parts->{HH24}.':'.$date_parts->{MI}.':'.$date_parts->{SS}; $_->{color} = $colors[$j]; $j=1-$j; } $sql = " SELECT * FROM helios_job_history_tb WHERE jobid = ? ORDER BY complete_time DESC "; my @job_history = Helios::Panoptes::Helper::db_fetch_all($sql,$job_id); $j = 1; foreach(@job_history) { if($_->{complete_time}) { $date_parts = Helios::Panoptes::Helper::splitEpochDate($_->{complete_time}); $_->{complete_time} = $date_parts->{YYYY}.'-'.$date_parts->{MM}.'-'.$date_parts->{DD}.' '.$date_parts->{HH24}.':'.$date_parts->{MI}.':'.$date_parts->{SS}; } else { $_->{complete_time} = ' '; } if($_->{grabbed_until}) { $date_parts = Helios::Panoptes::Helper::splitEpochDate($_->{grabbed_until}); $_->{grabbed_until} = $date_parts->{YYYY}.'-'.$date_parts->{MM}.'-'.$date_parts->{DD}.' '.$date_parts->{HH24}.':'.$date_parts->{MI}.':'.$date_parts->{SS}; } else { $_->{grabbed_until} = ' '; } if($_->{run_after}) { $date_parts = Helios::Panoptes::Helper::splitEpochDate($_->{run_after}); $_->{run_after} = $date_parts->{YYYY}.'-'.$date_parts->{MM}.'-'.$date_parts->{DD}.' '.$date_parts->{HH24}.':'.$date_parts->{MI}.':'.$date_parts->{SS}; } else { $_->{run_after} = ' '; } if($_->{insert_time}) { $date_parts = Helios::Panoptes::Helper::splitEpochDate($_->{insert_time}); $_->{insert_time} = $date_parts->{YYYY}.'-'.$date_parts->{MM}.'-'.$date_parts->{DD}.' '.$date_parts->{HH24}.':'.$date_parts->{MI}.':'.$date_parts->{SS}; } else { $_->{insert_time} = ' '; } $_->{priority} = $priority{$_->{priority}} || $_->{priority}; $_->{color} = $colors[$j]; $j=1-$j; } $sql = " SELECT * FROM helios_log_tb WHERE jobid = ? ORDER BY log_time DESC "; my @logs = Helios::Panoptes::Helper::db_fetch_all($sql,$job_id); # http://search.cpan.org/~saper/Sys-Syslog-0.24/Syslog.pm $j = 1; foreach(@logs) { if($_->{log_time}) { $date_parts = Helios::Panoptes::Helper::splitEpochDate($_->{log_time}); $_->{created_at} = $date_parts->{YYYY}.'-'.$date_parts->{MM}.'-'.$date_parts->{DD}.' '.$date_parts->{HH24}.':'.$date_parts->{MI}.':'.$date_parts->{SS}; } else { $_->{created_at} = ' '; } $_->{color} = $colors[$j]; $_->{priority} = $priority{$_->{priority}} || $_->{priority}; $j=1-$j; } $job_details = $job_history[0] if(!$job_details->{arg}); my $func_details = Helios::Panoptes::Helper::db_fetch_row("SELECT funcname FROM funcmap WHERE funcid = ?", $job_details->{funcid}); for (my $i = 0; $i < @job_history; $i++) { $job_history[$i]->{funcname} = $func_details->{funcname}; } for (my $i = 0; $i < @job_error; $i++) { $job_error[$i]->{funcname} = $func_details->{funcname}; } # this handles <params> w/newlines $job_details->{arg} =~ s/^.*?\</\</s; $job_details->{arg} =~ s/>/\>\;/g; $job_details->{arg} =~ s/</\<\;/g; my $tmpl = HTML::Template::Expr->new(filename => 'tmpl/job_log.html', die_on_bad_params => 0); $tmpl->param(TITLE=>"Helios - Job Log " . $job_id); $tmpl->param(JOBID=>$job_id); $tmpl->param(LOG_ENTRIES => \@logs); $tmpl->param(ERROR_ENTRIES => \@job_error); $tmpl->param(HISTORY_ENTRIES => \@job_history); $tmpl->param(JOB_ARG => $job_details->{arg}); $tmpl->param(JOB_PRIORITY => $job_details->{priority}); $tmpl->param(JOB_RUN_AFTER => $job_details->{run_after}); $tmpl->param(JOB_COALESCE => $job_details->{coalesce}); $tmpl->param(JOB_FUNCTION_NAME => $func_details->{funcname}); $tmpl->param(JOB_UNIQUE_KEY => $job_details->{uniqkey}); $tmpl->param(JOB_INSERT_TIME => $job_details->{insert_time}); $tmpl->param(JOB_GRABBED_UNTIL => $job_details->{grabbed_until}); return $tmpl->output(); } 1; __END__