X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=perl%2FAmanda%2FReport%2Fpostscript.pm;h=2a8f589fb06e9211e369755877267366d206b78e;hb=b116e9366c7b2ea2c2eb53b0a13df4090e176235;hp=46b6ad20fee84e69e6cd2806738edd643f46de3b;hpb=fd48f3e498442f0cbff5f3606c7c403d0566150e;p=debian%2Famanda diff --git a/perl/Amanda/Report/postscript.pm b/perl/Amanda/Report/postscript.pm index 46b6ad2..2a8f589 100644 --- a/perl/Amanda/Report/postscript.pm +++ b/perl/Amanda/Report/postscript.pm @@ -126,52 +126,67 @@ sub _write_report_tape my ($host, $disk) = @$dle; my $dle_info = $self->{'report'}->get_dle_info($host, $disk); - # run once for each try for this DLE - foreach my $try (@{$dle_info->{'tries'}}) { - - next unless exists $try->{taper}; - my $taper = $try->{taper}; - - my $parts = $taper->{parts}; - next unless @$parts > 0; - - my $first_part = $parts->[0]; - next unless $first_part->{label} eq $label; - - my $filenum = $first_part->{file}; - - # sum the part sizes on this label to get the outsize. Note that - # the postscript output does not contain a row for each part, but - # for each part.. - my $outsize = 0; - for my $part (@$parts) { - next unless $part->{'label'} eq $label; - $outsize += $part->{'kb'}; - } - - # Get origsize for this try. - my $origsize = 0; - my $level = -1; - - # TODO: this is complex and should probably be in a parent-class method - if (exists $try->{dumper} and ($try->{dumper}{status} ne 'fail')) { - my $try_dumper = $try->{dumper}; - $level = $try_dumper->{level}; - $origsize = $try_dumper->{orig_kb}; - } else { # we already know a taper run exists in this try - $level = $taper->{level}; - $origsize = $taper->{orig_kb} if $taper->{orig_kb}; - } - - $total_outsize += $outsize; - $total_origsize += $origsize; - - if ($outsize != $origsize) { - $comp_outsize += $outsize; - $comp_origsize += $origsize; + my $alldumps = $dle_info->{'dumps'}; + + while( my ($timestamp, $tries) = each %$alldumps ) { + # run once for each try for this DLE + foreach my $try (@$tries) { + + next unless exists $try->{taper}; + my $taper = $try->{taper}; + + my $parts = $taper->{parts}; + next unless @$parts > 0; + + my $first_part = $parts->[0]; + my $dlename = undef; + if ($first_part->{label} eq $label) { + $dlename = $disk; + } else { #find if one part is on the volume + foreach $parts (@$parts) { + if ($parts->{label} eq $label) { + $dlename = '- ' . $disk; + last; + } + } + next if !defined $dlename; + } + + my $filenum = $first_part->{file}; + + # sum the part sizes on this label to get the outsize. Note that + # the postscript output does not contain a row for each part, but + # for each part.. + my $outsize = 0; + for my $part (@$parts) { + next unless $part->{'label'} eq $label; + $outsize += $part->{'kb'}; + } + + # Get origsize for this try. + my $origsize = 0; + my $level = -1; + + # TODO: this is complex and should probably be in a parent-class method + if (exists $try->{dumper} and ($try->{dumper}{status} ne 'fail')) { + my $try_dumper = $try->{dumper}; + $level = $try_dumper->{level}; + $origsize = $try_dumper->{orig_kb}; + } else { # we already know a taper run exists in this try + $level = $taper->{level}; + $origsize = $taper->{orig_kb} if $taper->{orig_kb}; + } + + $total_outsize += $outsize; + $total_origsize += $origsize; + + if ($outsize != $origsize) { + $comp_outsize += $outsize; + $comp_origsize += $origsize; + } + + push @first_parts, [$host, $dlename, $level, $filenum, $origsize, $outsize]; } - - push @first_parts, [$host, $disk, $level, $filenum, $origsize, $outsize]; } } # count filemarks in the tapeused assessment