[pve-devel] [PATCH manager 2/2] Fix #1048: vzdump: include job-* hook logs in email
Fabian Grünbichler
f.gruenbichler at proxmox.com
Thu Jul 7 08:34:48 CEST 2016
this is missing the HTML mail part and there is a newline before the
"post" part..
also, the layout is kinda wonky, but not sure how/whether to fix that:
Jul 07 08:25:01 INFO: HOOK: job-start
Jul 07 08:25:01 INFO: HOOK-ENV: dumpdir=/backups/dump;storeid=backups
100: Jul 07 08:25:01 INFO: Starting Backup of VM 100 (lxc)
----snip----
2000: Jul 07 08:27:10 INFO: HOOK-ENV: vmtype=qemu;dumpdir=/backups/dump;storeid=backups;hostname=sid;tarfile=/backups/dump/vzdump-qemu-2000-2016_07_07-08_25_02.vma;logfile=/backups/dump/vzdump-qemu-2000-2016_07_07-08_25_02.log
2000: Jul 07 08:27:10 INFO: Finished Backup of VM 2000 (00:02:08)
Jul 07 08:27:10 INFO: HOOK: job-end
Jul 07 08:27:10 INFO: HOOK-ENV: dumpdir=/backups/dump;storeid=backups
Jul 07 08:27:10 INFO: Backup job finished successfully
note: we also don't align the VM IDs which can be differently long
On Wed, Jul 06, 2016 at 01:52:33PM +0200, Wolfgang Bumiller wrote:
> ---
> PVE/VZDump.pm | 27 +++++++++++++++++++--------
> 1 file changed, 19 insertions(+), 8 deletions(-)
>
> diff --git a/PVE/VZDump.pm b/PVE/VZDump.pm
> index 45baca6..8216ce4 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 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";
> @@ -1110,36 +1112,45 @@ 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);
> + debugmsg ('err', "Backup job failed - $err", $job_end_fd, 1);
> } else {
> if ($errcount) {
> - debugmsg ('info', "Backup job finished with errors", undef, 1);
> + debugmsg ('info', "Backup job finished with errors", $job_end_fd, 1);
> } else {
> - debugmsg ('info', "Backup job finished successfully", undef, 1);
> + debugmsg ('info', "Backup job finished successfully", $job_end_fd, 1);
> }
> }
>
> + 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