[pve-devel] [PATCH v2 manager 2/2] Fix #1048: vzdump: include job-* hook logs in email
Fabian Grünbichler
f.gruenbichler at proxmox.com
Thu Jul 7 11:14:33 CEST 2016
applied
On Thu, Jul 07, 2016 at 10:22:25AM +0200, Wolfgang Bumiller wrote:
> ---
> Changes since v1:
> * Added html output.
> * More consistent newlines: added one after the job-start hook
> output, since the extra one before the job-end one was intended
> as there's an empty line between each VM's output, too.
> * Not including the 'backup job finished/failed' line in the
> job-end output (as it's already clear from the subject line).
> PVE/VZDump.pm | 23 ++++++++++++++++++-----
> 1 file changed, 18 insertions(+), 5 deletions(-)
>
> diff --git a/PVE/VZDump.pm b/PVE/VZDump.pm
> index 45baca6..dc138bc 100644
> --- a/PVE/VZDump.pm
> +++ b/PVE/VZDump.pm
> @@ -363,7 +363,7 @@ sub read_vzdump_defaults {
> }
>
> sub sendmail {
> - my ($self, $tasklist, $totaltime, $err) = @_;
> + my ($self, $tasklist, $totaltime, $err, $detail_pre, $detail_post) = @_;
>
> my $opts = $self->{opts};
>
> @@ -426,6 +426,7 @@ sub sendmail {
> $text .= "Detailed backup logs:\n\n";
> $text .= "$cmdline\n\n";
>
> + $text .= $detail_pre . "\n" if defined($detail_pre);
> foreach my $task (@$tasklist) {
> my $vmid = $task->{vmid};
> my $log = $task->{tmplog};
> @@ -438,6 +439,7 @@ sub sendmail {
> close (TMP);
> $text .= "\n";
> }
> + $text .= $detail_post if defined($detail_post);
>
> # html part
> my $html = "<html><body>\n";
> @@ -475,6 +477,7 @@ sub sendmail {
> $html .= "<pre>\n";
> $html .= escape_html($cmdline) . "\n\n";
>
> + $html .= escape_html($detail_pre) . "\n" if defined($detail_pre);
> foreach my $task (@$tasklist) {
> my $vmid = $task->{vmid};
> my $log = $task->{tmplog};
> @@ -494,6 +497,7 @@ sub sendmail {
> close (TMP);
> $html .= "\n";
> }
> + $html .= escape_html($detail_post) if defined($detail_post);
> $html .= "</pre></body></html>\n";
> # end html part
>
> @@ -1110,22 +1114,28 @@ sub exec_backup {
> }
> }
>
> + # Use in-memory files for the outer hook logs to pass them to sendmail.
> + my $job_start_log = '';
> + my $job_end_log = '';
> + open my $job_start_fd, '>', \$job_start_log;
> + open my $job_end_fd, '>', \$job_end_log;
> +
> my $starttime = time();
> my $errcount = 0;
> eval {
>
> - $self->run_hook_script ('job-start');
> + $self->run_hook_script ('job-start', undef, $job_start_fd);
>
> foreach my $task (@$tasklist) {
> $self->exec_backup_task ($task);
> $errcount += 1 if $task->{state} ne 'ok';
> }
>
> - $self->run_hook_script ('job-end');
> + $self->run_hook_script ('job-end', undef, $job_end_fd);
> };
> my $err = $@;
>
> - $self->run_hook_script ('job-abort') if $err;
> + $self->run_hook_script ('job-abort', undef, $job_end_fd) if $err;
>
> if ($err) {
> debugmsg ('err', "Backup job failed - $err", undef, 1);
> @@ -1137,9 +1147,12 @@ sub exec_backup {
> }
> }
>
> + close $job_start_fd;
> + close $job_end_fd;
> +
> my $totaltime = time() - $starttime;
>
> - eval { $self->sendmail ($tasklist, $totaltime); };
> + eval { $self->sendmail ($tasklist, $totaltime, undef, $job_start_log, $job_end_log); };
> debugmsg ('err', $@) if $@;
>
> die $err if $err;
> --
> 2.1.4
>
>
> _______________________________________________
> pve-devel mailing list
> pve-devel at pve.proxmox.com
> http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
>
More information about the pve-devel
mailing list