[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